数据库语言课件

上传人:我*** 文档编号:144966412 上传时间:2020-09-14 格式:PPT 页数:95 大小:657.50KB
返回 下载 相关 举报
数据库语言课件_第1页
第1页 / 共95页
数据库语言课件_第2页
第2页 / 共95页
数据库语言课件_第3页
第3页 / 共95页
数据库语言课件_第4页
第4页 / 共95页
数据库语言课件_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《数据库语言课件》由会员分享,可在线阅读,更多相关《数据库语言课件(95页珍藏版)》请在金锄头文库上搜索。

1、4 数据库语言SQL,同济大学,本章目标,本章主要介绍SQL语言的基本语法和使用方式,要求熟练掌握SQL语言的使用规则,能够根据实际需求写出能够准确完成操作的SQL语句。,4.1 概述,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) 定义、删除、修改关系

2、模式(基本表) 定义、删除视图(View) 定义、删除索引(Index) 数据操纵(DML) 数据查询 数据增、删、改 数据控制(DCL) 用户访问权限的授予、收回,4.1.1 SQL的功能,交互式SQL 一般DBMS都提供联机交互工具 用户可直接键入SQL命令对数据库进行操作 由DBMS来进行解释 嵌入式SQL 能将SQL语句嵌入到高级语言(宿主语言) 使应用程序充分利用SQL访问数据库的能力、宿主语言的过程处理能力 一般需要预编译,将嵌入的SQL语句转化为宿主语言编译器能处理的语句,4.1.2 SQL的形式,数据定义 Create、Drop、Alter 数据操纵 数据查询:Select 数

3、据修改:Insert、Update、Delete 数据控制 Grant、Revoke,4.1.3 SQL的动词,数据查询是数据库应用的核心功能。 基本结构: Select A1, A2, ., An From r1, r2, ., rm Where P,4.2 数据查询,A1, A2, ., An(p(r1r1.rm),4.2.1 Select语句的含义,对 From 子句中的各关系,作笛卡儿积() 对 Where 子句中的逻辑表达式进行选择()运算,找出符合条件的元组。 根据 Select 子句中的属性列表,对上述结果作投影( )操作。 查询操作的对象是关系,结果还是一个关系,是一个结果集,

4、是一个动态数据集。,4.2.2 Select子句 对应于关系代数的投影()运算,用以列出查询结果集中的期望属性。,重复元组 SQL 具有包的特性 Select子句的缺省情况是保留重复元组(ALL),可用 Distinct去除重复元组 Select Distinct sdept From Student Select All sdept From Student 去除重复元组:费时 需要临时表的支持,*与属性列表 星号 * 表示所有属性 星号 * :按关系模式中属性的顺序排列,并具有一定的逻辑数据独立性 显式列出属性名:按用户顺序排列 Select * From Student Select S

5、tudent.*,cno,grade From Student,SC Where Student.sno = SC.sno,更名 为结果集中的某个属性改名 使结果集更具可读性 Select sno as stu_no,cno as course_no, grade From SC Select sno,sname,2001 - sage as birthday From Student,4.2.3 where子句,where子句对应与关系代数中的选择()。 查询满足指定条件的元组可以通过Where子句来实现。 使where子句中的逻辑表达式返回True值的元组,是符合要求的元组,将被选择出来。

6、,运算符 比较:、=、=、not + 确定范围: Between A and B、Not Between A and B 确定集合:IN、NOT IN 字符匹配:LIKE,NOT LIKE 空值:IS NULL、IS NOT NULL 多重条件:AND、OR、NOT,like 字符匹配:Like、Not Like 通配符: % 匹配任意字符串 _ 匹配任意一个字符 大小写敏感,列出姓张的学生的学号、姓名。 Select sno,sname From Student Where sname LIKE 张% 列出张姓且单名的学生的学号、姓名。 Select sno,sname From Stude

7、nt Where sname LIKE 张_ _,转义符 escape 例:列出课程名称中带有_的课号及课名。 Select cno,cname From Course Where cname LIKE %_% escape ,4.2.4 from子句,From子句对应与关系代数中的笛卡儿积() 列出将被扫描的关系(表) 例:列出所有学生的学号、姓名、课号、成绩。 Select Sudent.sno,sname,SC.cno,grade From Student,SC Where Student.sno = SC.sno,元组变量 为 From 子句中的关系定义元组变量 方便关系名的引用 在同

8、一关系的笛卡儿积中进行辨别 例:列出与95001同岁的同学的学号,姓名,年龄。 SelectT.sno,T.sname,T.sage FromStudent as T,Student as S WhereS.sno = 95001 AND T.sage = S.sage,4.2.5 Order By子句,指定结果集中元组的排列次序 耗时 ASC(缺省)、DESC、未选中的属性 例:列出CS系中的男生的学号、姓名、年龄,并按年龄进行排列(升序)。 Select sno,sname, sage From Student Where sdept = CS Order By sage ASC,4.3

9、数据定义语言,数据定义语言(Data Definition Language) Create、Drop、Alter 定义一组关系(基本表)、说明各关系的信息 各关系的模式 各属性的值域 完整性约束 索引 安全性和权限,4.3.1 SQL中的域类型,字符型 char(n) 、varchar(n) 数值型 integer、smallint numeric(p,d) real、double、float(n) 日期/时间型 date time,4.3.2 SQL中的域定义,域定义语句(SQL-92支持) 需重复使用的 Create Domain stu_name varchar(20) Create

10、Domain zip_code char(6) 域的删除 Drop Domain datelog 各DBMS的方法是不同的Restrict/Cascade 使用该域的属性的处理,4.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) primar

11、y 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) not null , cno char(10) not null , grade smallint, primary key (sno, cno),4.3.4 删除表结构,用SQL删除关系(表) 将整个关系

12、模式(表结构)彻底删除 表中的数据也将被删除 Drop Table r Drop Table student,4.3.5 修改表结构,删除表中的某属性 去除属性及相应的数据 Alter Table r Drop A 增加表中的属性 向已经存在的表中添加属性 allow null 已有的元组中该属性的值被置为Null Alter Table r Add A D Alter Table student phone char(16),4.3.6 Default Value,属性的默认值 用户不提供某属性的值时,默认值被使用 初始值 DDL中: ModifyDate char(30) Default

13、TimeStamp Alter Table student Add ID integer Default 1001,4.3.7 索引Index,索引是一种数据结构,是对照表、指针表 索引是为了加速对表中元组的检索而创建的一种分散存储结构(B树) 索引是对表而建立的,由除存放表的数据页面以外的索引页面组成 索引是把双刃剑,减慢更新的速度 索引不是SQL标准的要求 索引的种类 聚簇索引(Clustered Index) 非聚簇索引(Non-Clustered Index),聚簇索引(Clustered Index) 表中的元组按聚簇索引的顺序物理地存放 根级页面-中间层页面-叶级页面(数据页面)

14、一个表中只能有一个聚簇索引 更新的复杂性,需要大量的临时空间 非聚簇索引(Non-Clustered 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)

15、 Drop Index YearIndex,4.4 数据添加,用SQL的插入语句,向数据库表中添加数据 按关系模式的属性顺序 Insert Into Student Values ( 0095001, 张三,27, M, CS ) 按指定的属性顺序,也可以只添加部分属性(非Null属性为必需) Insert Into Student ( sno, sname, sage) Values ( 0095002, 李四, 26 ),4.5 聚合函数,把一列中的值进行聚合运算,返回单值的函数。 五个预定义的聚合函数: 平均值:Avg 总和: Sum 最小值:Min 最大值:Max 计数:Count C

16、ount(*)、Count(Distinct),4.5.1 Group By,将查询结果集按某一列或多列的值分组,值相等的为一组,一个分组以一个元组的形式出现。 只有出现在Group By子句中的属性,才可出现在Select子句中。 例:统计各系学生的人数。 Select sdept,count(*) as stu_count From Student Group By sdept,4.5.2 Having,针对聚合函数的结果值进行筛选(选择),它作用于分组计算结果集。 跟在Group By子句的后面,没有Group By则针对全表。 例:列出具有两门(含)以上不及格的学生的学号、不及格的课目数。 Select sno,count(sno) From SC Where grade = 2,4.5.3 Having与Where的区别,Where 决定哪些元组被选择参加运算,作用于关系中的元

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号