资源预览内容
第1页 / 共117页
第2页 / 共117页
第3页 / 共117页
第4页 / 共117页
第5页 / 共117页
第6页 / 共117页
第7页 / 共117页
第8页 / 共117页
第9页 / 共117页
第10页 / 共117页
亲,该文档总共117页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章 关系数据库标准语言SQL4.1 SQL概述 4.2 数据定义 4.3 数据查询 4.4 数据更新 4.5 视图第四章 关系数据库标准语言SQL4.1 SQL 概述 SQL(Structed Query Language),即结构化 查询语言,是关系数据库的标准语言,SQL是一个 通用的、功能极强的关系数据库语言。4.1.1 SQL的产生与发展SQL是在1974年由Boycee和Chamberlin提出的,并在 IBM公司研制的关系数据库管理系统原型System R上实 现。 由于SQL简单易学,功能丰富,深受用户及计算机工业 界欢迎,因此被数据库厂商所采用。经各公司的不断修 改、扩充和完善,SQL得到业界的认可。 1986年10月美国国家标准局的数据库委员会X3H2批准了 SQL作为关系数据库语言的美国标准。同年公布了SQL 标准文本。 1987年国际标准化组织也通过了这一标准。 SQL标准从1986年公布以来随着数据库技术的发展不断 发展,不断丰富。4.1.2 SQL的特点一、综合统一 SQL集数据定义语言DDL、数据操纵语言DML、 数据控制语言DCL的功能于一体,语言风格统一 ,可以独立完成数据库生命周期中的全部活动。 二、高度非过程化 SQL进行数据操作,只要提出“做什么”,而无需指 明“怎么做”,因此无需了解存取路径。存取路径的 选择以及SQL的操作过程由系统自动完成。4.1.2 SQL的特点三、面向集合的操作方式 SQL采用面向集合的操作方式,不仅操作对象、查找结 果可以是元组的集合,而且一次插入、删除、更新操作 的对象也可以是元组的集合。 四、以同一种语法结构提供多种使用方式 作为独立语言,它能够独立地用于联机交互的使用方式 ,用户可以在终端键盘上直接键入SQL命令对数据库进 行操作; 作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C ,C+,Java)程序中,供程序员设计程序时使用。4.1.2 SQL的特点五、语言简洁易学SQL功能极强,但由于 设计巧妙,语言十分简洁 ,完成核心功能只用了9个 动词。SQL接近英语口语 ,因此容易学习,容易使 用。SQL功 能动词数据查 询SELECT数据定 义CREATE,DROP, ALTER数据操 纵INSERT,UPDATE, DELETE数据控 制GRANT,REVOKE4.2数据定义4.2.1基本表的定义、删除、与修改 一、定义基本表 CREATE TABLE (列级完整性约束条件 , 列级完整性约束条件 , );4.2数据定义例:建立一个“学生”表Student。lcreate table Studentl(lsno char(9) primary key,lsname char(20) unique,lssex char(2),lsage smallint,lsdept char(20)l);4.2数据定义例:建立一个“课程”表Course。lcreate table Coursel(lcno char(4) primary key,lcname char(40),lcpno char(4),lccredit smallint,lforeign key (cpno) references Course(cno)l);4.2数据定义例:建立学生选课表SC。lcreate table SCl(lsno char(9),lcno char(4),lgrade smallint,lforeign key (sno) references student(sno),lforeign key (cno) references course(cno)l)4.2数据定义4.2.2修改基本表 ALTER TABLE ADD 完整性约束 DROP ALTER COLUMN ;4.2数据定义例:向Student表增加“入学时间”列,其数据类 型为日期型。alter table Student add s_entrance datetime;例:将年龄的数据类型由smallint改为int。 alter table Student alter column sage int;4.2数据定义例:增加课程名必须取唯一值的约束。 alter table course add unique(cname);4.2数据定义4.2.3删除基本表 DROP TABLE RESTRICT|CASCADE RESTRICT:该表的删除是有限制条件的。欲删除的 基本表不能被其他表的约束所引用(如 CHECK,FOREIGN KEY等约束),不能有视图,不能 有触发器,不能有存储过程或函数等。如果存在这些 依赖该表的对象,则此表不能被删除。 CASCADE:该表的删除没有限制条件。在删除基本 表的同时,相关的依赖对象,例如视图,都将被一起 删除。 (SQL Server 2000中不支持RESTRICT|CASCADE)4.2数据定义4.2.3索引的建立与删除 建立索引是加快查询速度的有效手段。用户可以 根据应用环境的需要,在基本表上建立一个或多 个索引,以提供多种存取路径,加快查找速度。 建立与删除索引有数据库管理员DBA或表的属主 ,负责完成。4.2数据定义4.2.3索引的建立与删除 一、建立索引 CREATE UNIQUECLUSTER INDEX ON (, ) 索引的排列次序,可选ASC或DESC,缺省值 为ASC。 UNIQUE表明此索引的每一个索引值只对应唯一的数 据记录。 CLUSTER表示要建立的索引是聚簇索引。所谓聚簇 索引是指索引项的顺序与表中记录的物理顺序一致的 索引组织。4.2数据定义二、删除索引 DROP INDEX 例:索引示例。 lcreate table abcl( la int, lb int l);lcreate unique index abcindex on abc(a desc);ldrop index abc.abcindex;lcreate clustered index abcindex on abc(a desc);4.3数据查询SELECT ALL|DISTINCT, FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC;4.3.1单表查询单表查询是指仅涉及一个表的查询。 一、选择表中的若干列 1.查询指定列 例1.查询全体学生的学号和姓名。 select sno,sname from student; 例2.查询全体学生的姓名、学号、所在系。 select sname,sno,sdept from student;4.3.1单表查询2.查询全部列 例3.查询全体学生的详细记录。 select * from student; 3.查询经过计算的值 例4.查询全体学生的姓名及其出生年份。 select sname,2012-sage from student; 例5.查询全体学生的姓名、出生年份和所在的院系, 要求用小写字母表示所有系名。 select sname,year of birth:,2012- sage,lower(sdept) from student;4.3.1单表查询二、选择表中的若干元组 1.消除取值重复的行 例6.查询选修了课程的学生学号。 select sno from sc; select distinct sno from sc; 2.查询满足条件的元组 (1) 比较大小 例7.查询计算机科学系全体学生的名单。 select sname from student where sdept=CS;4.3.1单表查询例8.查询所有年龄在20岁以下的学生姓名及其年龄 。 select sname,sage from student where sageESCAPE %代表任意长度的字符串(长度可以为0); -(下横线)代表任意单个字符。4.3.1单表查询例14.查询学号为200215121的学生的详细情况 。 select * from student where sno like 200215121; 例15.查询所有姓刘的学生的姓名、学号和性别 。 select * from student where sname like 刘 %; 例16.查询姓“欧阳”且全名为3个汉字的学生的姓 名。 select sname from student where sname like 欧阳_;4.3.1单表查询例17.查询名字中第2个字为“阳”字的学生的姓名 和学号。 select sname,sno from student where sname like _阳%; 例18.查询所有不姓刘的学生姓名。 select sname from student where sname not like 刘%;4.3.1单表查询例19.查询DB_Design课程的课程号和学分。 select cno,ccredit from course where cname like DB_Design escape ;例20.查询以“DB_”开头,且倒数第3个字符为i的 课程的详细情况。 select * from course where cname like DB_%i_ escape ;4.3.1单表查询(5)涉及空值的查询 例21.查询缺少成绩的学生的学号和相应的课程号。 select sno,cno from sc where grade is null; 例22.查所有有成绩的学生学号和课程号。 select sno,cno from sc where grade is not null;4.3.1单表查询(6)多重条件查询 例23.查询计算机科学系年龄在20岁以下的学生 姓名。 select sname from student where sdept=CS and sage3;4.3.2 连接查询若一个查询同时涉及两个以上的表,则称之为连接查询 。 一、等值与非等值连接查询 连接查询的WHERE子句用来连接两个表的条件称为连接 条件或连接谓词。 . 其中比较运算符主要有:=、=、)等 。 此外连接谓词还可以使用下面形式: .BETWEEN.AND .4.3.2 连接查询当连接运算为=时,称为等值连接。使用其他运算符称 为非等值连接。 连接谓词中的列名称为连接字段。连接条件中的各连 接字段类型必须是可比的,但名字不必相同。 例33.查询每个学生及其选修课程的情况。lselect student.*,sc.*lfrom student,sclwhere student.sno=sc.sno;4.3.2 连接查询例34. 对例33用自然连接完成。lselect student.sno,sname,ssex,sage,sdept,cno,gradelfrom student,sclwhere student.sno=sc.sno;4.3.2 连接查询二、自身连接 连接操作不仅可以在两个表之间进行,也可以是 一个表与自己进行连接,称为表的自身连接。lselect first.cno,second.cpnolfrom course first,course secondlwhere first.cpno=second.cno;4.3.2 连接查询例36.以student为主体列出每个学生的基本情况及其 选课情况。lselect student.sno,sname,ssex,sage,sdept,cno,gradelfrom student left outer join sc on student.sno=sc.sno4.3.2 连接查询四、
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号