第五讲 关系数据库标准语言SQL

上传人:豆浆 文档编号:6412743 上传时间:2017-08-08 格式:PPT 页数:98 大小:773.50KB
返回 下载 相关 举报
第五讲  关系数据库标准语言SQL_第1页
第1页 / 共98页
第五讲  关系数据库标准语言SQL_第2页
第2页 / 共98页
第五讲  关系数据库标准语言SQL_第3页
第3页 / 共98页
第五讲  关系数据库标准语言SQL_第4页
第4页 / 共98页
第五讲  关系数据库标准语言SQL_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《第五讲 关系数据库标准语言SQL》由会员分享,可在线阅读,更多相关《第五讲 关系数据库标准语言SQL(98页珍藏版)》请在金锄头文库上搜索。

1、SQL概述 SQL数据定义功能 SQL数据查询功能 SQL数据修改功能 SQL数据控制功能 嵌入式SQL,第三章 关系数据库标准语言 SQL,SQL概述(),历史1974年,由Boyce和Chamber提出。1975-1979年,在System R上实现,由IBM的San Jose研究室研制,称为Sequel,现在称为SQL (Struceured Query Languang)。标准化有关组织ANSI(American Natural Standard Institute)ISO(International Organization for Standardization)有关标准SQL86

2、:“数据库语言SQL”,SQL概述(),SQL89:“具有完整性增强的数据库语言SQL”,增加了对完整性约束的支持。SQL2(SQL92):“数据库语言SQL”,是SQL-89的超集,增加了许多新特性,如新的数据类型,更丰富的数据操作,更强的完整性、安全性支持等。SQL-3(SQL99) :新标准增加了对象数据、递归、触发器的支持能力。,SQL语言的功能 SQL是一个综合的、通用的、功能极强的关系数据库语言,它具有四个方面的功能:定义(Definition),查询(Query),操纵(Manipulation)和控制(contro1)。P85,SQL概述(),特点综合统一:模式定义和数据操作的

3、一体化。 集DDL,DML,DCL于一体。单一的结构-关系,带来了数据操作符的统一。面向集合的操作方式 操作的对象可以是元组的集合,非单个记录。一次一集合。高度非过程化: 用户只需提出“做什么”,无须告诉“怎么做”,不必了解存取路径。 例: 从S表中找出计算机系学生的学号和姓名。 SELECT 学号, 姓名 FROM student WHERE 系名=“计算机”; 两种使用方式,统一的语法结构SQL既是自含式语言(用户使用),又是嵌入式语言(程序员使用)。,SQL概述(IV),语言简洁,易学易用SQL语言共有9个命令动词,语法接近英语口语。,支持关系数据库的三级模式结构:P87图3.1 外模式

4、 用户对视图(View)的操作。 模式用户对基本表(Base Table)的操作。 内模式 关系数据库中存储文件及索引的组织结构。,示例关系P59,学生 (学号,姓名,性别,年龄,系号)student (sno , sname , ssex , sage , sdept)课程(课程号,课程名,先行课,学分)course (cno , cname , cpno, ccredit)选课(学号,课程号,成绩)sc (sno , cno , grade),SQL数据定义功能,常用数据类型数据库的建立与撤消基本表的定义索引的定义SQL数据定义特点,常用数据类型(),Bigint:大整型(8字节)Int:

5、整型(4字节)。 Smallint:小整型(2字节)。Tinyint: 无符号整型(单字节)Bit: 二进制位类型Decimal(p, q): 数值型. p为数据宽度, q为小数位.Numeric(p, q):同decimal .Float: 双精度浮点型(8字节)。Real: 单精度浮点型(4字节) 。Money: 货币型(8字节,精确到货币单位的千分之十)Smallmoney: 货币型(4字节,精确到货币单位的千分之十)Datetime: 日期时间型(8字节: mon dd yyyy hh:mm AM(PM)Smalldatetime:短日期时间型(4字节),char(n): 固定长度为n

6、的字符(串)型( 0);,基本表的定义(),示例create table course( cno char(1) not null unique, cname char(10) not null, cpno char(1), ccredit smallint, primary key (cno);,基本表的定义(),示例create table sc( sno char(5) not null, cno char(1) not null, grade int, primary key (sno,cno), foreign key (sno) references student(sno), f

7、oreign key (cno) references course(sno), check (grade = 0);,基本表的定义(IV),修改基本表定义(ALTER)格式:alter table 表名add 子句 /增加新列drop column 子句/删除列alter column 子句;/修改列定义示例1. 添加属性addr 到studentalter table student add addr char(30);示例2.从student中删除列addralter table student drop column addr;示例3.将student中sdept属性宽度改为50alt

8、er table student alter column sdept char(50);,基本表的定义(V),示例4. 将teach表中的tno属性加上非空约束示例5. 将teach表中的tno属性设为主码示例6.在TC表中指定外码:cno及tno示例7. 将student表中的sname属性加上唯一性约束,基本表的定义(V),示例4. 将teach表中的tno属性加上非空约束 alter table teach alter colum tno char(10) not null;示例5. 将teach表中的tno属性设为主码alter table teach add primary key

9、(tno);示例6.在TC表中指定外码:cno及tnoalter table tc add foreign key(cno) references course(cno);alter table tc add foreign key(tno) references teach(tno);示例7. 将student表中的sname属性加上唯一性约束alter table student add unique(sno);,基本表的定义(IV),撤消基本表定义(drop)格式drop table 表名;示例 drop table TEACH;DANGER 撤消基本表后,基本表的定义、表中数据、索引、

10、以及由此表导出的视图的定义都被删除。,索引的定义(),索引的定义格式:create unique/distinct cluster index 索引名 on 表名 (列名 asc/desc , 列名asc/desc); unique(distinct):唯一性索引,不允许表中不同的行在索引列上取相同值。若已有相同值存在,则系统给出相关信息,不建此索引。系统并拒绝违背唯一性的插入、更新。 cluster:聚集索引,表中元组按索引项的值排序并物理地聚集在一起。一个基本表上只能建一个聚集索引。 asc/desc:索引表中索引值的排序次序,缺省为asc。 示例: create cluster inde

11、x s_index on Student(Sno);,索引的定义(),索引的删除格式: drop index 索引名;索引的有关说明可以动态地定义索引,即可以随时建立和删除索引。不允许用户在数据操作中引用索引。索引如何使用完全由系统决定,这支持了数据的物理独立性。应该在使用频率高的、经常用于连接的列上建索引。一个表上可建多个索引。索引可以提高查询效率,但索引过多耗费空间,且降低了插入、删除、更新的效率。,SQL数据定义特点,SQL中,任何时候都可以执行一个数据定义语句,随时修改数据库结构。而在非关系型的数据库系统中,必须在数据库的装入和使用前全部完成数据库的定义。若要修改已投入运行的数据库,则

12、需停下一切数据库活动,把数据库卸出,修改数据库定义并重新编译,再按修改过的数据库结构重新装入数据。数据库定义不断增长(不必一开始就定义完整)。数据库定义随时修改(不必一开始就完全合理)。可进行增加索引、撤消索引的实验,检验其对效率的影响。,SQL数据查询功能,SQL数据查询基本结构select子句重复元组的处理from子句where子句更名运算字符串操作元组显示顺序集合操作,SQL数据查询功能,分组和聚集函数空值简单查询连接查询嵌套子查询派生关系视图关系的连接,SQL数据查询基本结构,基本结构select A1 , A2 , , Anfrom r1 , r2 , , rmwhere P ; A1 , A2 , , An(p(r1 r2 rm)示例: 给出所有学生的姓名。select snamefrom student ;,select 子句,目标列形式 可以为列名,* ,算术表达式,聚集函数。“*”:表示“所有的属性”。给出所有学生的信息。select *from student;带, , 的算术表达式 给出所有学生的姓名及出生年份。select sname,2003-sagefrom student;,

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

当前位置:首页 > 行业资料 > 其它行业文档

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