- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SQL Server 数据库基本操作语句总结由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
代码如下
--sql基本操作 。
。
--创建数据库 。
create database Studets 。
--创建表 。
create table student ( sno char(5), sname char(20), ssex char(2), sage smallint, sdept char(15) ) 。
create table course ( cno char(3), cname char(30), cpno char(3), ccredit smallint ) 。
create table sc ( sno char(5), cno char(3), grade int ) 。
--查看表信息 。
select * from student select sno as 学号 from student select * from course select * from sc 。
--修改表 。
--插入列 。
alter table student add scome datetime 。
--修改列的字段类型 alter table student alter column scome char(50) 。
--删除 --删除列 。
alter table student drop column scome 。
--删除表 drop table student drop table course drop table sc 。
--完整性约束实现 。
--sno 非空唯一,ssex检查约束, sage默认大小 。
create table student ( sno char(5) not null unique, sname char(20), sex char(2), sage smallint default 20, sdept char(15), constraint sex check(sex in('男','女')), ) 。
--删除表的约束 alter table student drop constraint ssex 。
--添加字段约束 alter table student add constraint ssex check(sex in('男','女')) 。
--添加主键约束 alter table student add constraint PK_SNO primary key(sno) create table course ( cno char(3) not null unique, cname char(30), cpno char(3), ccredit smallint ) 。
--关联表主键已经存在,可以如下操作添加主键和外键约束 。
alter table course add constraint PK_CNO primary key(cno), constraint FK_CPNO foreign key(cpno) REFERENCES sc(cno) 。
create table sc 。
( 。
sno char(5) foreign key references student(sno).
cno char(3) foreign key references course(cno).
grade int.
constraint PK_SC primary key(sno,cno) 。
) 。
ALTER TABLE [dbo].[sc] DROP CONSTRAINT [FK__sc__sno__0F975522] 。
ALTER TABLE [dbo].[sc] DROP CONSTRAINT [PK_SC] 。
ALTER TABLE [dbo].[sc] DROP CONSTRAINT [PK_SC] 。
--创建sc后,通过如下修改主外键 。
alter table sc add constraint PK_SC primary key(sno,cno).
constraint FK_SNO foreign key(sno) references student(sno).
constraint FK_CNO foreign key(cno) references course(cno) 。
--创建索引.
。
。
分为聚簇索引(clustered物理顺序)和非聚簇索引(nonclustered逻辑顺序,可多个) 。
。
复制代码代码如下
。
--not null约束字段时候。会创建一个系统内置的约束键值,并且这种非空判断,通过索引查询实现 --的,索引默认创建一个系统索引 。
create unique index STUsno 。
on student(sno) 。
create unique index COUcno 。
on course(cno) 。
create unique index SCno 。
on sc(sno asc,cno desc) 。
drop index SCno on sc 。
--显示表的数据和索引的碎块信息 DBCC SHOWCONTIG 。
--插入数据 select * from student 。
alter table student alter column sno char(10) 。
insert into student values('10021','张三','男',20,'计科系') 。
insert into student values('10022','王朝','女',18,'软件') 。
insert into student values('10023','朱元璋','男',20,'管理') 。
insert into student values('10024','刘彻','男',18,'军事') 。
insert into student values('10025','刘表','男',20,'商学系') 。
insert into student values('10026','白居易','男',19,'文法') 。
insert into student values('10027','李清照','女',24,'文法') 。
select * from course insert into course values('001','数据库','005',4) 。
insert into course values('002','高等数学','',2) 。
insert into course values('003','信息系统','001',4) 。
insert into course values('004','操作系统','006',2) 。
insert into course values('005','数据结构','007',3) 。
insert into course values('006','数据处理','',2) 。
insert into course values('007','C语言','006',5) 。
select * from sc insert into sc values('10021','002',100) 。
insert into sc values('10021','001',88) 。
insert into sc values('10021','006',100) 。
insert into sc values('10021','007',68) 。
insert into sc values('10022','002',100) 。
insert into sc values('10023','005',30) 。
insert into sc values('10024','002',100) 。
insert into sc values('10024','006',56) 。
select * from student --查询操作 。
--查询 select * from student select * from course select * from sc 。
--去掉重复行 select distinct sno from sc 。
--格式化查询 。
select sname as '姓名',2013-sage as '出生日期' from student 。
select sname,'出生日期',2013-sage from student 。
select 姓名=sname,出生日期=2013-sage from student 。
--条件查询 。
select * from course where ccredit>3 。
select * from course where ccredit between 2 and 5 。
select * from course where ccredit> 2 and ccredit<5 。
select * from course where ccredit in(2) 。
select * from course where ccredit not in(2) 。
--匹配查询 。
select * from student where sname like '刘__' 。
select * from student where sname like '_表__' 。
select * from student where sname like '%表%' 。
--算术元算查询 。
select grade*(1+0.2) as 总成绩,grade/(10) as 绩点 from sc 。
--分组函数查询 。
select COUNT(*) as 总人数 from student 。
select COUNT(distinct sno) as '选修的总人数' from sc 。
select AVG(grade) as '平均成绩' from sc where sno='10021' 。
select MAX(grade) as 'MAX成绩' from sc where sno='10021' 。
select MIN(grade) as 'MIN成绩' from sc where sno='10021' 。
select SUM(grade) as '总成绩' from sc where sno='10021' 。
select SUM(grade)/COUNT(grade) as '平均成绩' from sc where sno='10021' 。
select SUM(grade) as '总成绩' from sc group by sno having sum(grade)>100 - 。
-连接查询、 。
--等值连接 。
select distinct student.*,sc.* from student,sc where student.sno=sc.sno 。
--自身连接 。
select distinct A.*,B.* from student A,sc B where A.sno=B.sno 。
select B.sname as '同一个系' from student A,student B where A.sname='白居易' and A.sdept=B.sdept 。
--外连接 。
select A.*,B.* from student A left join sc B on A.sno=B.sno 。
select A.*,B.* from student A right join sc B on A.sno=B.sno 。
select A.*,B.* from student A FULL join sc B on A.sno=B.sno 。
--复合条件连接 。
select * from sc select * from course 。
select distinct A.*,B.* from student A,sc B where A.sno=B.sno and B.grade>99 and B.cno='002' 。
select distinct A.*,B.*,C.* from student A,sc B,course C where A.sno=B.sno and B.cno=C.cno and B.grade>99 and B.cno='002' 。
--字符串连接查询 。
select sname+sno from student 。
select distinct sname from student ,sc where student.sno=sc.sno 。
select sname from student ,sc where student.sno=sc.sno and student.sno not in (select sno from sc where grade<60) group by sname 。
--子查询 。
select * from student where sage>(select AVG(sage) from student) 。
--是否存在的查询 。
select * from student where exists(select * from sc where sno=student.sno) 。
select * from student where not exists(select * from sc where sno=student.sno) 。
--sql创建用户 sys.sp_addlogin bnc,bnc,Studets sp_adduser bnc,bnc 。
--权限分配和收回 。
grant select on student to bnc 。
select * from student 。
revoke select on student from bnc 。
--视图的创建 。
create view VIEW_STUGrade(学号,姓名,课程,成绩) 。
as 。
select student.sno,student.sname,course.cname,sc.grade from student,course,sc 。
where student.sno=sc.sno and course.cno=sc.cno and student.sdept='软件' 。
--查看视图 。
select * from VIEW_STUGrade 。
--视图修改 。
alter view VIEW_STUGrade(学号,姓名,课程,成绩) 。
as 。
select student.sno,student.sname,course.cname,sc.grade from student,course,sc 。
where student.sno=sc.sno and course.cno=sc.cno and student.sdept='软件' 。
with check option 。
--更新失败后不影响视图查看 。
--视图更新 。
update VIEW_STUGrade set 姓名='王超' where 学号='10022' select * from student where sno='10022' 。
/* 1,可更新视图: a,单个基本表导出的 2,不可更新视图 a 两个以上基本表导出的 b 视图字段来自表达式或者函数 c 嵌套查询的表 d 分组子句使用distinct */ 。
--删除视图 drop view VIEW_STUGrade 。
--高级sql编程 。
--数据类型1,int 2,smallint 3,tinyint (0--255) 4,bigint 5char固定长度<800.如:学号,姓名 6,varchar可变长度小于800 7,text 2GB 8,nvarchar1--4000 */ 。
--运算符和通配符 。
select GETDATE()-1 昨天,GETDATE() 今天,GETDATE()+1 明天 。
select 59&12 。
select 59|12 。
select 59^12 。
--模糊查询 。
select * from student where sname like '%刘%' 。
select * from student where sno like '1002[5-9]' 。
--控制流程语句 。
declare @name char(10) set @name='司马相如' 。
print @name 。
--输出一个表达式,不能进行查询 select @name 。
--输出多个表达式 。
declare @a nvarchar(50),@b nvarchar(50) 。
set @a=33 set @b=34 ---简写select@a=33,@b=34 。
if @a>@b 。
print '最小值是:'+@a 。
else 。
print '最大值是:'+@b 。
--waitfor间隔一段时间执行 。
waitfor delay '00:00:04' print '推迟4秒执行' 。
waitfor time '17:45:50' print '等待这一时刻执行' 。
--创建函数 。
CREATE FUNCTION GetTime ( @date1 datetime, @date2 datetime ) 。
RETURNS TABLE 。
AS RETURN ( 。
select datediff(dd,@date1,@date2) 日差,datediff(mm,@date1,@date2) 月差, datediff(yy,@date1,@date2) 年差 。
) 。
--创建存储过程, 。
--查看 。
GO create proc [dbo].[sel] ( 。
@sno char(10) 。
) 。
as 。
select * from student where sno=@sno 。
exec sel @sno='10021' 。
--查看 。
GO create proc sel2 。
as 。
select * from student 。
exec sel2 。
--修改 。
GO create proc updat @sno char(10), @sex char(2) 。
as 。
update student set sex=@sex where sno=@sno 。
select * from student exec updat @sno='10021', @sex='女' 。
--删除 。
GO create proc dele @sno char(10) 。
as 。
delete student where sno=@sno 。
select * from student 。
exec dele @sno='10029' 。
--插入 。
GO create proc inser @sno char(10), @sname char(20), @sex char(2), @sage smallint, @sdept char(15) 。
as 。
insert into student values(@sno,@sname,@sex,@sage,@sdept) 。
exec inser @sno='10029', @sname='tom', @sex='男', @sage=100, @sdept='sc' select * from student 。
--查询操作 。
--查询 。
select * from student select * from course select * from sc 。
--去掉重复行 select distinct sno from sc 。
--格式化查询 。
select sname as '姓名',2013-sage as '出生日期' from student 。
select sname,'出生日期',2013-sage from student 。
select 姓名=sname,出生日期=2013-sage from student 。
--条件查询 。
select * from course where ccredit>3 。
select * from course where ccredit between 2 and 5 。
select * from course where ccredit> 2 and ccredit<5 。
select * from course where ccredit in(2) 。
select * from course where ccredit not in(2) 。
--匹配查询 。
select * from student where sname like '刘__' 。
select * from student where sname like '_表__' 。
select * from student where sname like '%表%' 。
--算术元算查询 。
select grade*(1+0.2) as 总成绩,grade/(10) as 绩点 from sc 。
--分组函数查询 。
select COUNT(*) as 总人数 from student 。
select COUNT(distinct sno) as '选修的总人数' from sc select AVG(grade) as '平均成绩' from sc where sno='10021' 。
select MAX(grade) as 'MAX成绩' from sc where sno='10021' 。
select MIN(grade) as 'MIN成绩' from sc where sno='10021' 。
select SUM(grade) as '总成绩' from sc where sno='10021' 。
select SUM(grade)/COUNT(grade) as '平均成绩' from sc where sno='10021' 。
select SUM(grade) as '总成绩' from sc group by sno having sum(grade)>100 。
--连接查询、 --等值连接 。
select distinct student.*,sc.* from student,sc where student.sno=sc.sno 。
--自身连接 。
select distinct A.*,B.* from student A,sc B where A.sno=B.sno select B.sname as '同一个系' from student A,student B where A.sname='白居易' and A.sdept=B.sdept 。
--外连接 。
select A.*,B.* from student A left join sc B on A.sno=B.sno select A.*,B.* from student A right join sc B on A.sno=B.sno 。
select A.*,B.* from student A FULL join sc B on A.sno=B.sno 。
-复合条件连接 。
select distinct A.*,B.* from student A,sc B where A.sno=B.sno and B.grade>99 and B.cno='002' 。
select distinct A.*,B.*,C.* from student A,sc B,course C where A.sno=B.sno and B.cno=C.cno and B.grade>99 and B.cno='002' 。
--字符串连接查询 。
select sname+sno from student 。
select distinct sname from student ,sc where student.sno=sc.sno 。
select sname from student ,sc where student.sno=sc.sno and student.sno not in (select sno from sc where grade<60) group by sname 。
--子查询 。
select * from student where sage>(select AVG(sage) from student) 。
--是否存在的查询 。
select * from student where exists(select * from sc where sno=student.sno) 。
select * from student where not exists(select * from sc where sno=student.sno) 。
--sql创建用户 。
sys.sp_addlogin bnc,bnc,Studets sp_adduser bnc,bnc 。
--权限分配和收回 。
grant select on student to bnc 。
select * from student 。
revoke select on student from bnc 。
--视图的创建 。
create view VIEW_STUGrade(学号,姓名,课程,成绩) 。
as 。
select student.sno,student.sname,course.cname,sc.grade from student,course,sc 。
where student.sno=sc.sno and course.cno=sc.cno and student.sdept='软件' 。
--查看视图 。
select * from VIEW_STUGrade 。
--视图修改 。
alter view VIEW_STUGrade(学号,姓名,课程,成绩) as select student.sno,student.sname,course.cname,sc.grade from student,course,sc 。
where student.sno=sc.sno and course.cno=sc.cno and student.sdept='软件' 。
with check option 。
--更新失败后不影响视图查看 --视图更新 。
update VIEW_STUGrade set 姓名='王超' where 学号='10022' select * from student where sno='10022' 。
/* 1,可更新视图: a,单个基本表导出的 2,不可更新视图 a 两个以上基本表导出的 b 视图字段来自表达式或者函数 c 嵌套查询的表 d 分组子句使用distinct */ 。
--删除视图 drop view VIEW_STUGrade 。
--触发器 。
use Studets 。
GO create trigger insert_Tri 。
ON student after 。
insert as print '有新数据插入!' 。
。
GO create trigger update_Tri 。
on student after 。
update as print '有数据更新!' 。
。
GO create trigger delete_Tri 。
on student after 。
delete as print '有数据删除!' 。
。
--修改触发器 。
GO alter trigger delete_Tri 。
on student after delete 。
as 。
if '王帅' in (select sname from deleted) 。
print '该信息不许删除!' 。
rollback transaction 。
--执行存储过程查看触发器使用情况 。
exec sel @sno='10021' 。
exec inser @sno='10029', @sname='王帅', @sex='男', @sage=25, @sdept='国贸' 。
exec updat @sno='10029', @sex='女' 。
exec dele @sno='10029' 。
--查看,修改,删除触发器 。
/* sp_*+触发器名称 。
sp_helptext:触发器正文信息 sp_help:查看一般信息,触发器名称,属性,创建时间,类型 sp_depends:引用或指定表的所有触发器 sp_helptrigger:指定信息 */ sp_help delete_Tri 。
sp_helptext delete_Tri 。
sp_depends delete_Tri 。
sp_helptrigger student 。
--删除触发器 。
drop trigger delete_Tri 。
。
最后此篇关于SQL Server 数据库基本操作语句总结的文章就讲到这里了,如果你想了解更多关于SQL Server 数据库基本操作语句总结的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
SQL、PL-SQL 和 T-SQL 之间有什么区别? 谁能解释一下这三者之间的区别,并提供每一个的相关使用场景? 最佳答案 SQL 是一种对集合进行操作的查询语言。 它或多或少是标准化的,几乎所有关
这个问题已经有答案了: What is the difference between SQL, PL-SQL and T-SQL? (6 个回答) 已关闭 9 年前。 我对 SQL 的了解足以完成我的
我在数据库中有一个 USER 表。该表有一个 RegistrationDate 列,该列有一个默认约束为 GETDATE()。 使用 LINQ 时,我没有为 RegistrationDate 列提供任
我有一个可能属于以下类型的字符串 string expected result 15-th-rp 15 15/12-rp 12 15-12-th
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 9年前关闭
我有一个存储过程(称为 sprocGetArticles),它从文章表中返回文章列表。这个存储过程没有任何参数。 用户可以对每篇文章发表评论,我将这些评论存储在由文章 ID 链接的评论表中。 有什么方
我目前正在做一个 *cough*Oracle*cough* 数据库主题。讲师介绍embedded SQL作为让其他语言(例如 C、C++)与(Oracle)数据库交互的方式。 我自己做了一些数据库工作
SQL Server 中 SQL 语句的最大长度是多少?这个长度是否取决于 SQL Server 的版本? 例如,在 DECLARE @SQLStatement NVARCHAR(MAX) = N'S
这个问题已经有答案了: Simple way to transpose columns and rows in SQL? (9 个回答) 已关闭 8 年前。 CallType
预先感谢您对此提供的任何帮助。 假设我有一个查询,可以比较跨年的数据,从某个任意年份开始,永无止境(进入 future ),每年同一时期直到最后一个完整的月份(其特点是一月数据永远不会显示至 2 月
我在数据库中有一个 USER 表。该表有一个 RegistrationDate 列,该列的默认约束为 GETDATE()。 使用 LINQ 时,我没有为 RegistrationDate 列提供任何数
下面是我试图用来检查存储过程是否不存在然后创建过程的 sql。它会抛出一个错误:Incorrect syntax near the keyword 'PROCEDURE' IF NOT EXISTS
我有一个同事声称动态 SQL 在许多情况下比静态 SQL 执行得更快,所以我经常看到 DSQL 到处都是。除了明显的缺点,比如在运行之前无法检测到错误并且更难阅读,这是否准确?当我问他为什么一直使用
来自 lobodava 的动态 SQL 查询是: declare @sql nvarchar(4000) = N';with cteColumnts (ORDINAL_POSITION, CO
使用 SQL Server 中的存储过程执行动态 SQL 命令的现实优点和缺点是什么 EXEC (@SQL) 对比 EXEC SP_EXECUTESQL @SQL ? 最佳答案 sp_executes
我有这个有效的 SQL 查询: select sum(dbos.Points) as Points, dboseasons.Year from dbo.StatLines dbos i
我正在调试一些构建成功运行的 SQL 命令的代码。 然而,在查询结束时,查询结果似乎被写入了一个文本文件。 完整的查询如下 echo SELECT DATE,DATETABLE,DATE,APPDAT
我有一些创建表的 .sql 文件(MS SQL 数据库): 表_1.sql: IF OBJECT_ID (N'my_schema.table1', N'U') IS NOT NULL DROP TAB
我写了下面的 SQL 存储过程,它一直给我错误@pid = SELECT MAX(... 整个过程是: Alter PROCEDURE insert_partyco @pname varchar(20
我在 SQL Server 2005 中有包含两列 Fruit 和 Color 的表,如下所示 Fruit Colour Apple Red Orange
我是一名优秀的程序员,十分优秀!