数据库原理ch03关系数据库语言.ppt
《数据库原理ch03关系数据库语言.ppt》由会员分享,可在线阅读,更多相关《数据库原理ch03关系数据库语言.ppt(109页珍藏版)》请在课桌文档上搜索。
1、第3章 关系数据库语言SQL,2,目录 Contents,3.1 数据库的用户接口3.2 SQL语言概况3.3 SQL数据定义语言3.4 SQL数据查询语言3.5 SQL数据操纵语言3.6 SQL中的视图3.7 嵌入式SQL,3,3.1 数据库的用户接口,一、数据库操作与数据库语言数据库操作包括:数据定义在数据库中创建、撤销、修改数据模式。数据查询在数据库中查询检索所需的数据。数据操纵也称更新数据在数据库中增加、删除、修改数据。数据控制控制用户对数据库中数据的访问权限。,4,3.1 数据库的用户接口,一、数据库操作与数据库语言数据库语言:DBMS提供的语言,以支持用户进行数据库操作。包括:数据
2、定义语言(Data Definition Language,DDL)定义、撤销和修改数据模式基表/视图,索引/簇集查询语言(Query Language,QL)查询数据数据操纵语言(Data Manipulation Language,DML)数据的插入/删除/修改,简单的数值计算与统计功能数据控制语言(Data Control Language,DCL)数据的完整性、安全性、并发控制、故障恢复等,5,3.1 数据库的用户接口,一、数据库操作与数据库语言数据库语言的特点面向记录(record-oriented)与面向集合(set-oriented)嵌入式(embedded)和交互式(inter
3、active)过程性(procedural)与说明性(declarative),6,3.1 数据库的用户接口,数据库语言的特点1面向记录(record-oriented)与面向集合(set-oriented)早期的数据库操作(e.g.层次、网状数据库)是使用物理指针的导航式访问(navigational access),一次操作一个记录(one record one time),操作过程繁琐,效率低下。相应的数据库语言称面向记录的语言(record-oriented language)。关系数据库使用联想式访问(associative access),即按数据的内容访问数据(按属性值选取数据)
4、,一次操作得到一个记录的集合。相应的数据库语言称面向集合的语言(set-oriented language)。,7,3.1 数据库的用户接口,数据库语言的特点2嵌入式(embedded)和交互式(interactive)数据库语言往往不是计算完备(computing complete)的语言。要实现数据“管理”与“计算”的集成,可以将数据库语言嵌入(embeding)到高级语言(e.g.PASCAL,C,FORTRAN),称宿主语言(host language)中。因此,数据库语言就有两种:嵌入式和交互式。,8,3.1 数据库的用户接口,数据库语言的特点3过程性(procedural)与说明性
5、(declarative)早期的数据库语言(e.g.层次、网状数据库)是过程性的,使用这样的语言进行数据库操作,程序员的负担很重;而且编写的应用程序与数据的独立性(independence)很差、可维护性很差。关系数据库提供了非过程性(non-procedural)语言即说明性语言(只要告诉DBMS“What to do?”)。但某些过程性机制(e.g.存储过程(stored procedure)、计算流程控制,etc.)对方便用户、提高数据库性能是很有用的。因此,关系数据库语言(e.g.SQL)后来又进行了过程化扩充,作为可选项提供给用户。,9,3.1 数据库的用户接口,二、用户接口与前端开
6、发工具用户接口(user interface)是DBMS提供给用户操作数据库的界面。用户接口将用户对数据库的操作请求以数据库语言的形式提交给系统,并接受系统的处理结果、将结果返回给用户。用户接口提供了两种操作数据库的方式:交互方式和批处理方式(即编写应用程序)。用户接口风格可有:文本的和GUI。前端开发工具(front-end development tools)DBMS厂商或第三方提供的数据库应用集成化开发工具(e.g.ORACLE Developer/2000,PowerBuilder)。,10,目录 Contents,3.1 数据库的用户接口3.2 SQL语言概况3.3 SQL数据定义语
7、言3.4 SQL数据查询语言3.5 SQL数据操纵语言3.6 SQL中的视图3.7 嵌入式SQL,11,3.2 SQL语言概况,一、SQL的历史SEQUEL(Structured English QUEry Language),(IBM System R,Boyce and Chamberlin proposed,1974)SQL-86(SQL1,Standard Query Language),(ANSI,1986)SQL-89(ANSI/ISO,1989)SQL-92(SQL2),(ANSI/ISO,1992)SQL-93(ANSI/ISO,1993)SQL-99(SQL3),(ANSI/
8、ISO,1999)SQL-2008S 标准化:按照英语的结构要求设计,可以嵌套Q 查询:以查询为主,包括增删改等功能L 语言:第四代非过程式描述性语言,12,3.2 SQL语言概况,二、SQL的特点非过程化的说明性语言嵌入式和交互式相同/相似语法的语言一体化的统一语言关系数据库的公共语言English-like、简单易学的语言,13,3.2 SQL语言概况,三、SQL标准与实现ISO的SQL标准SQL-89、SQL2以及SQL:1999(即SQL3)是国际标准,而各个RDBMS厂商提供的是SQL实现。SQL标准文本可参见:http:/speckle.ncsl.nist.gov/ftp/isow
9、g3/dbl/BASEdocsSQL实现可参见:各厂商提供的技术文档资料。,14,目录 Contents,3.1 数据库的用户接口3.2 SQL语言概况3.3 SQL数据定义语言3.4 SQL数据查询语言3.5 SQL数据操纵语言3.6 SQL中的视图3.7 嵌入式SQL,15,3.3 SQL数据定义语言,SQL数据类型基表模式的创建基表模式的修改与撤销其他模式的建立与撤销,16,3.3 SQL数据定义语言,一、SQL基本数据类型序号 符号 数据类型 备注1 INT 整数2 SMALLINT 短整数3 DEC(m,n)十进制数 m为位数,n为小数点后位数4 FLOAT 浮点数5 CHAR(n)
10、定长字符串 n表示字符串位数6 VARCHAR(n)变长字符串 n表示最大变长数7 BIT(n)位串 n为位串长度8 BIT VARYING(n)变长位串 n为最大变长数9 DATE 日期10 TIME 时间11 TIMESTAMP 时间戳,17,18,19,20,21,22,3.3 SQL数据定义语言,SQL数据类型基表模式的创建基表模式的修改与撤销其他模式的建立与撤销,23,3.3 SQL数据定义语言,二、基表的创建:所要定义的基本表的名字:组成该表的各个属性(列):涉及相应属性列的完整性约束条件:涉及一个或多个属性列的完整性约束条件,CREATE TABLE(,);,24,3.3 SQL
11、数据定义语言,二、基表的创建(cont.)常用完整性约束实体完整性约束:PRIMARY KEY唯一性约束:UNIQUE非空值约束:NOT NULL引用完整性约束:FOREIGN KEY PRIMARY KEY与 UNIQUE的区别?,25,3.3.2 SQL数据定义功能,例1 建立一个“部门”表dept,它由部门号deptno、部门名deptname、位置loc等属性组成。其中部门号是主键,部门名取值不能为空,且唯一。部门:dept(deptno,dname,loc)CREATE TABLE dept(deptno INT PRIMARY KEY,dname VARCHAR(10)NOT NU
12、LL UNIQUE,loc VARCHAR(10)CHECK(loc IN(Shanghai,Nanjing,Wuhan,Xian,Beijing);,26,3.3.2 SQL数据定义功能,例2 建立一个“职员”表emp,它由工号、姓名、工种、主管经理、雇用时间、薪水、佣金、所在部门等属性组成。职员:emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)CREATE TABLE emp(empno INT PRIMARY KEY,ename VARCHAR(10)NOT NULL,job VARCHAR(9)NOT NULL,mgr INT REFE
13、RENCES emp(empno),hiredate DATE DEFAULT SYSDATE,sal DEC(7,2)CHECK(sal1000.0)comm DEC(7,2)DEFAULT NULL,deptno INT NOT NULL REFERENCES dept(deptno)ON DELETE CASCADE);,27,3.3 SQL数据定义语言,SQL数据类型基表模式的创建基表模式的修改与撤销其他模式的建立与撤销,28,3.3 SQL数据定义语言,三、基表模式的修改与撤消增加列ALTER TABLE ADD 完整性约束;:要修改的基本表ADD子句:增加新列和新的完整性约束条件例
14、3 向emp表增加“性别”列,其数据类型为字符型。ALTER TABLE emp ADD GENDER CHAR(2)NOT NULL;不论基本表中原来是否已有数据,新增加的列一律为空值。,29,3.3 SQL数据定义语言,三、基表模式的修改与撤消(cont.)删除基表DROP TABLE;基表删除,数据、表上的索引都删除系统从数据字典中删去有关该基表及其索引的描述例4 删除emp表DROP TABLEemp;删除属性列-间接删除把表中要保留的列及其内容复制到一个新表中删除原表再将新表重命名(RENAME)为原表名,30,3.3 SQL数据定义语言,三、基表模式的修改与撤消(cont.)修改属
15、性列ALTER TABLE MODIFY;例5 将emp表中工号改为字符类型,串长度改为8位。ALTER TABLE emp MODIFY empno CHAR(8);注:修改原有属性定义有可能会破坏已有数据补充定义主键ALTER TABLE ADD PRIMARY KEY();要求定义为主键的列名表必须满足NOT NULL和唯一性条件撤销主键定义ALTER TABLE DROP PRIMARY KEY;暂时撤销主键定义,在插入新的元组时,可以提高系统的性能,31,3.3 SQL数据定义语言,三、基表模式的修改与撤消(cont.)补充定义外键ALTER TABLE ADD FOREIGN KE
16、Y()REFERENCES ON DELETE RESTRICT|CASCADE|SET NULL;撤销外键定义ALTER TABLE DROP;,32,3.3 SQL数据定义语言,SQL数据类型基表模式的创建基表模式的修改与撤销其他模式的建立与撤销,33,3.3 SQL数据定义语言,四、其他模式对象的定义与撤消 别名(alias)用简单的别名代替全名,书写和输入都比较方便由于各个用户对同一数据对象可能有不同的命名,若为不同用户定义不同的别名,则各用户可以保留自己习惯的命名。定义别名CREATE SYNONYM FOR|;撤销别名DROP SYNONYM;,34,3.3 SQL数据定义语言,四
17、、其他模式对象的定义与撤消(cont.)索引的建立与撤销索引是物理存储路径,不属于逻辑数据模式。建立索引是加快查询速度的有效手段。建立索引DBA或表的创建者根据需要建立有些DBMS自动建立以下列上的索引 PRIMARY KEY UNIQUE维护索引 DBMS自动完成使用索引 DBMS自动选择是否使用索引,以及使用哪些索引,35,3.3 SQL数据定义语言,四、其他模式对象的定义与撤消(cont.)建立索引的语句格式 CREATE UNIQUE CLUSTER INDEX ON(,);用指定要建索引的基表名字索引可以建立在该表的一列或多列上,各列名之间用逗号分隔用指定索引值的排列次序,升序(AS
18、C),降序(DESC)。缺省值:ASCUNIQUE表明此索引的每一个索引值只对应唯一的数据记录CLUSTER表示要建立的索引是聚簇索引,36,3.3 SQL数据定义语言,四、其他模式对象的定义与撤消(cont.)建立索引唯一值索引(UNIQUE)对于已含重复值的属性列不能建UNIQUE索引对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束聚簇索引(CLUSTER)建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致第五章详细介绍,37,3.3 SQL数据定
19、义语言,建立索引例子例6 为dept和emp两个表建立索引。其中dept表按depto升序建唯一索引,emp表按deptno降序建唯一索引。CREATE UNIQUE INDEX DNO ON dept(deptno);CREATE UNIQUE INDEX ENO ON emp(deptno DESC);,38,3.3 SQL数据定义语言,四、其他模式对象的定义与撤消(cont.)撤销索引语句格式:DROP INDEX;撤销索引时,系统会从数据字典中删去有关该索引的描述。例7 撤销emp表的ENO索引。DROP INDEX ENO;,39,目录 Contents,3.1 数据库的用户接口3.
20、2 SQL语言概况3.3 SQL数据定义语言3.4 SQL数据查询语言3.5 SQL数据操纵语言3.6 SQL中的视图3.7 嵌入式SQL,40,3.4 SQL数据查询语言,3.4.1 SELECT语句的语法3.4.2 各种条件查询举例3.4.3 查询结果分组3.4.4 查询结果排序 3.4.5 集合操作查询,41,3.4.1 SELECT语句的语法,一、语句格式SELECT ALL|DISTINCT,FROM,WHERE GROUP BY,HAVING ORDER BY|ASC|DESC,|ASC|DESC;SELECT子句:指定要显示的属性列FROM子句:指定查询对象(基本表或视图)WHE
21、RE子句:指定查询条件GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中使用聚集函数。HAVING短语:筛选出只有满足指定条件的组ORDER BY子句:对查询结果表按指定列值的升序或降序排序,42,3.4.1 SELECT语句的语法,查询语句的组成1)目标子句:SELECT ALL|DISTINCT,定义结果关系所需要的属性目标子句的构造方式DISTINCT:对查询结果中的重复行只返回其中一行,消除结果关系中的重复元组。(查询结果为set)ALL:(缺省)。返回查询结果的所有行,不去掉重复行。(查询结果为bag):用以标识一个表中的一个列。形式:.。
22、,43,3.4.1 SELECT语句的语法,查询语句的组成(cont.)1)目标子句(cont.):SELECT ALL|DISTINCT,目标子句的构造方式(cont.):算术表达式。用于投影表中的列,并对列值进行计算。定义如下:列标识是一个;列标识的SQL函数是一个;、常量、算术运算符(+,-,*,/)及括号所组成的算术表达式是一个;*表示一个表中的所有列,是一个特殊的。结果属性的重命名 AS,44,3.4.1 SELECT语句的语法,查询语句的组成(cont.)2)范围子句:FROM,指定操作对象(被访问的关系)与:用以标识一个表(基表、视图或快照)。形式:.。:用以标识一个表中的一个列
23、。形式:.。可以将FROM子句中对一个关系重新命名(即定义一个别名)主要用于关系自身的联接运算,SELECT子句和FROM子句是查询语句中必不可少的两个部分,45,3.4.1 SELECT语句的语法,查询语句的组成(cont.)3)条件子句:WHERE 是查询语句中的可选部分,用于定义查询条件(即结果关系中的元组必须满足的条件)包括“单个关系中的元组选择条件”以及“关系与关系之间的连接条件”都需要在WHERE子句中通过一定的逻辑表达式显式地表示出来。,46,3.4.1 SELECT语句的语法,查询语句的组成(cont.)3)条件子句:WHERE(cont.)逻辑表达式,用于选择表中的行。定义如
24、下:简单条件:比较条件用于比较大小:IS NOT NULLALLANYSOME()其中,为关系运算符。BETWEEN条件用于确定范围:NOT BETWEEN AND LIKE条件用于字符匹配:NOT LIKE xxx 其中,x可为字符(精确匹配)、_(单字符匹配)、%(任意多个字符匹配)。,47,3.4.1 SELECT语句的语法,3)条件子句:WHERE(cont.)(cont.)简单条件:IN条件用于属于判断:NOT IN(常量1,常量2,常量n)()EXISTS条件用于存在判断:NOT EXISTS()复合条件:简单条件、逻辑运算符(NOT,AND,OR)及括号所组成的逻辑表达式。,48
25、,3.4 SQL数据查询语言,3.4.1 SELECT语句的语法3.4.2 各种条件查询举例3.4.3 查询结果分组3.4.4 查询结果排序 3.4.5 集合操作查询,49,3.4.2各种条件查询举例,背景dept(deptno,dname,loc)emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)无条件查询1)查询全部职员的工号与姓名。SELECT empno,ename FROM emp;2)查询全部部门的号码、名称、所在地。SELECT deptno,dname,loc FROM dept;或 SELECT*FROM dept;3)查询职员
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 ch03 关系 语言

链接地址:https://www.desk33.com/p-250674.html