资源预览内容
第1页 / 共97页
第2页 / 共97页
第3页 / 共97页
第4页 / 共97页
第5页 / 共97页
第6页 / 共97页
第7页 / 共97页
第8页 / 共97页
第9页 / 共97页
第10页 / 共97页
亲,该文档总共97页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章 数据库语言SQL,概述,SQL的发展 1974年,由Boyce和Chamberlin提出 19751979,IBM San Jose Research Lab的关系数据库管理系统原型System R实施了这种语言 SQL-86是第一个SQL标准 SQL-89、SQL-92(SQL2)、SQL-99(SQL3),概述,现状 大部分DBMS产品都支持SQL,成为操作数据库的标准语言 有方言,支持程度不同,数据定义(DDL) 定义、删除、修改关系模式(基本表) 定义、删除视图(View) 定义、删除索引(Index) 数据操纵(DML) 数据查询 数据增、删、改 数据控制(DCL) 用户访问权限的授予、收回,概述SQL的功能,交互式SQL 一般DBMS都提供联机交互工具 用户可直接键入SQL命令对数据库进行操作 由DBMS来进行解释,概述SQL的形式,嵌入式SQL 能将SQL语句嵌入到高级语言(宿主语言) 使应用程序充分利用SQL访问数据库的能力、宿主语言的过程处理能力 一般需要预编译,将嵌入的SQL语句转化为宿主语言编译器能处理的语句,概述SQL的形式,数据定义 Create、Drop、Alter 数据操纵 数据查询:Select 数据修改:Insert、Update、Delete 数据控制 Grant、Revoke,概述SQL的动词,数据查询是数据库应用的核心功能 基本结构 Select A1, A2, ., AnFrom r1, r2, ., rmWhere P A1, A2, ., An(p(r1r1.rm),数据查询,Select语句的含义,对 From 子句中的各关系,作笛卡儿积() 对 Where 子句中的逻辑表达式进行选择()运算,找出符合条件的元组 根据 Select 子句中的属性列表,对上述结果作投影( )操作,Select语句的含义,结果集 查询操作的对象是关系,结果还是一个关系,是一个结果集,是一个动态数据集,Select子句,对应于关系代数的投影()运算,用以列出查询结果集中的期望属性,SQL具有包的特性 Select 子句的缺省情况是保留重复元组( ALL ),可用 Distinct 去除重复元组 Select Distinct sdept From Student Select All sdept From Student 去除重复元组:费时 需要临时表的支持,Select子句重复元组,Select子句 *与属性列表,星号 * 表示所有属性 星号 * :按关系模式中属性的顺序排列,并具有一定的逻辑数据独立性 显式列出属性名:按用户顺序排列 Select * From Student Select Student.*,cno,grade From Student,SC Where Student.sno = SC.sno,Select子句更名,为结果集中的某个属性改名 使结果集更具可读性 Select sno as stu_no,cno as course_no, grade From SC Select sno,sname,2001 - sage as birthday From Student,Where 子句,where子句对应与关系代数中的选择() 查询满足指定条件的元组可以通过Where子句来实现 使where子句中的逻辑表达式返回True值的元组,是符合要求的元组,将被选择出来,Where 子句运算符,比较:、=、=、not + 确定范围: Between A and B、Not Between A and B 确定集合:IN、NOT IN 字符匹配:LIKE,NOT LIKE 空值:IS NULL、IS NOT NULL 多重条件:AND、OR、NOT,Where 子句Like,字符匹配:Like、Not Like 通配符 % 匹配任意字符串 _ 匹配任意一个字符 大小写敏感,Where 子句Like,例:列出姓张的学生的学号、姓名。 Select sno,sname From Student Where sname LIKE 张%,Where 子句Like,例:列出张姓且单名的学生的学号、姓名。 Select sno,sname From Student Where sname LIKE 张_ _,Where 子句转义符 escape,例:列出课程名称中带有_的课号及课名。 Select cno,cname From Course Where cname LIKE %_% escape ,From 子句,From子句对应与关系代数中的笛卡儿积() 列出将被扫描的关系(表) 例:列出所有学生的学号、姓名、课号、成绩。 Select Sudent.sno,sname,SC.cno,grade From Student,SC Where Student.sno = SC.sno,From 子句元组变量,为 From 子句中的关系定义元组变量 方便关系名的引用 在同一关系的笛卡儿积中进行辨别 例:列出与95001同岁的同学的学号,姓名,年龄 SelectT.sno,T.sname,T.sage FromStudent as T,Student as S WhereS.sno = 95001 AND T.sage = S.sage,Order By子句,指定结果集中元组的排列次序 耗时 ASC(缺省)、DESC、未选中的属性 例:列出CS系中的男生的学号、姓名、年龄,并按年龄进行排列(升序) Select sno, sname,sage From Student Where sdept = CS Order By sage ASC,SQL的集合操作,SQL的结果集是“包” 多个 Select 语句的结果可以进行集合操作,使结果为“集合”(default) SQL-92支持 参加集合操作的关系(结果集)必须是相容的,SQL的集合操作相容,属性个数必须一致 对应的类型必须一致 属性名无关 最终结果集采用第一个结果的属性名 缺省为自动去除重复元组 除非显式说明ALL Order By放在整个语句的最后,SQL的集合操作并,union(并,对应与关系代数的),标准SQL都支持的 采用集合的观点,合成多个查询的结果 select - without - order by . UNION ALL select - without - order by . UNION ALL select - without - order by . . ORDER BY integer ASC | DESC , . ,例:查询计算机系的学生或者年龄不大于19岁的学生,并按年龄倒排序。,SQL的集合操作并,intersect(交,对应与关系代数的),并不是所有的DBMS都支持 例:查询计算机系的学生并且年龄不大于19岁的学生,并按年龄倒排序。,SQL的集合操作交,except(差,对应与关系代数的 -),并不是所有的DBMS都支持 例:查询计算机系的男生。,SQL的集合操作差,数据定义语言(Data Definition Language) Create、Drop、Alter 定义一组关系(基本表)、说明各关系的信息 各关系的模式 各属性的值域 完整性约束 索引 安全性和权限,数据定义语言(DDL),字符型 char(n) 、varchar(n) 数值型 integer、smallint numeric(p,d) real、double、float(n) 日期/时间型 date time,DDLSQL中的域类型,域定义语句(SQL-92支持) 需重复使用的 Create Domain stu_name varchar(20) Create Domain zip_code char(6),DDLSQL中的域类型,Create Table r (A1D1, A2D2, AnDn, , ) 其中: r 关系名(表名)、 Ai 关系 r 的一个属性名 Dn 属性Ai域值的域类型 主键声明: primary key (Aj1 ,Aj2 ,Ajvm ),DDLSQL的模式定义,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),DDLSQL的模式定义,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),DDLSQL的模式定义,用SQL删除关系(表) 将整个关系模式(表结构)彻底删除 表中的数据也将被删除 Drop Table r Drop Table student;,DDL删除表结构 Drop,删除表中的某属性 去除属性及相应的数据 Alter Table r Drop A,DDL修改模式 Alter,增加表中的属性 向已经存在的表中添加属性 allow null 已有的元组中该属性的值被置为Null Alter Table r Add A D Alter Table student phone char(16);,DDL修改模式 Alter,属性的默认值 用户不提供某属性的值时,默认值被使用 初始值 TimeStamp DDL中: ModifyDate char(30) Default TimeStamp; Alter Table student Add ID integer Default AutoIncrement;,DDL Default Value,定义一个新的域(用户定义的域) 需要重复使用的域 必须具有相同类型的属性 Create Domain As ; Create Domain datelog As char(30) default timestamp 域的删除 Drop Domain datelog 各DBMS的方法是不同的Restrict/Cascade 使用该域的属性的处理,DDL 域定义,索引是一种数据结构,是对照表、指针表 索引是为了加速对表中元组的检索而创建的一种分散存储结构(B树) 索引是对表而建立的,由除存放表的数据页面以外的索引页面组成 索引是把双刃剑,减慢更新的速度 索引不是SQL标准的要求,DDL 索引 Index,索引的种类 聚簇索引(Clustered Index) 非聚簇索引(Non-Clustered Index),DDL 索引 Index,聚簇索引(Clustered Index) 表中的元组按聚簇索引的顺序物理地存放 根级页面-中间层页面-叶级页面(数据页面) 一个表中只能有一个聚簇索引 更新的复杂性,需要大量的临时空间,DDL 索引 Index,非聚簇索引(Non-Clustered Index) 表中元组存储的物理顺序与索引的顺序无关 叶级索引页面是指向数据页面的指针 每个表可有多个非聚簇索引,DDL 索引 Index,CREATE UNIQUE CLUSTERED | NONCLUSTERED INDEX index-name On TableName(Column,Column,) Create Index YearIndex On Movie(year); Create Clustered Index SnoIndex On student(sno) ; Drop Index YearIndex;,DDL 索
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号