数据库原理与应用(第二版)Chapter3课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库原理与应用(第二版)Chapter3课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 第二 Chapter3 课件
- 资源描述:
-
1、第三章第三章关系数据库关系数据库结构化查询语言结构化查询语言(SQL)(SQL)3.1 SQL语言概述语言概述 SQLSQL语言功能极强,但由于设计巧妙,语言十分语言功能极强,但由于设计巧妙,语言十分简洁,完成数据定义、数据操纵、数据控制简洁,完成数据定义、数据操纵、数据控制的核心功能只用了的核心功能只用了9 9个动词:个动词:CREATECREATE、DROPDROP、ALTERALTER、SELECTSELECT、INSERTINSERT、UPDATEUPDATE、DELETEDELETE、GRANTGRANT、REVOKEREVOKE SQLSQL功能功能相关动词相关动词数据查询数据查询
2、SELECTSELECT数据定义数据定义CREATECREATE,DROPDROP,ALTERALTER数据操纵数据操纵INSERTINSERT,UPDATEUPDATE,DELETEDELETE数据控制数据控制GRANTGRANT,REVOTEREVOTE视图视图2视图视图1基本表基本表1存储文件存储文件1SQL基本表基本表2基本表基本表3基本表基本表4存储文件存储文件2外模式外模式模式模式内模式内模式SQLSQL语言支持关系数据库三级模式结构语言支持关系数据库三级模式结构 3.2 数据定义语言数据定义语言 SQLSQL的数据定义功能包括定义表、定义视的数据定义功能包括定义表、定义视图和定义
3、索引图和定义索引 操作对象操作对象操作方式操作方式创建创建删除删除修改修改表表CREATE TABLECREATE TABLEDROP TABLEDROP TABLEALTER TABLEALTER TABLE视图视图CREATE VIEWCREATE VIEWDROP VIEWDROP VIEW索引索引CREATE INDE XCREATE INDE XDROP INDEXDROP INDEX3.2.1 定义基本表定义基本表 格式:格式:CREATE TABLE CREATE TABLE 表名表名(列名数据类型列名数据类型列级完整性约束条件列级完整性约束条件 ,列名数据类型列级完整性约束,列
4、名数据类型列级完整性约束条件条件 ,表级完整性约束条件,表级完整性约束条件););表名是所要定义的基本表的名字,它可以表名是所要定义的基本表的名字,它可以由一个或多个属性(列)组成。由一个或多个属性(列)组成。3.2.2 修改基本表修改基本表 格式:格式:ALTER TABLE ADD 完整性约束完整性约束|DROP|MODIFY;其中其中 指定需要修改的基本表,指定需要修改的基本表,ADD子句用子句用于增加新列和新的完整性约束条件,于增加新列和新的完整性约束条件,DROP子句子句用于删除指定的完整性约束条件,用于删除指定的完整性约束条件,MODIFY子子句用于修改原有的列定义。句用于修改原有
5、的列定义。“|”表示每次使用该表示每次使用该命令时只能在命令时只能在ADD、DROP和和MODIFY中选择中选择其中之一进行使用。其中之一进行使用。例例3-1 3-1 建立学生档案表建立学生档案表XSDABXSDAB,其中属性包括:,其中属性包括:学 号(学 号(X HX H)、姓 名()、姓 名(X MX M)、出 生 年 月)、出 生 年 月(CSNYCSNY)、性别()、性别(XBXB)、民族()、民族(MZMZ)、政治)、政治面貌(面貌(ZZMMZZMM)、班级编号()、班级编号(BJBHBJBH),学号为),学号为主键,其值不能为空。主键,其值不能为空。Create Table xs
6、dabCreate Table xsdab(xhxh Char(10)CONSTRAINT pk1 PRIMARY KEY not null,Char(10)CONSTRAINT pk1 PRIMARY KEY not null,xmxm Char(8)not null,Char(8)not null,csnycsny Char(7),Char(7),xbxb Char(2),Char(2),mzmz Char(8),Char(8),zzmmzzmm Char(10),Char(10),bjbhbjbh Long Long)例例3-2 向向XSDAB表增加年龄(表增加年龄(NL)一列,)一列,
7、其数据类型为整型。其数据类型为整型。ALTER TABLE XSDAB ADD NL INTEGER;例例3-3 将将XSDAB中学号的数据类型改为整中学号的数据类型改为整数。数。ALTER TABLE XSDAB MODIFY XH INTEGER;3.2.3 删除基本表删除基本表 格式:格式:DROP TABLE 例例3-5 删除学生档案表(删除学生档案表(XSDAB)DROP TABLE XSDAB 3.2.4 建立索引建立索引 格式格式:CREATE UNIQUECLUSTER INDEX ON(,)说明:索引可建在表的一列或多列上,各列之说明:索引可建在表的一列或多列上,各列之间用逗
8、号分隔。次序指定索引值的排列间用逗号分隔。次序指定索引值的排列次序,次序,ASC(升序)、(升序)、DESC(降序)(降序)。UNIQUE:每一个索引值只对应唯一的数据记:每一个索引值只对应唯一的数据记录。录。CLUSTER:要建立的索引是聚簇索引。所谓聚:要建立的索引是聚簇索引。所谓聚簇索引是指索引项的顺序与表中记录的物理簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。顺序一致的索引组织。例例3-6 执行下面的执行下面的create index 语句:语句:CREATE CLUSTER INDEX Stusname ON XSDAB(XM););将会在将会在XSDAB表的表的XM(
9、姓名)列上建立(姓名)列上建立一个聚簇索引,而且一个聚簇索引,而且XSDAB表中的记录表中的记录将按学号升序建立唯一索引。将按学号升序建立唯一索引。例例3-7 对学生档案表中的对学生档案表中的XH(学号)属性(学号)属性列建立唯一索引列建立唯一索引Sno:CREATE UNIQUE INDEX SNo ON XSDAB(XH););3.2.5 删除索引删除索引 格式:格式:DROP INDEX索引名索引名例例3-9 删除删除 XSDAB表中表中Sno索引。索引。DROP INDEX Sno;注意:删除索引时,系统会同时从数据字注意:删除索引时,系统会同时从数据字典中删去有关该索引的描述。典中删
10、去有关该索引的描述。3.3 数据查询数据查询 数据查询语句是数据查询语句是SQL语言中最常用的语句,语言中最常用的语句,应灵活、全面掌握。应灵活、全面掌握。格式:格式:SELECT ALL|DISTINCT SELECT ALL|DISTINCT ,FROM FROM ,WHERE WHERE GROUP BY GROUP BY 1HAVING HAVING ORDER BY ORDER BY 2ASC|DESCASC|DESC;整个整个SELECT语句的含义:语句的含义:根据根据WHERE子句的条件表达式从子句的条件表达式从FROM子子句指定的基本表或视图中找出满足条件的元句指定的基本表或视
11、图中找出满足条件的元组,再按组,再按SELECT子句中的目标列表达式,子句中的目标列表达式,选出元组中的属性值形成结果表。选出元组中的属性值形成结果表。如果有如果有GROUP子句,则将结果按列名子句,则将结果按列名1的值进行分组,该属性列值相等的元组为一的值进行分组,该属性列值相等的元组为一个组,每个组产生结果表中的一条记录。通个组,每个组产生结果表中的一条记录。通常会在每组中使用集函数。常会在每组中使用集函数。如果如果GROUP子句带子句带HAVING短语,则只有短语,则只有满足指定条件的元组才予以输出。满足指定条件的元组才予以输出。如果有如果有ORDER子句,则结果表还要按列子句,则结果表
12、还要按列名名2的值的升序或降序排序的值的升序或降序排序。3.3.1 单表查询单表查询 所谓所谓“单表查询单表查询”是指所要查询的数据都从一是指所要查询的数据都从一个数据表中获得。这种查询是数据库查询个数据表中获得。这种查询是数据库查询的最基本形式。的最基本形式。1.基本表或视图的查询基本表或视图的查询SELECT ALL|DISTINCT,FROM ,例如,从例如,从XSDAB中查询所有的学号信息:中查询所有的学号信息:SELECT XH FROM XSDAB2.目标列表达式的设置目标列表达式的设置(1)以基本表或视图中的字段作为目标列表达式以基本表或视图中的字段作为目标列表达式 例例3-10
13、 查询学生档案表中的学号查询学生档案表中的学号(XH)、姓名、姓名(XM)、出生年月、出生年月(CSNY)SELECT XH,XM,CSNY FROM XSDAB(2)若查询表或视图中的全部列,则可用星号若查询表或视图中的全部列,则可用星号(“*”)代替全部列)代替全部列 例例3-11 查询学生档案表中的全部内容查询学生档案表中的全部内容SELECT *FROM XSDAB该句相当于:该句相当于:SELECT XH,XM,CSNY,XB,MZ,ZZMM,BJBH FROM XSDAB(3)使用表达式)使用表达式 SELECT子句的目标列表达式,可以将查子句的目标列表达式,可以将查询出来的属性列
14、经过一定的计算后列出结果。询出来的属性列经过一定的计算后列出结果。例例3-12 查询出查询出XSDAB表中学生的学号、姓名和表中学生的学号、姓名和年龄,由于在该表中没有年龄字段,则必须年龄,由于在该表中没有年龄字段,则必须经过计算:(当前年经过计算:(当前年-出生年月中的年),当出生年月中的年),当前日期可以用前日期可以用DATE()函数获得,日期中的()函数获得,日期中的年份可以通过年份可以通过YEAR()函数来获得。()函数来获得。查询语句为:查询语句为:SELECT XH,XM,YEAR(DATE()-YEAR(CSNY)FROM XSDAB(4)函数的使用)函数的使用 COUNT():
15、统计元组个数,():统计元组个数,SUM()():计算一列值的总和:计算一列值的总和 AVG()():计算一列值的平均值:计算一列值的平均值 MAX()():求一列值中的最大值:求一列值中的最大值 MIN()():求一列值中的最小值:求一列值中的最小值例例3-13 查询查询XSDAB表的学生人数表的学生人数SELECT COUNT(*)FROM XSDAB 或或SELECT COUNT(XM)FROM XSDAB(5)AS 的使用的使用 例例3-17 查询成绩表查询成绩表XSCJB中的数据,并显示满中的数据,并显示满足如下条件的记录:若足如下条件的记录:若CJ及格则显示及格则显示“及格及格”汉
16、字,否则显示汉字,否则显示“不及格不及格”汉字。同时将及汉字。同时将及格与不及格所在的列改名为格与不及格所在的列改名为“成绩成绩”,XH列列改名为改名为“学号学号”SELECT XH AS 学号,学号,IIF(CJ=60,”及格及格”,”不及格不及格”)AS 成绩成绩 FROM XSCJB(6)DISTINCT 与与ALL的使用的使用例例3-18 在例在例3-16中查询学生档案表中所有的不中查询学生档案表中所有的不重复的姓氏。假定均为单姓,无复姓。重复的姓氏。假定均为单姓,无复姓。SELECT DISTINCT MID(XM,1,1)AS 姓姓FROM XSDAB3.Where子句子句(1)(
17、1)比较大小比较大小 例例3-19 3-19 查询查询XSDABXSDAB中的中的19821982年以前出生学生的年以前出生学生的全部信息全部信息SELECT SELECT*FROM XSDAB FROM XSDAB WHERE MID(CSNYWHERE MID(CSNY,1 1,4)19824)1982(2)(2)确定范围确定范围谓词谓词BETWEENBETWEENANDAND和和NOT BETWEENNOT BETWEENANDAND可以可以用来查找属性值在或不在指定范围内的元组,用来查找属性值在或不在指定范围内的元组,其中其中 BETWEENBETWEEN后是范围的下限(即低值),后是
18、范围的下限(即低值),ANDAND后是范围的上限(即高值)。后是范围的上限(即高值)。例例3-22 3-22 查询在查询在1982-011982-01与与1983-121983-12出生的同学信出生的同学信息息SELECT*FROM XSDAB WHERE CSNY BETWEEN 1982-01 AND 1983-12(3)(3)确定集合确定集合谓词谓词IN用于查找属性值属于指定集合的元组。用于查找属性值属于指定集合的元组。与与IN相对的谓词是相对的谓词是NOT IN,用于查找属性值,用于查找属性值不属于指定集合的元组。不属于指定集合的元组。例例3-24 查询姓名为查询姓名为“陈海峰陈海峰”
19、、“孙磊孙磊”、“李莹莹李莹莹”、“连升辉连升辉”和和“黄沙黄沙”的全部的全部同学信息同学信息SELECT*FROM XSDAB WHERE XM IN(“陈海峰陈海峰”,“孙磊孙磊”,“李莹莹李莹莹”,“连升连升辉辉”,“黄沙黄沙”)(4)(4)字符匹配字符匹配列名列名 NOT LIKE 查找指定的属性查找指定的属性列值与匹配串相匹配的元组。匹配串列值与匹配串相匹配的元组。匹配串可以是一个完整的字符串,也可以是用可以是一个完整的字符串,也可以是用“?”和和“*”表示的任意一个字符和任意多个字符。表示的任意一个字符和任意多个字符。例例3-25 查询学号的第查询学号的第8位为位为”1”的学生信息
20、的学生信息SELECT*FROM XSDAB WHERE XH LIKE“00000001*”(5)(5)涉及空值的查询涉及空值的查询谓词谓词IS NULL和和IS NOT NULL可用来查询空值可用来查询空值和非空值。空值是一类非常特殊的值,它的和非空值。空值是一类非常特殊的值,它的判断应该用判断应该用 IS NULL 和和IS NOT NULL 或或ISNULL()函数来确定。()函数来确定。例例3-27 查询政治面貌为空的学生信息。查询政治面貌为空的学生信息。SELECT*FROM XSDAB WHERE ISNULL(ZZMM)或者:或者:SELECT*FROM XSDAB WHERE
21、 ZZMM IS NULL(6)(6)多重条件查询多重条件查询逻辑运算符逻辑运算符NOTNOT、ANDAND和和OROR可用来联结多个查询可用来联结多个查询个体。如果这三个运算符同时出现在同一个个体。如果这三个运算符同时出现在同一个WHEREWHERE条件子句中则条件子句中则NOTNOT的优先级高于的优先级高于ANDAND,而而ANDAND的优先级又高于的优先级又高于OROR,但用户可以用括号,但用户可以用括号明确显示并改变优先级。明确显示并改变优先级。例例3-28 3-28 查询查询19821982年以后出生的党员学生的信息。年以后出生的党员学生的信息。SELECT*FROM XSDAB W
22、HERE ZZMM=党员党员 AND MID(CSNY,1,4)=1982 4.对显示结果的排序对显示结果的排序例例3-31 3-31 查询所有学生信息,并按姓名的拼音顺查询所有学生信息,并按姓名的拼音顺序进行降序序进行降序(用用DESCDESC表示表示)排序。排序。SELECT*FROM XSDAB ORDER BY XM DESC5.5.对查询结果分组对查询结果分组例例3-32 对对XSDAB表中的班级进行分组查询,得表中的班级进行分组查询,得出每班的学生人数:出每班的学生人数:SELECT BJBH,COUNT(*)as 人数人数 FROM XSDAB GROUP BY BJBH注意:如
23、果查询结果为多个列与注意:如果查询结果为多个列与count、sum、avg等函数计算的结果混合在一起,那么必须等函数计算的结果混合在一起,那么必须用用group by子句,并且必须按没有用以上函数子句,并且必须按没有用以上函数的所有列进行分组。的所有列进行分组。例例3-33 查询每个班各类政治面貌的人数。查询每个班各类政治面貌的人数。SELECT BJBH,ZZMM,COUNT(*)AS 人数人数 FROM XSDAB GROUP BY BJBH,ZZMM 例例3-34 查询每个班团员的人数。查询每个班团员的人数。SELECT BJBH,ZZMM,COUNT(*)AS 人数人数 FROM XS
24、DAB GROUP BY BJBH,ZZMMHAVING ZZMM=团员团员“请注意本例子与上一个例子的区别:由于请注意本例子与上一个例子的区别:由于ZZMM有多种有多种值,而我们只想查询团员的信息,所以必须用值,而我们只想查询团员的信息,所以必须用HAVING子句。子句。3.3.2 连接查询连接查询 连接查询是指从多个表中查询数据,由于表和表连接查询是指从多个表中查询数据,由于表和表之间数据之间可能存在某种联系,所以需要之间数据之间可能存在某种联系,所以需要进行连接处理。进行连接处理。1.1.等值与非等值连接查询等值与非等值连接查询 连接表达式格式:连接表达式格式:1 2 2比较运算符:比较
25、运算符:=、=、=、!连接谓词形式:连接谓词形式:1 BETWEEN BETWEEN 2 AND AND 2 3例例3-35 3-35 查询成绩表并输出姓名和对应的成绩。查询成绩表并输出姓名和对应的成绩。因为成绩表中只有学号因为成绩表中只有学号(XH)(XH),没有姓名,没有姓名(XMXM),故只能在学生档案表中取学生姓名。),故只能在学生档案表中取学生姓名。SELECT XSDAB.XM AS 姓名姓名,XSCJB.CJ AS 成绩成绩 FROM XSDAB,XSCJBWHERE XSDAB.XH=XSCJB.XH由于由于XSDAB和和XSCJB各有各有XM和和CJ列,所以该句也列,所以该句
展开阅读全文