数据库系统原理及应用 丁忠俊 第三章 关系DB的标准语言SQL.ppt
《数据库系统原理及应用 丁忠俊 第三章 关系DB的标准语言SQL.ppt》由会员分享,可在线阅读,更多相关《数据库系统原理及应用 丁忠俊 第三章 关系DB的标准语言SQL.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第三章第三章 关系关系DB的标准语言的标准语言SQLSQL的数据定义:基本表的数据定义:基本表,视图视图,索引索引SQL的数据查询(重点)的数据查询(重点)SQL的数据更新的数据更新内容:内容:第一节第一节SQL(Structured Query Language)基本简介)基本简介 SQL起源于起源于1974年,作为关系年,作为关系DB的标准语言,用于:的标准语言,用于:ORACLE,SQL/DB,DB2等中。等中。标准版本:标准版本:SQL89SQL2(92年)年)SQL3(正在修改)。(正在修改)。一、一、SQL的特点的特点1.1.集集DBDB定定义义,操,操纵纵,控制功能于一体。,控
2、制功能于一体。2.2.高度非高度非过过程化。程化。3.3.面向集合的操作方式。面向集合的操作方式。4.4.提供两种用方式:交互式和嵌入式。提供两种用方式:交互式和嵌入式。5.5.语语言言简洁简洁,易学易用。,易学易用。二、二、SQL结构结构 基本表(基本表(Base Table)关系模式关系模式支持支持DB的三级模式的结构:的三级模式的结构:视图(视图(View)子模式子模式 存储文件(存储文件(Stored File)存储模式存储模式其中:元组称为行(其中:元组称为行(row),属性称为列(),属性称为列(column)。)。(1)SQL中的基本表对应中的基本表对应DB中的一个关系,一行对应
3、一个元组,一列对中的一个关系,一行对应一个元组,一列对 应一个属性值域。应一个属性值域。(2)SQL中的视图由基本表或视图导出;基本表是实际存储在中的视图由基本表或视图导出;基本表是实际存储在DB中的表中的表,视图是虚表,它的数据仍在导出的基本表中,它的定义存在数据字典中。视图是虚表,它的数据仍在导出的基本表中,它的定义存在数据字典中。(3)一个基本表可以跨一个或多个存储文件,一个存储文件也可以存放一)一个基本表可以跨一个或多个存储文件,一个存储文件也可以存放一 个或多个基本表;每一个存储文件对应外存上一个物理文件。个或多个基本表;每一个存储文件对应外存上一个物理文件。(4)用户可用)用户可用
4、SQL语句对视图和基本表作查询等操作。在用户来看视图与语句对视图和基本表作查询等操作。在用户来看视图与 基本表都是关系。基本表都是关系。(5)SQL的语句既可交互使用,也可嵌套到宿主语言的程序中使用。的语句既可交互使用,也可嵌套到宿主语言的程序中使用。结构要点:结构要点:三、三、SQL的构成的构成数据定义(数据定义(SQL DDL):用于定义基本表、视图、索引等。):用于定义基本表、视图、索引等。数据操纵(数据操纵(SQL DML):用于对):用于对DB的查询和更新等操作。的查询和更新等操作。数据控制:包括对基本表和视图的授权,数据控制:包括对基本表和视图的授权,完整性规则的完整性规则的 描述
5、、事务控制等。描述、事务控制等。嵌入式嵌入式SQL的使用规定。的使用规定。4个部分个部分构成:构成:第二节第二节 SQL的数据定义的数据定义包括:定义和撤消包括:定义和撤消基本表(基本表(table)视图(视图(view)索引(索引(index)完整性约束完整性约束一、基本表的创建、修改和撤消一、基本表的创建、修改和撤消1SQL提供的主要数据类型提供的主要数据类型(1)数值型)数值型 (2)字符串型)字符串型 INTEGER(或(或INT)长整型)长整型 CHAR(n)长度为)长度为n的定长字符串的定长字符串 SMALLINT 短整型短整型 VARCHAR(n)具有最大长度)具有最大长度n R
6、EAL 浮点型(取决于机器)浮点型(取决于机器)可变字符串可变字符串 FLOAT(n)浮点型精度为浮点型精度为n位位 NCMERIC(P,d)定点数(定点数(p位数字,位数字,小数点后小数点后d位)位)(3)位串型)位串型 (4)时间型)时间型 BIT(N)长度为)长度为N的二进制的往事。的二进制的往事。DATE 日期:日期:YYYYMMDD TIME 时间:时:分:秒时间:时:分:秒HH:MM:SS算术操作仅限于数值型的数据。算术操作仅限于数值型的数据。2基本表的创建,修改和撤消基本表的创建,修改和撤消(1)创建基本表)创建基本表 句型:句型:Create Table基本表名(列名基本表名(
7、列名 类型类型 列完整性约束列完整性约束,)主关键字子(主关键字子(PRIMARY KEY)其中:完整性约束定义其中:完整性约束定义 有三种子句:有三种子句:检查子句检查子句 (CHECK)外关键字子句(外关键字子句(FOREIGN KEY)例:教学例:教学DB中有三个关系模式:中有三个关系模式:S(sno,sname,sex,age,dept)Sc(sno,cno,grade)C(cno,cname,credit)定义其基本表。定义其基本表。Create table s(sno CHAR(5)NOT NULL UNIQUE,sname CHAR(8),),sex CHAR(2),),age
8、INT,dept CHAR(6)primary KEY(sno));Create table sc(sno CHAR(5),cno CHAR(4),grade SMALLINT,PRIMARY KEY(sno,cno),),FOREIGN KEY(cno)REFERENCES C(cno),),FOREIGN KEY(sno)REFERENCES S(sno),),CHECK ((grade IS NULL)OR (grade BETWEEN 0 AND 100));其基本表定义如下:其基本表定义如下:表表C定义略定义略(2)基本表结构的修改)基本表结构的修改增加新的属性:增加新的属性:ALT
9、ER TABLE 基本表名基本表名 ADD 列名列名 类型类型 例:例:ALTER TABLE S ADD PHON CHAR(8)删除原有的属性删除原有的属性:ALTER TABLE 基本表名基本表名 DROP CASCADE|RESTRICT 其中:其中:CASCADE:所有引用该列的视图和约束也要一起被删除。所有引用该列的视图和约束也要一起被删除。RESTRICT:只有视图和约束没有引用该属性时,才能删除,:只有视图和约束没有引用该属性时,才能删除,否则拒绝。否则拒绝。例:例:ALTER TABLE S DROP age CASCADE;(3)基本表的撤消)基本表的撤消 句型:句型:DR
10、OP TABLE 基本表名;基本表名;例:例:DROP TABLE S;三、视图的创建与撤消三、视图的创建与撤消 视图:外模式(子模式):由基本表或其它已建视图构造出视图:外模式(子模式):由基本表或其它已建视图构造出的表。的表。(1)视图的创建)视图的创建 句型:句型:Create View 视图名(列名表)视图名(列名表)AS SELECT 查询子句查询子句 例:若用户经常用到例:若用户经常用到sno,sname,cname和和grade信息,则建立视信息,则建立视图供查询图供查询 Create View Sg(sno,sname,cname,grade)As select ssno,sn
11、ame,cname,grade from s,sc,c where ssno=scsno And o=o;(2)视图撤消)视图撤消句型:句型:DROP View 视图名视图名四、索引的创建及撤消四、索引的创建及撤消 建立索引的目的,加快对关系的查找。(浪费外存空间)建立索引的目的,加快对关系的查找。(浪费外存空间)在基本表上可建立一个或多个索引,索引存在存储文件中称索引文件。在基本表上可建立一个或多个索引,索引存在存储文件中称索引文件。句型:句型:Create UNIQUE INDEX 索引名索引名 ON 基本表名(列名)基本表名(列名)例:例:Create index SI ON S(sno
12、)按)按sno升序排列升序排列 Create Unique index SI ON S(sno););sno中值对应唯一的记录值中值对应唯一的记录值 Create Unique index SCI ON SC(sno ASC,cno DESC)索引定义的结构存在数据字典库中,学号按升序排列,索引定义的结构存在数据字典库中,学号按升序排列,CNO值按降序排列。值按降序排列。索引的撤消:索引的撤消:DROPindex 索引名索引名例:例:DROP index SI;第三节第三节 SQL的数据查询的数据查询数据查询是数据查询是DB中最重要,最基本的操作。查询操作是更新操作的基础。中最重要,最基本的操
13、作。查询操作是更新操作的基础。查询功能的强弱直接影响查询功能的强弱直接影响DB使用性能。使用性能。一、一、select查询语句的句型查询语句的句型 select目标表的属性名或目标列表达式目标表的属性名或目标列表达式 from表名或视图名表名或视图名 from子句子句 where行条件表达式行条件表达式 行条件子句行条件子句 group by列名列名1having条件表达式条件表达式 列条件子句列条件子句 order by列名列名2asc|desc 排序子句排序子句执行过程执行过程根据根据where子句的条件表达式,从子句的条件表达式,从from子句指定的基本表或视图中找出满足条件子句指定的基
14、本表或视图中找出满足条件的元组,再按的元组,再按select子句中的目标列表达式,选出元组中的属性值形成结果表。子句中的目标列表达式,选出元组中的属性值形成结果表。如果有如果有group子句,将结果按子句,将结果按列名列名1的值进行分组,列值相等的元组分为一组,的值进行分组,列值相等的元组分为一组,每一组会产生结果表中的一条记录。每一组会产生结果表中的一条记录。having子句将满足条件的组给出输出。子句将满足条件的组给出输出。order子句对输出的目标表按子句对输出的目标表按asc升序或升序或desc降序排列。降序排列。select基本句型基本句型 select A1,A2,An (属性名(
15、属性名Ai)from R1,R2,Rn(关系名或视图名(关系名或视图名Ri)A1,A2,An A1,A2,An(F F (R1(R1 R2R2 RnRn)where F (逻辑表达式(逻辑表达式F)其中:其中:F可使用以下运算符可使用以下运算符算术比较符:算术比较符:,=,=,或!或!=逻辑符:逻辑符:AND,OR,NOT集合运算符:集合运算符:union(并),(并),intersect(交),(交),except(差),(差),IN(属于)(属于)谓词:谓词:exists(存在量词),(存在量词),all,any(some),unique(唯一),(唯一),LIKEF,中还可以是,中还可以
16、是select子句(嵌套)子句(嵌套)使用的函数:使用的函数:avg(列名):求平均值(列名):求平均值 min(列名):求最小值(列名):求最小值 max(列名):求最大值(列名):求最大值 sum(列名):求和(列名):求和 count(列名):求列中值的个数(列名):求列中值的个数 count(*):求元组个数):求元组个数二、二、SELSCT语句的使用语句的使用 单表查询单表查询 多表关联查询(嵌套查询)多表关联查询(嵌套查询)集合查询集合查询1、单表查询、单表查询例:教学例:教学DB三个基本表:三个基本表:s(sno,sname,sex,age,dept):学号,姓名,性别,年龄,系
17、名):学号,姓名,性别,年龄,系名 c(cno,cname,pno,credit):课号,课名,先修课名,学分:课号,课名,先修课名,学分 sc(sno,cno,grade):学号,课号,成绩:学号,课号,成绩列上查询列上查询例例1:查询学生的学号,姓名和系名:查询学生的学号,姓名和系名 select sno,sname,dept from s;例例2:查询全部学生的详细情况:查询全部学生的详细情况 select *from s;例例3:查询全部学生的姓名及出生年份:查询全部学生的姓名及出生年份 select sname,2003-age from s;结果:结果:sname 2003-age
18、 李一李一 1981 刘二刘二 1982 王三王三 1983例例4:查询全部学生的姓名,出生年份和系名:查询全部学生的姓名,出生年份和系名要求:指定别名改变查询结果的列标题要求:指定别名改变查询结果的列标题select sname NAME,2003-age BIRTHDAY,ISLOWER(dept)DEPARTMENTfrom s;结果:结果:NAME BIRTHDAY DEPARTMENT李一李一 1981 cs刘二刘二 1982 is王三王三 1983 ma行上查询行上查询例例1:查询所有选修课程的学生的学号。:查询所有选修课程的学生的学号。Select distinct sno fr
19、om SC;例例2:查找成绩不及格的学生的学号及课号。:查找成绩不及格的学生的学号及课号。select distinct sno,cnofrom scwhere grade=90 AND grade3;(结果分组查询)(结果分组查询)Sno Cno dept 1 1 IS 1 2 IS 1 3 IS 1 4 IS 2 1 IS 2 2 IS 2 3 IS 2 4 IS2、关联查询、关联查询多个表联接查询多个表联接查询等值与非等值的连接查询等值与非等值的连接查询a等值连接查询:等值连接查询:b笛卡尔积的连接笛卡尔积的连接 c自然连接自然连接Select s,sc select s,sc sele
20、ct sno,sname,sex,dept,cno,gradefrom s,sc from s,sc from s,sc where ssno=sc sno where s sno=sc snoSnosnamesexagedept200012000220003王一王一刘二刘二李三李三男男女女男男191820CSISMA设:设:SnoCno grade2000120001200012000220002123238085908090SSCa、等值连接结果:、等值连接结果:SSnoSnamesexagedeptSCSnoCnograde2000120001200012000220002王一王一王一王
21、一王一王一刘二刘二刘二刘二男男男男男男女女女女1919191818CSCSCSISIS2000120001200012000220002123238085908090b、笛卡尔积连接结果产生:、笛卡尔积连接结果产生:35=15个元组,产生无意义的元组,因此,个元组,产生无意义的元组,因此,该连接很少使用。该连接很少使用。c、自然连接的结果,只是去掉重复的、自然连接的结果,只是去掉重复的sno.sno sname sex dept cno grade 自身连接自身连接例:查找至少选择选修课程号为例:查找至少选择选修课程号为“1”号和为号和为“2”号的学生的学号。号的学生的学号。select xs
22、no from SC x,SC ywhere xsno=ysno AND xcno=1 AND ycno=2;结果:结果:xsno 20001外连接外连接 为外连接符(或为外连接符(或+):它可将一些为空值列连接到结果表中。):它可将一些为空值列连接到结果表中。将将中中C改写为外连接改写为外连接select sno,sname,sex,dept,cno,gradefrom s,scwhere ssno=scsno();注:注:*出现连接符的右边称左外连接出现连接符的右边称左外连接 *出现连接符的左边称右外连接出现连接符的左边称右外连接snosnamesexdeptcnograde2000120
23、00120001200022000220003王一王一王一王一王一王一刘二刘二刘二刘二李三李三男男 男男男男女女女女男男CSCSCSISISMA123238085908090结果:结果:嵌套结构的查询嵌套结构的查询例:查询选修课程号为例:查询选修课程号为“2”的学生姓名与学号的学生姓名与学号a.Select ssno,ssname (涉及表(涉及表s和和sc连接查找):连接查找):from s,sc s(sno,sname,sex,age,dept)where ssno=scsno AND cno=2;sc(sno,cno,grade)b.写法:写法:Select sno,sname(嵌套查询
24、结构)(嵌套查询结构)from s where sno IN(select sno from sc where cno=2);注:嵌套结构层次分明,具有结构化程序设计特点注:嵌套结构层次分明,具有结构化程序设计特点 嵌套结构比不嵌套结构查询效率高(因先作选择)嵌套结构比不嵌套结构查询效率高(因先作选择)子查询中不能出现子查询中不能出现order by子句,即不能针对子查询排序。子句,即不能针对子查询排序。c.写法(使用存在量词的嵌套查询)写法(使用存在量词的嵌套查询)select sno,sname from s where EXISTS(select from SC where SCSno=
25、SSno AND Cno=2);例:查找选修了课程名为例:查找选修了课程名为“信息系统信息系统”的学生学号与姓名的学生学号与姓名 select sno,sname from s where sno IN (select sno from sc where cno IN (select cno from c where(cname=信息系统信息系统);涉及:三个表:涉及:三个表:s(sno,sname,sex,age,dept)sc(sno,cno,grade)c(cno,cname,pno,credit)例:查找其他系中比例:查找其他系中比IS系任何学生年龄小的学生名单系任何学生年龄小的学生名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库系统原理及应用 丁忠俊 第三章 关系DB的标准语言SQL 数据库 系统 原理 应用 第三 关系 DB 标准 语言 SQL
限制150内