数据库语言SQL课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库语言SQL课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 语言 SQL 课件
- 资源描述:
-
1、3 数据库语言数据库语言SQLElelen Enmi胶原蛋白口服液买四赠一胶原蛋白口服液买四赠一 品牌正品情侣装品牌正品情侣装 亲子装全场包邮亲子装全场包邮 淘宝:淘宝:http:/ 本章主要介绍本章主要介绍SQL语言的基本语法和语言的基本语法和使用方式,要求熟练掌握使用方式,要求熟练掌握SQL语言的使用语言的使用规则,能够根据实际需求写出能够准确完规则,能够根据实际需求写出能够准确完成操作的成操作的SQL语句。语句。3.1 概述概述1.SQL的发展的发展 1974年,由年,由Boyce和和Chamberlin提出提出 19751979,IBM San Jose Research Lab的关系
2、数据的关系数据库管理系统原型库管理系统原型System R实施了这种语言实施了这种语言 SQL-86是第一个是第一个SQL标准标准 SQL-89、SQL-92(SQL2)、SQL-99(SQL3)2.现状现状 大部分大部分DBMS产品都支持产品都支持SQL,成为操作数据库的标,成为操作数据库的标准语言准语言 有特殊性,支持程度不同有特殊性,支持程度不同q 数据定义(数据定义(DDL)定义、删除、修改关系模式(基本表)定义、删除、修改关系模式(基本表)定义、删除视图(定义、删除视图(View)定义、删除索引(定义、删除索引(Index)q 数据操纵(数据操纵(DML)数据查询数据查询 数据增、删
3、、改数据增、删、改q 数据控制(数据控制(DCL)用户访问权限的授予、收回用户访问权限的授予、收回3.1.1 SQL的功能的功能q 交互式交互式SQL 一般一般DBMS都提供联机交互工具都提供联机交互工具 用户可直接键入用户可直接键入SQL命令对数据库进行操作命令对数据库进行操作 由由DBMS来进行解释来进行解释q 嵌入式嵌入式SQL 能将能将SQL语句嵌入到高级语言(宿主语言)语句嵌入到高级语言(宿主语言)使应用程序充分利用使应用程序充分利用SQL访问数据库的能力、访问数据库的能力、宿主语言的过程处理能力宿主语言的过程处理能力 一般需要预编译,将嵌入的一般需要预编译,将嵌入的SQL语句转化为
4、宿语句转化为宿主语言编译器能处理的语句主语言编译器能处理的语句3.1.2 SQL的形式的形式q数据定义数据定义Create、Drop、Alterq数据操纵数据操纵数据查询:数据查询: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
5、Select语句的含义语句的含义 对对 From 子句中的各关系,作笛卡儿积(子句中的各关系,作笛卡儿积()对对 Where 子句中的逻辑表达式进行选择(子句中的逻辑表达式进行选择()运算,找出符合条件的元组。运算,找出符合条件的元组。根据根据 Select 子句中的属性列表,对上述结果作子句中的属性列表,对上述结果作投影(投影()操作。)操作。查询操作的对象是关系,结果还是一个关系,查询操作的对象是关系,结果还是一个关系,是一个结果集,是一个动态数据集。是一个结果集,是一个动态数据集。3.2.2 Select子句子句 对应于关系代数的投影(对应于关系代数的投影()运算,用以)运算,用以列出查
6、询结果集中的期望属性。列出查询结果集中的期望属性。q 重复元组重复元组 SQL 具有包的特性具有包的特性 Select子句的缺省情况是保留重复元组子句的缺省情况是保留重复元组(ALL),可用可用 Distinct去除重复元组去除重复元组 Select Distinct sdept From Student Select All sdept From Student 去除重复元组去除重复元组:费时费时 需要临时表的支持需要临时表的支持q *与属性列表与属性列表v 星号星号 *表示所有属性表示所有属性 星号星号 *:按关系模式中属性的顺序排列,按关系模式中属性的顺序排列,并具有一定的逻辑数据独立性
7、并具有一定的逻辑数据独立性 显式列出属性名:显式列出属性名:按用户顺序排列按用户顺序排列Select*From StudentSelect Student.*,cno,grade From 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子句子句 wh
8、ere子句对应与关系代数中的选择子句对应与关系代数中的选择()。查询满足指定条件的元组可以通过查询满足指定条件的元组可以通过Where子句来实现。子句来实现。使使where子句中的逻辑表达式返回子句中的逻辑表达式返回True值值的元组,是符合要求的元组,将被选择的元组,是符合要求的元组,将被选择出来。出来。q 运算符运算符 比较:比较:、=、=、=、not+not+确定范围:确定范围:Between A and B、Not Between A and B 确定集合:确定集合:IN、NOT IN 字符匹配:字符匹配:LIKE,NOT LIKE 空值:空值:IS NULL、IS NOT NULL
9、多重条件:多重条件:AND、OR、NOT q like字符匹配:字符匹配:Like、Not Like通配符:通配符:%匹配任意字符串匹配任意字符串_ 匹配任意一个字符匹配任意一个字符大小写敏感大小写敏感 列出姓张的学生的学号、姓名。列出姓张的学生的学号、姓名。Select sno,sname From Student Where sname LIKE 张张%列出张姓且单名的学生的学号、姓名。列出张姓且单名的学生的学号、姓名。Select sno,sname From Student Where sname LIKE 张张_ _q 转义符转义符 escape例:例:列出课程名称中带有列出课程名称
10、中带有_的课号及课的课号及课名。名。Select cno,cnameFrom CourseWhere cname LIKE%_%escape 3.2.4 from子句子句 From子句对应与关系代数中的笛卡儿积(子句对应与关系代数中的笛卡儿积()列出将被扫描的关系(表)列出将被扫描的关系(表)例:例:列出所有学生的学号、姓名、课号、成绩。列出所有学生的学号、姓名、课号、成绩。Select Sudent.sno,sname,SC.cno,grade From Student,SC Where Student.sno=SC.snoq 元组变量元组变量 为为 From 子句中的关系定义元组变量子句中
11、的关系定义元组变量 方便关系名的引用方便关系名的引用 在同一关系的笛卡儿积中进行辨别在同一关系的笛卡儿积中进行辨别例:例:列出与列出与95001同岁的同学的学号,姓名,年龄。同岁的同学的学号,姓名,年龄。SelectT.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系中的男生的学号、姓名、年龄,系
12、中的男生的学号、姓名、年龄,并按年龄进行排列(升序)。并按年龄进行排列(升序)。Select sno,sname,sage From Student Where sdept=CS Order By sage ASC 3.3 数据定义语言数据定义语言 数据定义语言(数据定义语言(Data Definition Language)Create、Drop、Alter 定义一组关系(基本表)、说明各关系的信息定义一组关系(基本表)、说明各关系的信息 各关系的模式各关系的模式 各属性的值域各属性的值域 完整性约束完整性约束 索引索引 安全性和权限安全性和权限 3.3.1 SQL中的域类型中的域类型q 字
13、符型字符型 char(n)、varchar(n)q 数值型数值型 integer、smallint numeric(p,d)real、double、float(n)q 日期日期/时间型时间型 date time3.3.2 SQL中的域定义中的域定义q 域定义语句(域定义语句(SQL-92支持)支持)需重复使用的需重复使用的 Create Domain stu_name varchar(20)Create Domain zip_code char(6)q 域的删除域的删除 Drop Domain datelog 各各DBMS的方法是不同的的方法是不同的Restrict/Cascade 使用该域的
14、属性的处理使用该域的属性的处理 3.3.3 SQL中的模式定义中的模式定义 Create Table r (A1D1,A2D2,AnDn,)其中:其中:r 关系名(表名)、关系名(表名)、Ai 关系关系 r 的一个属性名的一个属性名Dn 属性属性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),sd
15、ept char(2)Create Table Course(cno char(10)primary key(cno),cname varchar(20),credit smallint)Create Table SC(sno char(10)not null,cno char(10)not null,grade smallint,primary key(sno,cno)Elelen Enmi胶原蛋白口服液买四赠一胶原蛋白口服液买四赠一 品牌正品情侣品牌正品情侣装装 亲子装全场包邮亲子装全场包邮 淘宝:淘宝:http:/ 删除表结构删除表结构 用用SQL删除关系(表)删除关系(表)将整个关系模
16、式(表结构)彻底删除将整个关系模式(表结构)彻底删除 表中的数据也将被删除表中的数据也将被删除Drop Table rDrop Table student3.3.5 修改表结构修改表结构q 删除表中的某属性删除表中的某属性 去除属性及相应的数据去除属性及相应的数据Alter Table r Drop A q 增加表中的属性增加表中的属性 向已经存在的表中添加属性向已经存在的表中添加属性 allow null 已有的元组中该属性的值被置为已有的元组中该属性的值被置为NullAlter Table r Add A DAlter Table student phone char(16)3.3.6 D
17、efault Value 属性的默认值属性的默认值 用户不提供某属性的值时,默认值被使用用户不提供某属性的值时,默认值被使用 初始值初始值 DDL中:中:ModifyDate char(30)Default TimeStampAlter Table student Add ID integer Default 10013.3.7 索引索引Index 索引是一种数据结构,是对照表、指针表索引是一种数据结构,是对照表、指针表 索引是为了加速对表中元组的检索而创建索引是为了加速对表中元组的检索而创建的一种分散存储结构(的一种分散存储结构(B树)树)索引是对表而建立的,由除存放表的数据索引是对表而建立
18、的,由除存放表的数据页面以外的索引页面组成页面以外的索引页面组成 索引是把双刃剑,减慢更新的速度索引是把双刃剑,减慢更新的速度 索引不是索引不是SQL标准的要求标准的要求q 索引的种类索引的种类 聚簇索引(聚簇索引(Clustered Index)非聚簇索引(非聚簇索引(Non-Clustered Index)q 聚簇索引(聚簇索引(Clustered Index)表中的元组按聚簇索引的顺序物理地存放表中的元组按聚簇索引的顺序物理地存放 根级页面根级页面-中间层页面中间层页面-叶级页面(数据页面)叶级页面(数据页面)一个表中只能有一个聚簇索引一个表中只能有一个聚簇索引 更新的复杂性,需要大量的
19、临时空间更新的复杂性,需要大量的临时空间q 非聚簇索引(非聚簇索引(Non-Clustered Index)表中的元组按聚簇索引的顺序物理地存放表中的元组按聚簇索引的顺序物理地存放 根级页面根级页面-中间层页面中间层页面-叶级页面(数据页面)叶级页面(数据页面)一个表中只能有一个聚簇索引一个表中只能有一个聚簇索引 更新的复杂性,需要大量的临时空间更新的复杂性,需要大量的临时空间CREATE UNIQUE CLUSTERED|NONCLUSTEREDINDEX index-name On TableName(Column,Column,)Create Index YearIndex On Mov
20、ie(year)Create Clustered Index SnoIndex On student(sno)Drop Index YearIndex3.4 数据添加数据添加v 用用SQL的插入语句,向数据库表中添加数据的插入语句,向数据库表中添加数据 按关系模式的属性顺序按关系模式的属性顺序Insert Into Student Values(0095001,张三张三,27,M,CS)按指定的属性顺序,也可以只添加部分属性(非按指定的属性顺序,也可以只添加部分属性(非Null属性为必需)属性为必需)Insert Into Student(sno,sname,sage)Values(00950
21、02,李四李四,26)3.5 聚合函数聚合函数 把一列中的值进行聚合运算,返回单值的函数。把一列中的值进行聚合运算,返回单值的函数。v五个预定义的聚合函数五个预定义的聚合函数:平均值:平均值:Avg 总和:总和:Sum 最小值:最小值:Min 最大值:最大值:Max 计数:计数:CountCount(*)、Count(Distinct)数值数值3.5.1 Group By 将查询结果集按某一列或多列的值分组,值相将查询结果集按某一列或多列的值分组,值相等的为一组,一个分组以一个元组的形式出现。等的为一组,一个分组以一个元组的形式出现。只有出现在只有出现在Group By子句中的属性,才可出现子
22、句中的属性,才可出现在在Select子句中。子句中。例:例:统计各系学生的人数。统计各系学生的人数。Select sdept,count(*)as stu_count From Student Group By sdept 3.5.2 Having 针对聚合函数的结果值进行筛选(选择),针对聚合函数的结果值进行筛选(选择),它作用于分组计算结果集。它作用于分组计算结果集。跟在跟在Group By子句的后面,没有子句的后面,没有Group By则则针对全表。针对全表。例:例:列出具有两门(含)以上不及格的学生列出具有两门(含)以上不及格的学生的学号、不及格的课目数。的学号、不及格的课目数。Sel
23、ect sno,count(sno)From SC Where grade=2 3.5.3 Having与与Where的区别的区别 Where 决定哪些元组被选择参加运算,决定哪些元组被选择参加运算,作用于关系中的元组。作用于关系中的元组。Having 决定哪些分组符合要求,作用决定哪些分组符合要求,作用于分组。于分组。聚合函数的条件关系必须用聚合函数的条件关系必须用Having,Where中不应出现聚合函数。中不应出现聚合函数。3.5.4 聚合函数忽略聚合函数忽略Null Count:不计不计 Sum:不将其计入不将其计入 Avg:具有具有 Null 的元组不参与的元组不参与 Max/Min
24、:不参与不参与例:例:Select count(sdept)From Student Select Avg(sage)From Student 3.6 子查询子查询 子查询是嵌套在另一查询中的子查询是嵌套在另一查询中的 Select-From-Where 表达式(表达式(Where/Having)。)。SQL允许多层嵌套,由内而外地进行分析,允许多层嵌套,由内而外地进行分析,子查询的结果作为父查询的查找条件。子查询的结果作为父查询的查找条件。可以用多个简单查询来构成复杂查询,以增可以用多个简单查询来构成复杂查询,以增强强SQL的查询能力。的查询能力。子查询中不使用子查询中不使用 Order B
25、y 子句,子句,Order By子句只能对最终查询结果进行排序。子句只能对最终查询结果进行排序。3.6.1 单值比较单值比较 返回单值的子查询,只返回一行一列返回单值的子查询,只返回一行一列 父查询与单值子查询之间用比较运算符进行连接父查询与单值子查询之间用比较运算符进行连接 运算符:运算符:、=、=、=、例:例:找出与找出与95001同龄的学生同龄的学生 Select*From Student Where sage=(Select sage From Student Where sno=95001)3.6.2 多值多值 子查询返回多行一列子查询返回多行一列 运算符:运算符:In、All、So
展开阅读全文