当前位置:文档之家› 数据库应用SQL总结

数据库应用SQL总结

数据库应用SQL总结1 数据库的操作 (3)1.1 数据库的创建 create database name (3)1.2 数据库的修改 alter database name (3)1.2.1 修改方式1:修改modify (3)1.2.2 修改方式2:添加add (4)1.2.3 修改方式3:删除remove (4)1.3 数据库的删除 drop database (4)2 关系表的操作 (5)2.1 关系表的创建 create table name (5)2.2 关系表的修改 alter table name (5)2.2.1 修改方式1:修改alter column (5)2.2.2 修改方式2:添加add (5)2.2.3 修改方式3:删除drop column (6)2.3 关系表的删除 drop table name (6)3 表数据的操作 (7)3.1 表数据的录入 insert into table values (7)3.2 表数据的修改 update table set (7)3.3 表数据的删除 delete from name (7)4 数据表查询 (8)4.1 对列的相关查询 select table_list from table (8)4.1.1 选择一个表中指定的列 select table_list from table (8)4.1.2 查询全部列 select * from table (8)4.1.3 修改查询结果中列标题 select list as list_name from table (8)4.1.4 替换查询结果中数据select list case when then end from table . 84.1.5 查询经过计算的值 select expression from table (9)4.2 对行的相关查询select table_list from table (9)4.2.1 消除结果集中的重复行distinct (9)4.2.2 限制结果集的返回行数 top n percent (9)4.2.3 查询满足条件的行 select list from table where (9)4.3 对查询结果排序 order by list_name asc|desc (10)4.4 使用聚合函数 SUM( )AVG( )MIN( )MAX( )COUNT() (11)4.5 对查询结果分组 group by (11)4.6 分组数据进行过滤 having (11)4.7 产生额外的汇总行 Compute (11)5 多表查询 (12)5.1 连接查询 (12)5.1.1 条件连接 (12)5.1.2 自身连接 (12)5.2 嵌套查询 (13)5.2.1 带有In谓词的子查询 (13)5.2.2 带有比较运算符的子查询 (13)5.2.3 带有EXISTS谓词的子查询 (13)5.3 集合查询 (13)5.3.1 并操作 UNION (13)5.3.2 交操作 INTERSECT (13)5.3.3 差操作 EXCEPT (14)1数据库的操作1.1数据库的创建create database name课程数据库名称为db_stu,分别创建数据文件和事物日志,数据文件为db_stu_data,保存在C:\Program Files\Microsoft SQL Server\MSSQL\Data\db_stu_data.MDF,初始大小为10MB,最大大小为5MB,数据库增长按5%比例增长;日志文件为db_stu_log,保存在C:\Program Files\Microsoft SQL Server\MSSQL\Data\db_stu_log.LDF,大小为2MB,最大可增长到100MB,按1MB增长。

create database db_stuon(name=db_stu_data,filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\db_stu_data.MDF', size=10MB,maxsize=50MB,filegrowth=5%)log on(name=db_stu_log,filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\db_stu_log.LDF', size=2MB,maxsize=100MB,filegrowth=1MB)1.2数据库的修改alter database name1.2.1修改方式1:修改modify将数据文件的最大大小改为不受限制Alter database db_stuModify file(Name=db_stu_data,Maxsize=unlimited)1.2.2修改方式2:添加add向数据库再添加一个数据文件Alter database db_stuAdd file(Name=db_stu_data2,filename='C:\Program Files\Microsoft SQL Server\MSSQL\Data\db_stu_data2.MDF', size=10MB,maxsize=50MB,filegrowth=5%)1.2.3修改方式3:删除remove删除数据库的数据文件Alter database db_stuRemove file db_stu_data21.3数据库的删除drop databaseDrop database db_stu2关系表的操作2.1关系表的创建create table nameStudent表结构use db_stucreate table Student(Sno char(10) not null primary key,Sname char(30) not null,Sage int not null,Ssex int null,Sdept char(20) null)2.2关系表的修改alter table name 2.2.1修改方式1:修改alter column 将关系表字段Ssex改为bit类型Alter table studentAlter column Ssex bit2.2.2修改方式2:添加add向关系表再添加一个字段Alter table studentAdd Sdel char(11) null2.2.3修改方式3:删除drop column 删除关系表字段Alter table studentDrop column Sdel2.3关系表的删除drop table name Drop table student3表数据的操作3.1表数据的录入insert into table valuesStudent表记录数据insert into Student values ('40900001','小红',19,0,'09') insert into Student values ('40900002','小张',20,1,'09') insert into Student values ('40900003','小明',19,1,'09') insert into Student values ('40900004','小白',19,0,'09') 3.2表数据的修改update table set将所有同学的年龄都增加一岁Update studentSet Sage=Sage+13.3表数据的删除delete from name将男同学的记录都删除Delete from studentWhere Ssex=14数据表查询SELECT select_list [ INTO new_table ][ FROM table_source ][ WHERE search_condition ][ GROUP BY <列名> [, <列名>…]][ HA VING search_condition][ ORDER BY <列名> [ ASC|DESC] [, <列名>…][ ASC|DESC] ]4.1对列的相关查询select table_list from table4.1.1选择一个表中指定的列select table_list from table查询学生的学号、姓名及年龄SELECT Sno,Sname,Sage FROM Student4.1.2查询全部列select * from tableSELECT * FROM Student4.1.3修改查询结果中列标题select list as list_name from table查询数据表Student中所有学生的学号及年龄,结果中各列的标题分别指定为学号、年龄;SELECT Sno as 学号, Sage as 年龄FROM Student或者SELECT Sno 学号, Sage 年龄FROM Student或者SELECT 学号=Sno, 年龄= Sage FROM Student4.1.4替换查询结果中数据select list case when then end from table 查询数据表Student的学生的所有记录,结果按(学号,姓名,性别,年龄,院系)显示。

对于性别按以下规定显示:性别为0则显示为男;性别为1则显示为女。

SELECT Sno 学号, Sname 姓名,性别= case when Ssex=0 then ‘男’when Ssex=1 then ‘女’end age 年龄,Sdept 院系FROM Student4.1.5查询经过计算的值select expression from table显示学生的学号,姓名及出生年份SELECT Sno 学号, Sname 姓名,出生年份= year(getdate()) - SageFROM Student注:year(getdate()) =20104.2对行的相关查询select table_list from table4.2.1消除结果集中的重复行distinct查询学生的性别和年龄,消除重复的行Select distinct Ssex,Sage from student4.2.2限制结果集的返回行数top n percent查询学生的成绩前5行记录Select top 5 * from chose查询学生的成绩前30%的记录Select top 30 percent * from chose4.2.3查询满足条件的行select list from table where(1)逻辑运算符(and not or)查询院系为09或08的学生的记录SELECT * FROM Student WHERE Sdept =’09‘ or Sdept =’08‘(2)比较运算符(=< <= > >= <> != !< !> )查询年龄大于18小于22的学生记录SELECT * FROM Student WHERE Sage>=18 and Sage<=22(3)指定范围(between 和not between)查询年龄大于18小于22的学生记录SELECT * FROM Student WHERE Sage between 18 and 22查询学分不在1分到3分的课程号及课程名SELECT Cno,Cname FROM Course WHERE Ccredit not between 1 and 3 (4)确定集合in与not in查询年龄为18、19或20的学生记录SELECT * FROM Student WHERE Sage in (18 ,19 ,20)查询院系为09或08的男学生的记录SELECT * FROM Student WHERE Sdept in (’09‘ ,’08‘) and Ssex=’男‘(5)字符匹配(like 和not like)查找学号以2002开头的所有学生记录SELECT * FROM Student WHERE Sno like ‘2002%’查找学号中第5个字符为5的所有学生记录SELECT * FROM Student WHERE Sno like ‘_ _ _ _5%’查找学号中第5个字符不是5的所有学生记录SELECT * FROM Student WHERE Sno like ‘_ _ _ _[^5]%’(6)空值比较(is null 和is not null)查找目前院系不明的所有学生记录SELECT * FROM Student WHERE Sdept is null查找目前已经确定院系的所有学生记录SELECT * FROM Student WHERE Sdept is not null4.3对查询结果排序order by list_name asc|desc查询选修课程号为3的学生的成绩情况,并按照分数降序排列Select * from chose where Cno = ‘003‘order by score Desc查询所有学生的成绩情况,先按照课程号升序排列,再按照分数降序排列Select * from chose order by Cno ,score Desc4.4使用聚合函数SUM( )A VG( )MIN( )MAX( )COUNT()查看院系为计算机的学生的平均年龄Select 平均年龄= avg(Sage) From Student Where Sdept=‘计算机’显示出来学生的最大年龄、最小年龄和平均年龄Select 最大年龄= max(Sage) , 最小年龄= min(Sage), 平均年龄= avg(Sage) From Student查询参加选课学生的个数Select count(distinct sno) as 选课学生个数From chose4.5对查询结果分组group by查看各个院系的学生数量Select Sdept , count(Sno) From Student group by Sdept查询表中每个院系男女生个数Select Sdept , Ssex, count(*) From Student group by Sdept , Ssex查看各个课程的平均成绩Select Cno , avg(score) From chose group by Cno4.6分组数据进行过滤having查找男生人数超过20的年级Select Sdept From Student where Ssex =‘男’ group by Sdept having count(*)>=20查看平均成绩在60以上的各个课程Select Cno , avg(Grade) as ‘平均成绩’F rom chose group by Cno havingavg(Grade) >=604.7产生额外的汇总行Compute查找计算机院系学生的学号、姓名,并统计CS的学生人数Select Sno , Sname From Student where Sdept=‘计算机’ compute count(Sno)5.1连接查询select [all|distinct] <目标列表达式>[,<目标列表达式>]…from <表名1>[,<表名2>]…[where<条件表达式>]Where 子句中用来连接两个表的条件称为连接条件或连接谓词。

相关主题