Sql复习材料.pptx
- 文档编号:17688539
- 上传时间:2023-08-02
- 格式:PPTX
- 页数:143
- 大小:1.07MB
Sql复习材料.pptx
《Sql复习材料.pptx》由会员分享,可在线阅读,更多相关《Sql复习材料.pptx(143页珍藏版)》请在冰点文库上搜索。
SQLServer应用与开发,-马俊邦,数据库及表的管理,目标,数据库的创建数据库的管理表的创建表的管理,3,目录,4,4.利用管理器操作,3.表内容的增、删、改,2.数据库中表的管理,1.数据库的管理,数据库的分类,5,创建数据库,数据库文件和事务日志文件,6,创建数据库,7,CREATEDATABASE数据库名ONPRIMARY(,n)LOGON(,n),T-SQL创建数据库的语法:
主文件组,可选参数,默认,创建数据-说明,Database_name:
数据库名称On:
用于存储数据库的数据部分的数据文件。
Primary:
定义基本文件组中的文件。
Logon:
用于存储日志文件的磁盘文件。
Name:
文件的逻辑名称。
Filename:
文件的操作系统文件名称。
Size:
定义的文件的初始大小。
Maxsize:
定义的文件可以增长的最大大小。
Filegrowth:
定义文件的增长增量。
8,创建数据库示例1,9,CREATEDATABASETeachingLibON(NAME=TeachingLib_data,-主数据文件的逻辑名FILENAME=D:
SQLTeachingLib_data.mdf,-主数据文件的物理名SIZE=3MB,-主数据文件初始大小MAXSIZE=10MB,-主数据文件增长的最大值FILEGROWTH=10%-主数据文件的增长率)LOGON(NAME=TeachingLib_log,FILENAME=D:
SQLTeachingLib_log.ldf)GO,数据文件的具体描述,日志文件的具体描述,删除数据库,删除数据库的语法:
10,USEmaster-设置当前数据库为master,以便访问sysdatabases表GOIFEXISTS(SELECT*FROMsysdatabasesWHEREname=TeachingLib)DROPDATABASETeachingLib,DROPDATABASE数据库名,EXISTS()语句:
检测是否存在stuDB数据库如果存在stuDB数据库,则删除,查看数据库状态信息,显示当前数据库引擎中存在的数据库情况。
显示指定数据库文件路径与空间使用情况。
显示指定服务器上的数据库日志空间。
使用命令:
sp_helpdbdbName,11,重命名数据库,只有系统管理员或数据库的拥有者可以重命名数据库。
sp_renamedb用于重命名数据库语法:
sp_renamedb。
old_database_name,new_database_name。
old_database_name是当前数据库名称。
new_database_name是新数据库名称。
12,数据库的维护(以student数据库为例),-显示属性USEstudentEXECsp_helpfile-备份数据库BACKUPDATABASEstudentTOdisk=E:
SQLDatastudentstudent.bak-删除数据库DROPDATABASEstudent,数据库的维护(以student数据库为例),-还原数据库RESTOREDATABASEstudentFROMdisk=E:
SQLDatastudentstudent.bak-分离数据库EXECsp_detach_dbstudent-附加数据库EXECsp_attach_dbstudent,E:
SQLDatastudentstudent.mdf,小结,练习创建数据库1:
创建STUDENT数据库,如果库已经存在,请先删除掉原来的STUDNET数据库如果库不存在,直接新建STUDNET数据库注意:
CREEATEDATABASEDROPDATABASEIFEXISTS()主数据文件l_data.mdf辅数据文件l_log.ldf文件存放目录:
d:
data,15,目录,16,4.利用管理器操作,3.表内容的增、删、改,2.数据库中表的管理,1.数据库的管理,表,设计数据表。
维护数据表。
数据操作。
建表的语法,18,CREATETABLE表名(字段1数据类型列的特征,字段2数据类型列的特征,.),列的特征:
包括该列是是否为空(NULL)、是否是标识列(自动编号)、是否有默认值、是否为主键等。
19,数据类型,为列指定数据类型及其数据宽度;关系数据库支持非常丰富的数据类型,不同的数据库管理系统支持的数据类型基本是一样的,右表列出了常用的数据类型。
20,列级完整性约束,用于定义列或字段一级的完整性约束,一般包括:
NOTNULL和NULL约束。
PRIMARYKEY约束。
UNIQUE约束。
FOREIGNKEY约束。
DEFAULT定义。
CHECK约束。
另外AS表达式IDENTITY(,),21,表级完整性约束,用于定义表一级的完整性约束,一般包括:
PRIMARYKEY约束(复合属性构成的主关键字说明)FOREIGNKEY约束(外部关键字及参照关系说明)CHECK约束(同时涉及到多个属性的域完整性约束),22,CREATETABLE学生(SNOINTPRIMARYKEY,SNAMEVARCHAR(10)NOTNULL,SSEXCHECK(面积0),SBIRTHDAYDATETIMEDEFAULT(1990-1-1),SCLASSVARCHAR(20),约束的简单写法的例子,建表示例,23,USETeachingLib-将当前数据库设置为stuDBGOCREATETABLEStudent(stuNoCHAR(7)PRIMARYKEY,-学号,主键stuNameCHAR(6)NOTNULLUNIQUE,-姓名,唯一stuSexCHAR
(2)NOTNULLCHECK(stuSex=男orstuSex=女),stuSpecializeCHAR(10)NOTNULL-专业,非空)GO,建表示例,24,CREATETABLEstuMarks(ExamNoCHAR(7)NOTNULL,-考号stuNoCHAR(6)NOTNULL,-学号writtenExamINTNOTNULL,-笔试成绩LabExamINTNOTNULL-机试成绩)GO,25,例:
课堂练习:
建立老师表,要求:
TNO为主键约束Tname不得为空TSEX默认为男Tbirthday默认为2001-1-1不得为空,26,例:
建立课程表,要求CNO为主键,CNAME不得为空TNO不得为空,27,例:
建立分数表,要求DEGREE的范围要大于0,28,修改表结构命令,ALTERTABLEADD|,DROP|DROPCOLUMN|ALTERCOLUMN,增加新的属性(字段)修改属性的定义删除完整性约束删除属性,29,增加新的属性(字段),往订购单关系中增加一个新属性“完成日期”注意:
如果要一次性添加多个的话需要使用,进行分割,ALTERTABLE订购单ADD完成日期DATETIMENULL,30,修改属性的定义,将订购单关系的完成日期属性的数据类型修改为SMALLDATETIME。
ALTERTABLE订购单ALTERCOLUMN完成日期SMALLDATETIMENULL,31,删除完整性约束,建立的列级或表级完整性约束可以删除,但是前提是在定义完整性约束时必须给出约束名称,否则不能删除。
设有:
CREATETABLE职工(职工号CHAR(5)PRIMARYKEY,工资INTCONSTRAINTsalaryCHECK(工资=1000AND工资=5000)DEFAULT1200),则可以:
ALTERTABLE职工DROPCONSTRAINTsalary,32,删除属性,删除订购单关系中的“完成日期”属性:
ALTERTABLE订购单DROPCOLUMN完成日期,注意:
有些系统的ALTERTABLE命令不允许删除属性,如果必须要删除属性,一般步骤是:
先将旧表中的数据备份,然后删除旧表、并建立新表,最后将原来的数据恢复到新表中。
33,课堂作业:
创建一个雇员信息表,然后在表中增加一个salary字段,删除表中的age字段,并且修改memo字段的数据类型。
SQL语句的程序清单如下:
createtableemployees(idchar(8)primarykey,namechar(20)notnull,departmentchar(20)null,memochar(30)null,ageintnull,),删除表,删除表的语法:
34,DROPTABLE表名,DROPTABLEStudent,目录,35,4.利用管理器操作,3.表内容的增、删、改,2.数据库中表的管理,1.数据库的管理,插入数据行,36,InSertINTO列名Values,INSERTINTOStudent(stuNo,stuName,stuSex,stuSpecialize)VALUES(0101001,王明,男,计算机),插入数据行,37,注意事项1:
每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验;,INSERTINTOStudent(stuNo,stuName,stuSex,stuSpecialize)VALUES(0101001),代码错误,插入数据行,38,注意事项2:
每个数据值的数据类型、精度和小数位数必须与相应的列匹配;,INSERTINTOStudent(stuNo,stuName,stuSex,stuSpecialize)VALUES(01010000001,王明,男,计算机),代码错误,插入数据行,39,注意事项4:
如果在设计表的时候就指定了某列不允许为空,则必须插入数据;,注意事项5:
插入的数据项,要求符合检查约束的要求,注意事项6:
具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值,插入多行数据,40,InSertInto(列名)SelectFrom,更新数据行,41,UpdateSetWhere,UPDATEStudentSETstuNo=0202003WHEREstuName=张鲁,删除数据行,42,DeleteFromWhere,DELETEFROMStudentWHEREstuName=王明,删除数据行,43,TruncateTable,TRUNCATETABLEStudents,DELETEFROMStudents,=,目录,44,4.利用管理器操作,3.表内容的增、删、改,2.数据库中表的管理,1.数据库的管理,创建数据库,45,管理和维护:
分离和附加,46,演示分离和附加数据库,创建数据库表,47,总结,数据库的创建数据库的管理表的创建及管理,48,SQL的数据查询功能,50,目录,4.总结,3.Where子句,2.操作符,1.简单查询,51,基本格式:
SELECTFROMWHERE,51,SQL查询命令格式,52,SQL查询命令格式,SELECTALL|DISTINCT*|,FROM,WHEREGROUPBY,HAVINGORDERBYASC|DESC,ASC|DESCCOMPUTE,53,简单查询-语法说明,select_column_list:
选择列表,指出查询结果集合中的列数和属性into:
说明用查询结果集合构造一个新表From:
指出查询的表和各表的关系Where:
指出查询条件Orderby:
说明查询结果集合的排序顺序Groupby,having,compute:
说明查询结果集合的统计方法,54,简单查询,简单查询只包括选择列、from子句和where子句,分别说明所查询的列、查询的表或视图,及搜索的条件,55,简单查询-查询所有列,语法:
select*from表名示例:
将HumanResources.Employee表的所有记录显示出来,56,简单查询-选择部分列,并指定显示次序,语法:
selectcolumn_listfrom表名示例:
将HumanResources.Employee表中的EmployeeID,LoginID两个字段的值列出,57,简单查询-可以更改列标题的名称,两种方式:
列标题(结果集中显示的列名)=列名列名列标题(结果集中显示的列名)示例:
显示HumanResources.Department表的DepartmentID,Name字段,需要显示中文含义作为输出列名.小技巧修改列的名称:
在列名称的后面我们可以使用as+关键字来修改列的别名,58,简单查询-可对数值列进行算术运算,selectEmployeeID,Rate,日薪=Rate*8fromHumanResources.EmployeePayHistory注:
空值的算术运算仍为空.,59,简单查询-删除重复行,使用distinct删除重复行,空值也互相看作重复行,多个空值只返回一行语法:
Selectdistinct列名from表名例:
selectdistinctTitlefromHumanResources.Employee,60,简单查询-限制返回的行数,语法:
Selecttopnpercentcolumn_name,coulumn_namefromtable_name,61,简单查询-限制返回的行数(续),讲解:
返回前2个结果Selecttop2*fromHumanResources.Employee返回前20%个结果Selecttop20percent*fromHumanResources.Employee,62,DISTINCT重要说明:
作用:
去掉结果中的重复数据如果选择多列数据,那么去重的原则是所有列的数据都完全相同才会被认为是重复数据与Top一样,只能放在Select和检索的列名之间。
63,简单查询-使用where子句,使用where子句设置查询条件,过滤掉不需要检索的数据行语法:
Selectcolumn_listfromtable_namewhereexpressionlist_perator(value_list)说明:
expressionlist_perator(value_list):
条件表达式,64,简单查询-使用where子句,示例显示HumanResources.Department表中GroupName字段的值为”ResearchandDevelopment”的记录.,65,FROM,说明要查询的数据来自哪个(些)表,可以基于单个表或多个表进行查询。
查询的时候不同的表名称用,分隔。
66,WHERE,说明查询条件,即选择元组的条件,可以用于查询条件的运算符也非常丰富,下表列出了常用的运算符。
注意:
Where不能出现别名!
67,WHERE中的关系运算符,=说明:
相等判断查询叫Chai的商品的信息。
、=说明:
不等于查询不是Chai和Changede产品的信息。
!
、!
说明:
不大于和不小于查询单价不大于50元的产品的信息。
68,BETWEENAND,BetweenAnd和NotbetweenAnd说明:
将条件锁定到一个范围之内,And两边是范围的边界,并且包含边界。
或者在一个范围之外。
例如:
查询商品表中所有的价格在100到50元之间的商品的信息。
以及在这个区间之外的商品信息。
注意:
选取的数据范围要与列的数据类型相匹配才可以。
69,BETWEENAND,说明:
通常Betweenand用来对数值类型进行判断。
如果是字符串,那么范围的依据是按照首字符的ASCII值。
如果值是日期类型,那么将会按照实际的日期,70,简单查询-使用where子句,比较运算符:
=,=,!
=,!
使用HumanResources.Employee表,查询出休假时间超出20小时的记录.,71,简单查询-使用where子句,范围运算符:
(Not)betweenand使用HumanResources.Employee表,查询出休假时间大于20且小于80的记录.使用HumanResources.Employee表,查询出休假时间小于20或大于80的记录.,72,简单查询-使用where子句,列表运算符In(Notin)使用HumanResources.Employee表,查询出title包含”MarketingAssistant”与”ToolDesigner”内容的记录.,73,简单查询-使用where子句,模式匹配符Like(notlike)%可匹配任意类型和长度的字符_可匹配单个任意字符指定一个字符、字符串或范围与相反,74,简单查询-使用where子句,使用HumanResources.Employee表,查询出Title字段中头两个字母为”Pr”的所有记录集合.使用HumanResources.Employee表,查询出Title字段中头两个字母不是”Pr”的所有记录集合.,75,简单查询-使用where子句,使用HumanResources.Employee表,查询出ManagerID字段中头1个字母为”1”的所有记录集合.使用HumanResources.Employee表,查询出所有男雇员.,76,简单查询-使用where子句,空值判断符Is(not)null空值与任何数据运算或比较时,其结果仍为空,空值之间也不能匹配。
所以where子句不能使用比较运算符对空值进行比较判断示例:
使用EmployeeDepartmentHistory表查找出”EndDate”字段不为空的记录.,77,简单查询-使用where子句,逻辑运算符要特别注意括号的使用notandor多数情况为配合其他操作符同时使用.,78,简单查询-查询结果排序,Orderby子句对查询结果按一列或多列进行排序格式:
selectcolumn_listfromtable_namewhere.orderbycolumnasc|desc.nAsc按升序排序desc按降序排序对排序列数没限制,但列的最大长度为8060字节不能对ntext,text,image列排序,79,ORDERBYASC|DESC,ASC|DESC,功能:
用来对查询的结果进行排序。
1.单例升序排序和倒叙排序。
2.多列排序、升降混杂。
3.小技巧:
在Orderby后使用数字来表示列。
80,按单位排序,按部门排序,先按单位排序,单位相同的再按部门排序,总结,简单查询-查询所有列简单查询-选择部分列,并指定显示次序简单查询-可以更改列标题的名称简单查询-可对数值列进行算术运算简单查询-删除重复行简单查询-限制返回的行数简单查询-使用where子句操作符简单查询-查询结果排序,82,小结:
练习一:
查询商品表中是电视机的商品的信息。
练习二:
查询商品表中编号是DSJ-120的商品的单价和库存量。
练习三:
查询商品表中所有1000元以下的商品信息。
练习四:
查询商品表中所有1000元到2000元之间的商品信息(两种方式)。
练习五:
查询商品表中所有价格价格不到1000元或者高于2000元的商品的信息。
(两种方式)。
练习六:
查询商品表中所有小于1000元或者大于2000元的商品信息。
练习七:
产讯所有电视机和电冰箱的商品的信息。
(两种方式)。
练习八:
查询所有姓刘的同学的全部信息。
练习六:
查询所有的姓刘的并且名字是三个字的同学的信息。
练习七:
查询所有的名字中包含琴的同学的名称。
练习八:
查询商品表表中价格是1865元和2800元的商品信息。
并且是电视机的商品的信息。
练习九:
查询商品表中价格高于2000元的电视机,或者低于1000元的电冰箱的商品的信息。
练习十:
查询音乐表中30元的音乐信息(可使用Like)。
83,GROUPBY,HAVING,GROUPBY短语用于对查询结果进行分组,可以利用它进行分组汇总,所以常与汇总函数进行联合使用;HAVING短语必须跟随GROUPBY使用,它用来限定分组必须满足的条件,通常使用汇总结果进行筛选。
84,聚合函数,聚合函数记数:
count(All|distinct*)/计算元组个数记数:
count(All|distinct列名)/算一列中值个数总和:
sum(All|distinct列名)/列明可以是计算列平均值:
avg(All|distinct列名)最大值:
max(All|distinct列名)最小值:
min(All|distinct列名),count(*)与count(列名)的差别,85,聚合函数,注意:
1.使用Sum和AVG的时候可以使用的数据类型只能是数据类型的字段。
2.使用Sum和AVG的时候将会忽略Null的数据。
示例:
查询商品表中所有的进价总和和卖价综合。
86,课堂练习:
1.检索出商品表中所有商品的数量。
2.检索出商品表中所有的商品分类的个数。
3.检索出商品中所有产品9折以后的产品总价。
4.计算出所有商品的价值的平局值。
5.计算出所有商品的价值的最大值。
6.计算出所有商品的价值的最小值。
注意:
这些聚合函数可以在一起出现并用,隔开。
不允许直接与普通列同时出现。
7.计算出所有音乐的最大进价值,最小进价值,平局值,总数。
87,使用GroupBy进行分组,查询结果只能包含分组字段和合计函数,不能包含其他列,88,使用GroupBy进行分组,查询结果只能包含分组字段和合计函数,不能包含其他列,可同时包含多个合计函数,89,使用Having对分组的结果进行筛选,会产生中间结果,存放在临时数据库tempdb中,90,多个关键字分组查询,91,课堂练习:
1.检索出商品表中所有动力火车演唱的歌曲的总价和均价。
2.检索出商品表中所有动力火车演唱的歌曲的最小和最大价格。
92,注意:
在select自居的字段列表总,除了聚合函数外、其他所出现的字段一定要造groupby字句中定义才行。
SQLSERVER中text/ntext和image数据类型的字段不能作为groupby的分组依据。
93,使用Where进行筛选,WHERE对参加运算的数据行进行筛选,不满足条件的记录无法参加运算。
例如:
检索出商品表中所有动力火车演唱的歌曲的总价。
94,课堂练习:
1.检索出商品表中所有作者是姓周的歌曲的总价和均价。
2.检索出商品表中所有2000年2003年之间的由每一名歌手的歌曲总价和平均价格。
3.检索出商品表中所有动力火车演唱的歌曲的最小和最大价格。
95,使用Having筛选分组,HAVING必须和GROUPBY一起使用,对使用GROUPBY分组后的数据进行筛选,把分组后满足条件的组筛选出来,不满足条件的组删除掉。
96,使用Having筛选分组,HAVING的使用方式:
97,课堂练习:
1.检索出商品表中所有作者是姓周的歌曲的总价和均价。
2.检索出商品表中所有2000年2003年之间的由每一名歌手的歌曲总价和平均价格。
3.检索出商品表中所有动力火车演唱的歌曲的最小和最大价格。
98,目录,3.总结,2.子查询,1.连接查询,99,连接查询,当查询的结果出自多个表时,需要通过表之间的连接操作来完成。
一般连接别名和自连接查询广义笛卡尔积内连接外连接,100,连接查询-内连接,COMMONROWS,ABC,BDE,ABCDE,LEFTOUTERJOIN,TableX,TableY,COLUMNS,COLUMNS,OUTPUT,ALLROWSFROMTABLEXANDCOMMONROWSFROMTABLEY,ABC,BDE,ABCDE,RIGHTOUTERJOIN,TableX,TableY,COLUMNS,COLUMNS,OUTPUT,ALLROWSFROMTABLEYANDCOMMON
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Sql 复习 材料