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