关系数据库语言课件

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

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

1、5.4 关系数据库语言SQL,5.4.1 SQL语言概述,5.4.2 数据库定义,5.4.3 数据查询,5.4.4 数据修改,SQL语言将数据定义语言DDL、数据操纵语 言DML、数据控制语言DCL的功能集于一体, 可独立完成数据库生命周期中的定义关系模 式、插入数据、建立数据库、查询、更新、 维护、数据库重构、数据库安全性控制等一 系列操作要求。数据库系统投入运行后可随 时地逐步地修改模式,且并不影响数据库的 运行,从而使系统具有良好的可扩展性。,SQL特点1:综合统一,5.4.1 SQL语言概述,SQL语言两种使用方式: 1.是联机交互使用,用户可以在终端键盘上直接键入SQL命令对数据库进

2、行操作; 2.是嵌入某种高级程序设计语言(例如C, C+,Visual Basic)中使用。,SQL特点2:两种使用方式、统一种语法结构,SQL特点3:高度非过程化,用SQL语言只需提出“做什么”,而无需 指明“怎么做”。存取路径的选择以及SQL 语句的操作过程由系统自动完成,大大减 轻了用户负担,有利于提高数据独立性。,SQL语言功能极强,但语言十分简捷,完成核心功能只用了9个动词(如下表)。SQL语言接近英语句子,因此容易学习,容易使用。,SQL特点4:语言简捷,易学易用,SQL特点5:支持三级模式结构,5.4.2 数据库定义,SQL的数据定义功能包括三部分:定义基本表、 定义视图和定义索

3、引。使用的命令是: CREATE/DROP/ALTER TABLE CREATE/DROP VIEW CREATE/DROP INDEX,关系Courses,关系Students,关系Reports,1.表的建立,命令格式为: CREATE TABLE ( NOT NULL , NOT NULL 其他参数);,说明:方括 为可选项; 任何列可以为空值,除非列的定义中指定了NOT NULL.,例1 建立学生表Students,要求Sno和Sname不能为空值。,练习1 建立课程表courses,要求cno不能为空值。,练习2 建立表reports,要求sno,cno不能为空值。,2.表的修改,说

4、明:表的修改是修改一个存在的表结构。,MODIFY ;,命令格式为 ALTER TABLE ADD(新列名类型); /在所有列的右边扩充新列 DROP /删除某一列,alter column,例 要在学生表Students增加学生住址列nation_place,其语句为,例 要将学生表Students的学生住址列nation_place的长度概为20,其语句为,例 要将学生表Students的学生住址列nation_place删除,其语句为,3.表的删除,注意:基本表一旦被删除,表中的数据以及 建立在该表上 的索引和视图都将自动被删除 掉。因此执行删除基本表的 操作一定要格外 小心。,例 删除

5、Students表。 DROP TABLE Students;,命令格式为: DROP TABLE ;,4.索引的建立,命令格式为: CREATE UNIQUE INDEX ON ( ,);,说明: 是要为其创建索引的基本表的名字。索引 可以建立在该表的一列或多列上,各列名之间用逗号分隔。 每个还可以用来指定索引值按照 ASC(升序)或DESC(降序)的方式排序,缺省值为ASC。 UNIQUE表明每一个索引值只对应唯一的一个元组,即索 引值相同的元组只索引一次。,例 为学生选课数据库中的Reports建立索引。按Sno(学号)升序和Cno(课程号)号降序建唯一索引。其语句为:,5.索引的删除,

6、命令格式为: DROP INDEX ;,例 删除基本表Reports上的Rep_SCno索引。 DROP INDEX Rep_SCno;,SQL中的格式:drop index tablename.indexname,5.4.3 数据查询,SELECT ALL|DISTINCT目标列 FROM 表名或视图名 WHERE 条件表达式 GROUP BY HAVING ORDER BY ASC|DESC;,说明:根据WHERE子句的条件,从FROM子句指定的基本 表或视图中找出满足条件的元组,再按目标列表达式规定 的属性列选出元组中对应的属性值形成结果表。 ALL指定在结果集中可以显示重复行,ALL是

7、默认设置。 DISTINCT指定在结果集中除去重复的行。 如果有GROUP子句,则将结果按的值进行分组。 如果GROUP子句带HAVING短语,则只输出满足指定条件的组。如果有ORDER子句,则结果表还要按的值升序或降序方式排序。,Select-from-where句型 该句型是根据下面最常用的关系表达式而设计的:,这里R1,R2,Rm是关系,F是公式,A1,A2,An是属性。表达式的含义是,首先求出R1,R2,Rm诸关系的自然连接,然后按公式给定的条件从水平方向选取行的子集,最后从垂直方向投影出列的子集A1,A2,An,从关系代数表达式演变而来的select基本句型为 SELECT A1,A

8、2,An FROM R1,R2,Rm WHERE F,1.单表查询,例 查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。这是一个无条件的投影查询,其语句为:,1) 查询表中的若干列,关系代数,查询句型:SELECT A1,A2,An FROM S,例 查询全体学生的详细记录。其语句为:,中各个列的先后顺序可以与表中的顺序不一致,用户可以根据应用的需要改变列的显示顺序。若要查询FROM后面指定的表的全部属性,可以用*来表示,如查询全体学生的的详细记录,其SELECT语句可以写成.,例 查询全体学生的姓名(sname)、出生年份及 学号(sno)其语句为:,2) 查询经过计

9、算的值,SELECT后面可以是字段名,可以是字段和常数 组成的算术表达式,也可以是字符串常数。,例查询全体学生的姓名、学号和出生年份,并标识出此年份是Birthday,语句为:,例 查询选修了课程的学生学号,其语句为:,3) 消除取值重复的行,SELECT ALL|DISTINCT目标列 FROM 表名或视图名,练习 查询学生有哪些系。,4) 带搜索条件(where)的检索,WHERE子句条件查询包括:,SELECT ALL|DISTINCT目标列 FROM 表名或视图名 WHERE 条件表达式,比较条件查询,=,=,!,范围条件查询,NOT BETWEEN,枚举条件查询,NOT IN,字符匹

10、配条件查询,NOT LIKE,空值条件查询,IS NOT NULL,逻辑运算,NOT, AND, OR,比较条件查询,例 查询数学系全体学生的学号(sno) 和姓名(sname)。其语句为:,语法: Where 比较算符有:=,=,!,练习1.查询年龄小于20岁的数学系的学生纪录。,select * from students where sdept=数学 and sage20;,练习2:查询选修了课程号为“C3”的学生的 学号和成绩。,SNO,GRADE( CNO=C3 (reports),select sno,grade from reports where cno=c03;,语法: Wh

11、ere NOT BETWEEN AND , 等价于 表达式1=表达式2 且 目标列=表达式3,例 查询年龄在1820岁(包括18岁和20岁)之间的学生姓 名(sname)及所在的系部(sdept)。其语句为:,范围条件查询,语法: Where NOT IN ( );,例 查询信息系和计算机系的学生的姓名(sname)和性别(ssex)。,枚举条件查询,或,语法: Where NOT LIKE ;,说明:这个谓词条表示件查找指定的属性列值与相匹配的元组。可以是一个完整的字符串,也 可以含有通配符 和、_ 、或,其意义如下: % (百分号): 代表一个任意长度的字符串 _ (下横线): 代表任意单

12、个字符。 (3) (方括号) 表示与方括中的任意一个字符匹配。 (4),表示不与方括中的任意一个字符匹配.,字符匹配条件查询,例 查询所有不姓刘的学生姓名(sname) 和年龄(sage)。,语法: Where IS NOT NULL;,空值条件查询,例 查询需要预修课程的课程号 和课程名,其语句为:,练习 查询没有成绩的学生学号(Sno)和课程号(Cno)。其语句为:,2.多表查询,用子查询和连接查询可以实现对多个表的查询操作,并把查询结果组合成一个表。,例 找出选修课的成绩小于80分的学生姓名,其语句为:,子查询,连接查询,练习 检索选修数据库课程的学生学号和成绩,其语句为:,子查询,连接

13、查询,练习查询数据库课程成绩小于80分的学生学号和成绩,其语句为:,连接查询,子查询,练习 查询数据库课程成绩小于80分的学生学号和姓名,其语句为:,select students.sno,sname from students,reports,courses where cname=数据库 and o=o and students.sno=reports.sno and grade80;,3.附加子句,1)内部函数,可以在操作对象前加上DISTINCT,表示在函数运行前去掉重复值,例 找出学生的最小年龄,其语句为:,select min(sage) from students;,例 统计所有

14、学生选修的课程门数,其语句为:,select count(distinct cno) from reports;,例 计算选修C01号课程的学生平均成绩。 其语句为:,select avg(grade) from reports where cno=c01;,2)GROUP BY和HAVING的使用,GROUP BY子句是把一个表按某一列(或一些列)分成许多行组,其中每组在该列(或几列)上具有相同的值。HAVING指定选择组的条件,只有符合条件的才列出来。,例 求各个课程号(Cno)及相应的选课人数。其命令为:,select cno,count(sno) from reports group

15、by cno;,例 查询选修了3门或3门以上课程的学生 学号(Sno):,select sno from reports group by sno having count(*)=3;,3)ORDER BY的使用,ORDER BY子句的语句格式为:,ORDER BY|ASC|DESC , |ASC|DESC ,例 查询选修了C03号课程的学生的学号(Sno)和成绩(Grade),并按成绩降序排列。其语句为:,select sno,grade from reports where cno=c03 order by grade desc;,5.4.4 数据修改,数据修改主要是对已存在的数据库进行记

16、录的插入、删除、修改的操作。,1.数据的插入,1)插入一个元组 INSERT INTO (, VALUES(,);,说明:该命令的功能是将一个新元组添加到指定的表中,且 新元组属性列1的值为常量1,属性列2的值为常量2,。 INTO子句中没有出现的属性列,其新元组在这些列上 将取空值。但若在CREATE定义表时使用了NOT NULL约束 的属性列不能取空值,否则会出错。 如果INTO子句中没有指明任何列名,则新插入的元组 必须在每个属性列上均有值。,例 将一个学生元组(S01,王建平,男,21, 计算机)添加到基本表Students中:,例 向courses表中插入一个元组(c01,英语 4),insert into courses(cno,cname,credits) values(c01,英语,4);,2)插入子查询结果 INSERT INTO (, 子查询,例将不及格的同学的学号和课程号插入不及格学生的 统计表FAIL中,语句为:,2.数据的修改,修改数据库中的数据,命

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

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

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