sql关系数据库语言

上传人:suns****4568 文档编号:96024773 上传时间:2019-08-23 格式:PPT 页数:31 大小:180KB
返回 下载 相关 举报
sql关系数据库语言_第1页
第1页 / 共31页
sql关系数据库语言_第2页
第2页 / 共31页
sql关系数据库语言_第3页
第3页 / 共31页
sql关系数据库语言_第4页
第4页 / 共31页
sql关系数据库语言_第5页
第5页 / 共31页
点击查看更多>>
资源描述

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

1、关系数据库语言 SQL,关系数据库语言 SQL,结构化查询语言 SQL Structured Query Language SQL已不限于查询,还包括数据操纵、定义、控制和管理等功能。它是一个综合的、通用的、功能极强的关系数据库语言。 国际标准化组织(ISO)89年公布了SQL语言的国际标准(SQL89)。 我国也制定了类似的标准(SQL89) 实际系统大都对SQL语言作了扩充。,SQL语言的特点,非过程化 SQL语言是非过程化语言(第四代语言)。 一体化 SQL集DDL、DML、DCL为一体。用SQL语言可实现DB生命周期的全部活动。 因实体、联系均用关系来表示,这种数据结构的单一性也带来了

2、DB语言的统一性。 两种使用方式,统一的语法结构。 联机交互使用方式。 嵌入某种高级程序设计语言。,表格实例之一,选课(学号,课程号,成绩) sc(sno , cno , grade),课程(课程号,课程名,学分,上课时间,名额) course(cno , cname , credit,ctime,quota),系(系号,系名,电话) dep(dno , dname , tel ),学生 (学号,姓名,性别,出生年月,系号) student(sno , sname , sex , birthday , dno),表格实例之二,emp ( eno,ename,sex , age,sal,mgr,

3、dno ) 职工 职工号 姓名 性别 年龄 工资 领导 部门号 其中,mge为职工的上一级领导(即上一级领导的职工号),建立表对象,CREATE TABLE student ( sno NUMBER(6) , sname CHAR(6) , sex CHAR(2) , birthday DATE , dno CHAR(3) ) ; insert into student values(980001, “李力”, “男”, “17-12月-1980”,“d01”);,INSERT INTO emp VALUES(e01, 李宏,男, 32 ,580.0,e100,d02) ; INSERT IN

4、TO emp(eno,ename,dno) VALUES(eo1,王兰 ,d01); UPDATE emp SET sal=sal*1.1 WHERE dno=d01 ; DELETE FROM emp WHERE dno=d01 ;,DML 语句(DB写语句),Select 语句,SELECT * FROM student WHERE sex = 男 AND dno = D01 ; 查询的结果仍可看成是一个关系,它由查出的记录组成。,查询语句中的投影操作,SELECT sno ,sname ,dno FROM student WHERE sex男 ; 该语句输出如下: sno sname d

5、no 980001 张自立 d01 970020 李春生 d02,查询语句中的选择操作,例:查询79、80两年出生的男同学的名单: SELECT sname,birthday FROM student WHERE sex=男 AND birthday BETWEEN 01-1月-79 AND 31-12月-80; 查询1980年以前出生的学生: SELECT * FROM student WHERE birthday 01-1月-1980 ;,SQL语句中的运算符,算术运算符:,*,/ 逻辑运算符:与 AND、或 OR, 非 NOT 比较符:,!,=, 其他运算符:IN,NOT IN 判断是否

6、是集合的成员。 BETWEEN AND 判断列值是否满足指定的区间 LIKE 匹配模式 _ % IS NOT NULL 测试空值,查询语句中的选择操作,在查询条件中,可以使用集合运算符 SELECT dname,tel FROM dep WHERE dname IN(计算机系,外语系,中文系) ; 该表达式等同于: dname=计算机系 OR dname=外语系 OR dname=中文系 集合运算符NOT IN是IN的反义词, WHERE dname NOT IN(计算机系,外语系,中文系) ;,查询语句中的选择操作,空值 查询学号为980001的同学正在学习的课程: SELECT cno F

7、ROM sc WHERE sno=980001 AND grade IS NULL; 模糊匹配。 _ 表示任意一个字符 表示任意个字符(包括0个)。 例如,查询姓王的同学信息; SELECT * FROM student WHERE sname LIKE 王 ;,查询的排序输出,查询学生c01课程的成绩,并按成绩由高到低的顺序输出: SELECT sno,grade (输出学号和成绩) FROM sc WHERE cno=c01and grade IS NOT NULL ORDER BY grade DESC ; 排序输出的隐含顺序是升序(ASC),如果要求按列值的降序输出,需在列名后指定DE

8、SC。,(5) 多表查询与连接操作(joins),笛卡尔积操作将结果关系扩展,如果笛卡尔积的两关系元组数分别为m和n,那么结果关系的元组数为mn,而在处理中往往只是需要其中部分元组。 连接(Join)操作是从笛卡尔积中选择满足条件的元组。最常用的条件是等值连接,Select * from student,dep where student.dno=dep.dno,dno,student,dep,多表查询与连接操作,表之间的连接操作(通常是自然连接)体现在WHERE子句中的连接条件。 例:查询计算机系的学生信息 SELECT sno,sname,sex FROM student,dep WHER

9、E student.dno=dep.dno AND dname=计算机系;,查询物理课不及格的学生名单(输出学生的学号、姓名及成绩): SELECT student.sno,sname,grade FROM student,sc,course WHERE cname=物理 AND grade60 AND o=o AND sc.sno=student.sno : 在该例中,查询的结果来自两张表,而决定查询结果的因素涉及到三张表的信息。 当一个查询涉及到几个关系时,为了区别不同表中的同名属性,我们可以在属性名前冠以关系名。,多表查询与连接操作,聚合操作,聚合是把关系作为运算对象的另一类操作,是对关

10、系中的列值进行统计工作,最终得到一个统计值。例如求职工的平均年龄,求职工的工资总额等。 常用5种聚合的操作符: SUM 对某列的值求和。 AVG 求某列值的平均值。 MIN 求某列值的最小值。 MAX 求某列值的最大值。 COUNT 统计某列值的个数(计数)。,例:统计职工的工资总额: SELECT SUM(sal) FROM emp ; 例:求职工的最高工资、最低工资和平均工资: SELECT MAX(sal),MIN(sal),AVG(sal) FROM emp ; 例:求女学生的学生总数: SELECT COUNT(*) FROM student WHERE sex=女;,d01,d02

11、,d01,d03,d01,d01,21,d02,18,19,20,21,18,22,sum,count,聚合操作,聚合操作,查询有多少名同学物理课不及格: SELECT COUNT(sno) FROM sc,course WHERE cname=物理 AND o=o AND grade60;,聚合操作,求每个系的学生数而不是求学生总数。希望得到下面的输出: dno count(*) d01 120 d02 65 SELECT dno,count(*) FROM student GROUP BY dno ;,d01,d01,d01,d02,d02,d01,980001,d02,980003,98

12、0002,980004,981001,981003,981002,dno,count,count,聚合操作,查询每个学生已获得的学分(注:成绩及格即取得相应课程的学分): SELECT sno,sum(credit) FROM sc,course WHERE grade60 AND o=o GROUP BY sno ;,子查询,查询物理系的学生名单(非子查询) SELECT sname FROM student,dep WHERE dname=物理系 AND dep.dno=student.dno ; 子查询: SELECT sname FROM student WHERE dno=(SELE

13、CT dno FROM dep WHERE dname=物理系 ) ;,子查询,SQL提供的对于关系的操作符,并产生一个布尔型的结果。例如: EXISTS R 是一个条件,当且仅当关系R不空时为真。 集合运算符 IN ,NOT IN,子查询,例:查体育课不及格的男生名单: SELECT sname FROM student WHERE sex=男 AND sno IN ( SELECT sno FROM sc WHERE grade60 AND cno IN (SELECT cno FROM course WHERE cname=体育 ) );,查找年龄在50岁以上、工资小于本部门平均工资的职工,输出他们的姓名、年龄、工资: SELECT ename,age,sal FROM emp WHERE age50 and sal( SELECT avg(sal) FROM emp WHERE dno= );,e1,?,dno,e1.dno,emp.dno,子查询,SQL*Plus登录界面,java,o8i1,student151,SQL*Plus窗口(交互界面),SQL*Plus命令,SQL select * from cat ; SQL desc student SQLselect * from student ;,SQL*Plus命令,SQL edit a SQL a,

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

当前位置:首页 > 大杂烩/其它

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