《数据库语言》PPT课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《数据库语言》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库语言》PPT课件.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3 数据库语言数据库语言SQL本章目标本章目标 本章主要介绍本章主要介绍SQL语言的基本语法和语言的基本语法和使用方式,要求熟练掌握使用方式,要求熟练掌握SQL语言的使用语言的使用规则,能够根据实际需求写出能够准确完规则,能够根据实际需求写出能够准确完成操作的成操作的SQL语句。语句。3.1 概述概述1.SQL的发展的发展1974年,由年,由Boyce和和Chamberlin提出提出19751979,IBM San Jose Research Lab的关系数据的关系数据库管理系统原型库管理系统原型System R实施实施了这种语言了这种语言SQL-86是第一是第一个个SQL标准标准SQL-89
2、、SQL-92(SQL2)、SQL-99(SQL3)2.现状现状大部分大部分DBMS产品都支持产品都支持SQL,成为操作数据库的标成为操作数据库的标准语言准语言有特殊性有特殊性,支持程度不同支持程度不同q 数据定义(数据定义(DDL)定义、删除、修改关系模式(基本表)定义、删除、修改关系模式(基本表)定义、删除视图(定义、删除视图(View)定义、删除索引(定义、删除索引(Index)q 数据操纵(数据操纵(DML)数据查询数据查询数据增、删、改数据增、删、改q 数据控制(数据控制(DCL)用户访问权限的授予、收回用户访问权限的授予、收回3.1.1 SQL的功能的功能q 交互式交互式SQL一般
3、一般DBMS都提供联机交互工具都提供联机交互工具用户可直接键入用户可直接键入SQL命令对数据库进行操作命令对数据库进行操作由由DBMS来进行解释来进行解释q 嵌入式嵌入式SQL能将能将SQL语句嵌入到高级语言(宿主语言)语句嵌入到高级语言(宿主语言)使应用程序充分利用使应用程序充分利用SQL访问数据库的能力、访问数据库的能力、宿主语言的过程处理能力宿主语言的过程处理能力一般需要预编译,将嵌入的一般需要预编译,将嵌入的SQL语句转化为宿语句转化为宿主语言编译器能处理的语句主语言编译器能处理的语句3.1.2 SQL的形式的形式q数据定义数据定义Create、Drop、Alterq数据操纵数据操纵数
4、据查询:数据查询:Select数据修改:数据修改:Insert、Update、Deleteq数据控制数据控制Grant、Revoke3.1.3 SQL的动词的动词数据查询数据查询是数据库应用的核心功能。是数据库应用的核心功能。v 基本结构:基本结构:Select A1,A2,.,AnFrom r1,r2,.,rmWhere P3.2 数据查询数据查询SelectWhereFromA1,A2,.,An(p(r1r1.rm)3.2.1 Select语句的含义语句的含义 对对 From 子句中的各关系,作笛卡儿积(子句中的各关系,作笛卡儿积()对对 Where 子句中的逻辑表达式进行选择(子句中的逻
5、辑表达式进行选择()运算,找出符合条件的元组。运算,找出符合条件的元组。根据根据 Select 子句中的属性列表,对上述结果作子句中的属性列表,对上述结果作投影(投影()操作。)操作。查询操作的对象是关系,结果还是一个关系,查询操作的对象是关系,结果还是一个关系,是一个结果集,是一个动态数据集。是一个结果集,是一个动态数据集。3.2.2 Select子句子句 对应于关系代数的投影(对应于关系代数的投影()运算,用以)运算,用以列出查询结果集中的期望属性。列出查询结果集中的期望属性。q 重复元组重复元组SQL 具有包的特性具有包的特性Select子句的缺省情况是保留重复元组子句的缺省情况是保留重
6、复元组(ALL),可用,可用 Distinct去除重复元组去除重复元组Select Distinct sdept From StudentSelect All sdept From Student去除重复元组去除重复元组:费时费时需要临时表的支持需要临时表的支持q *与属性列表与属性列表v 星号星号*表示所有属性表示所有属性星号星号*:按关系模式中属性的顺序排列,按关系模式中属性的顺序排列,并具有一定的逻辑数据独立性并具有一定的逻辑数据独立性显式列出属性名:显式列出属性名:按用户顺序排列按用户顺序排列Select*From StudentSelect Student.*,cno,grade F
7、rom Student,SC Where Student.sno=SC.snoq 更名更名为结果集中的某个属性改名为结果集中的某个属性改名使结果集更具可读性使结果集更具可读性Select sno as stu_no,cno as course_no,grade From SCSelect sno,sname,2001-sage as birthday From Student3.2.3 where子句子句where子句对应与关系代数中的选择子句对应与关系代数中的选择()。查询满足指定条件的元组可以通过查询满足指定条件的元组可以通过Where子句来实现。子句来实现。使使where子句中的逻辑表达
8、式返回子句中的逻辑表达式返回True值值的元组,是符合要求的元组,将被选择出的元组,是符合要求的元组,将被选择出来。来。q 运算符运算符比较:比较:、=、=、=、not+not+确定范围:确定范围:Between A and B、Not Between A and B 确定集合:确定集合:IN、NOT IN字符匹配:字符匹配:LIKE,NOT LIKE空空值值:IS NULL、IS NOT NULL多重条件:多重条件:AND、OR、NOT q like字符匹配:字符匹配:Like、Not Like通配符:通配符:%匹配任意字符串匹配任意字符串_ 匹配任意一个字符匹配任意一个字符大小写敏感大小写
9、敏感列出姓张的学生的学号、姓名。列出姓张的学生的学号、姓名。Select sno,sname From Student Where sname LIKE 张张%列出张姓且单名的学生的学号、姓名。列出张姓且单名的学生的学号、姓名。Select sno,sname From Student Where sname LIKE 张张_ _q 转义符转义符 escape 例:例:列出课程名称中带有列出课程名称中带有_的课号及课的课号及课名。名。Select cno,cnameFrom CourseWhere cname LIKE%_%escape 3.2.4 from子句子句From子句对应与关系代数中
10、的笛卡儿积(子句对应与关系代数中的笛卡儿积()列出将被扫描的关系(表)列出将被扫描的关系(表)例:例:列出所有学生的学号、姓名、课号、成绩。列出所有学生的学号、姓名、课号、成绩。Select Sudent.sno,sname,SC.cno,grade From Student,SC Where Student.sno=SC.snoq 元组变量元组变量为为 From 子句中的关系定义元组变量子句中的关系定义元组变量方便关系名的引用方便关系名的引用在同一关系的笛卡儿积中进行辨别在同一关系的笛卡儿积中进行辨别例:例:列出与列出与95001同岁的同学的学号,姓名,年龄。同岁的同学的学号,姓名,年龄。S
11、electT.sno,T.sname,T.sage FromStudent as T,Student as S WhereS.sno=95001 ANDT.sage=S.sage3.2.5 Order By子句子句指定结果集中元组的排列次序指定结果集中元组的排列次序耗时耗时ASC(缺省)、(缺省)、DESC、未选中的属性、未选中的属性例:例:列出列出CS系中的男生的学号、姓名、年龄,系中的男生的学号、姓名、年龄,并按年龄进行排列(升序)。并按年龄进行排列(升序)。Select sno,sname,sage From Student Where sdept=CS Order By sage AS
12、C 3.3 数据定义语言数据定义语言数据定义语言(数据定义语言(Data Definition Language)Create、Drop、Alter定义一组关系(基本表)、说明各关系的信息定义一组关系(基本表)、说明各关系的信息各关系的模式各关系的模式各属性的值域各属性的值域完整性约束完整性约束索引索引安全性和权限安全性和权限 3.3.1 SQL中的域类型中的域类型q 字符型字符型char(n)、varchar(n)q 数值型数值型integer、smallintnumeric(p,d)real、double、float(n)q 日期日期/时间型时间型datetime3.3.2 SQL中的域定
13、义中的域定义q 域定义语句(域定义语句(SQL-92支持)支持)需重复使用的需重复使用的Create Domain stu_name varchar(20)Create Domain zip_code char(6)q 域的删除域的删除Drop Domain datelog各各DBMS的方法是不同的的方法是不同的Restrict/Cascade使用该域的属性的处理使用该域的属性的处理 3.3.3 SQL中的模式定义中的模式定义 Create Table r (A1D1,A2D2,AnDn,)其中:其中:r 关系名(表名)、关系名(表名)、Ai 关系关系 r 的一个属性名的一个属性名Dn 属性属
14、性Ai域值的域类型域值的域类型主键声明:主键声明:primary key(Aj1,Aj2,Ajvm)Create Domain stu_name varchar(20)Create Table Student(sno char(10)primary key(sno),sname stu_name,sage smallint,ssex char(1),sdept char(2)Create Table Course(cno char(10)primary key(cno),cname varchar(20),credit smallint)Create Table SC(sno char(10)
15、not null,cno char(10)not null,grade smallint,primary key(sno,cno)Elelen Enmi胶原蛋白口服液买四赠一胶原蛋白口服液买四赠一 品牌正品情侣品牌正品情侣3.3.4 删除表结构删除表结构用用SQL删除关系(表)删除关系(表)将整个关系模式(表结构)彻底删除将整个关系模式(表结构)彻底删除表中的数据也将被删除表中的数据也将被删除Drop Table rDrop Table student3.3.5 修改表结构修改表结构q 删除表中的某属性删除表中的某属性去除属性及相应的数据去除属性及相应的数据Alter Table r Drop
16、 A q 增加表中的属性增加表中的属性向已经存在的表中添加属性向已经存在的表中添加属性allow null已有的元组中该属性的值被置为已有的元组中该属性的值被置为NullAlter Table r Add A DAlter Table student phone char(16)3.3.6 Default Value属性的默认值属性的默认值用户不提供某属性的值时,默认值被使用用户不提供某属性的值时,默认值被使用初始值初始值DDL中:中:ModifyDate char(30)Default TimeStampAlter Table student Add ID integer Default 1
17、0013.3.7 索引索引Index索引是一种数据结构,是对照表、指针表索引是一种数据结构,是对照表、指针表索引是为了加速对表中元组的检索而创建索引是为了加速对表中元组的检索而创建的一种分散存储结构(的一种分散存储结构(B树)树)索引是对表而建立的,由除存放表的数据索引是对表而建立的,由除存放表的数据页面以外的索引页面组成页面以外的索引页面组成索引是把双刃剑,减慢更新的速度索引是把双刃剑,减慢更新的速度索引不是索引不是SQL标准的要求标准的要求q 索引的种类索引的种类聚簇索引(聚簇索引(Clustered Index)非聚簇索引(非聚簇索引(Non-Clustered Index)q 聚簇索引
18、(聚簇索引(Clustered Index)表中的元组按聚簇索引的顺序物理地存放表中的元组按聚簇索引的顺序物理地存放根级页面根级页面-中间层页面中间层页面-叶级页面(数据页面)叶级页面(数据页面)一个表中只能有一个聚簇索引一个表中只能有一个聚簇索引更新的复杂性,需要大量的临时空间更新的复杂性,需要大量的临时空间q 非聚簇索引(非聚簇索引(Non-Clustered Index)表中的元组按聚簇索引的顺序物理地存放表中的元组按聚簇索引的顺序物理地存放根级页面根级页面-中间层页面中间层页面-叶级页面(数据页面)叶级页面(数据页面)一个表中只能有一个聚簇索引一个表中只能有一个聚簇索引更新的复杂性,需
19、要大量的临时空间更新的复杂性,需要大量的临时空间CREATE UNIQUE CLUSTERED|NONCLUSTEREDINDEX index-name On TableName(Column,Column,)Create Index YearIndex On Movie(year)Create Clustered Index SnoIndex On student(sno)Drop Index YearIndex3.4 数据添加数据添加v用用SQL的插入语句,向数据库表中添加数据的插入语句,向数据库表中添加数据按关系模式的属性顺序按关系模式的属性顺序Insert Into Student V
20、alues(0095001,张三张三,27,M,CS)按指定的属性顺序,也可以只添加部分属性(非按指定的属性顺序,也可以只添加部分属性(非Null属性为必需)属性为必需)Insert Into Student(sno,sname,sage)Values(0095002,李四李四,26)3.5 聚合函数聚合函数 把一列中的值进行聚合运算,返回单值的函数。把一列中的值进行聚合运算,返回单值的函数。v五个预定义的聚合函数五个预定义的聚合函数:平均值:平均值:Avg总和:总和:Sum最小值:最小值:Min最大值:最大值:Max计数:计数:CountCount(*)、Count(Distinct)数值数
21、值3.5.1 Group By将查询结果集按某一列或多列的值分组,值相将查询结果集按某一列或多列的值分组,值相等的为一组,一个分组以一个元组的形式出现。等的为一组,一个分组以一个元组的形式出现。只有出现在只有出现在Group By子句中的属性,才可出现子句中的属性,才可出现在在Select子句中。子句中。例:例:统计各系学生的人数。统计各系学生的人数。Select sdept,count(*)as stu_count From Student Group By sdept 3.5.2 Having针对聚合函数的结果值进行筛选(选择),针对聚合函数的结果值进行筛选(选择),它作用于分组计算结果集
22、。它作用于分组计算结果集。跟在跟在Group By子句的后面,没有子句的后面,没有Group By则则针对全表。针对全表。例:例:列出具有两门(含)以上不及格的学生列出具有两门(含)以上不及格的学生的学号、不及格的课目数。的学号、不及格的课目数。Select sno,count(sno)From SC Where grade=2 3.5.3 Having与与Where的区别的区别 Where 决定哪些元组被选择参加运算,决定哪些元组被选择参加运算,作用于关系中的元组。作用于关系中的元组。Having 决定哪些分组符合要求,作用决定哪些分组符合要求,作用于分组。于分组。聚合函数的条件关系必须用聚
23、合函数的条件关系必须用Having,Where中不应出现聚合函数。中不应出现聚合函数。3.5.4 聚合函数忽略聚合函数忽略NullCount:不计不计Sum:不将其计入不将其计入Avg:具有具有 Null 的元组不参与的元组不参与Max/Min:不参与不参与例:例:Select count(sdept)From Student Select Avg(sage)From Student 3.6 子查询子查询 子查询是嵌套在另一查询中的子查询是嵌套在另一查询中的 Select-From-Where 表达式(表达式(Where/Having)。)。SQL允许多层嵌套,由内而外地进行分析,允许多层嵌套
24、,由内而外地进行分析,子查询的结果作为父查询的查找条件。子查询的结果作为父查询的查找条件。可以用多个简单查询来构成复杂查询,以增可以用多个简单查询来构成复杂查询,以增强强SQL的查询能力。的查询能力。子查询中不使用子查询中不使用 Order By 子句,子句,Order By子句只能对最终查询结果进行排序。子句只能对最终查询结果进行排序。3.6.1 单值比较单值比较 返回单值的子查询,只返回一行一列返回单值的子查询,只返回一行一列父查询与单值子查询之间用比较运算符进行连接父查询与单值子查询之间用比较运算符进行连接运算符:运算符:、=、=、=、例:例:找出与找出与95001同龄的学生同龄的学生
25、Select*From Student Where sage=(Select sage From Student Where sno=95001)3.6.2 多值多值 子查询返回多行一列子查询返回多行一列 运算符:运算符:In、All、Some(Any)、Exists q in标量值与子查询返回集中的某一个相等,标量值与子查询返回集中的某一个相等,true in 被用来测试多值中的成员。被用来测试多值中的成员。例:例:查询选修查询选修C01课程的学生的学号、姓名。课程的学生的学号、姓名。Select sno,sname From Student Where sno IN (Select sno
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库语言 数据库 语言 PPT 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内