关系数据库语言-SQL.ppt

上传人:小飞机 文档编号:6091902 上传时间:2023-09-23 格式:PPT 页数:31 大小:296.99KB
返回 下载 相关 举报
关系数据库语言-SQL.ppt_第1页
第1页 / 共31页
关系数据库语言-SQL.ppt_第2页
第2页 / 共31页
关系数据库语言-SQL.ppt_第3页
第3页 / 共31页
关系数据库语言-SQL.ppt_第4页
第4页 / 共31页
关系数据库语言-SQL.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《关系数据库语言-SQL.ppt》由会员分享,可在线阅读,更多相关《关系数据库语言-SQL.ppt(31页珍藏版)》请在三一办公上搜索。

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

2、一性。两种使用方式,统一的语法结构。联机交互使用方式。嵌入某种高级程序设计语言。,表格实例之一,选课(学号,课程号,成绩)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,dno)职工 职工号 姓名 性别 年龄 工资 领导 部门号其中,mge为职工的

3、上一级领导(即上一级领导的职工号),建立表对象,CREATE TABLE student(sno NUMBER(6),sname CHAR(6),sex CHAR(2),birthday DATE,dno CHAR(3);insert into studentvalues(980001,“李力”,“男”,“17-12月-1980”,“d01”);,INSERT INTO emp VALUES(e01,李宏,男,32,580.0,e100,d02);INSERT INTO emp(eno,ename,dno)VALUES(eo1,王兰,d01);UPDATE emp SET sal=sal*1.

4、1 WHERE dno=d01;DELETE FROM emp WHERE dno=d01;,DML 语句(DB写语句),Select 语句,SELECT*FROM studentWHERE sex=男 AND dno=D01;查询的结果仍可看成是一个关系,它由查出的记录组成。,查询语句中的投影操作,SELECT sno,sname,dno FROM studentWHERE sex男;该语句输出如下:sno sname dno980001 张自立 d01970020 李春生 d02,查询语句中的选择操作,例:查询79、80两年出生的男同学的名单:SELECT sname,birthdayFR

5、OM studentWHERE sex=男 AND birthday BETWEEN 01-1月-79 AND 31-12月-80;查询1980年以前出生的学生:SELECT*FROM studentWHERE birthday 01-1月-1980;,SQL语句中的运算符,算术运算符:,*,/逻辑运算符:与 AND、或 OR,非 NOT比较符:,!,=,其他运算符:IN,NOT IN 判断是否是集合的成员。BETWEEN AND 判断列值是否满足指定的区间LIKE 匹配模式 _%IS NOT NULL 测试空值,查询语句中的选择操作,在查询条件中,可以使用集合运算符 SELECT dname

6、,tel FROM dep WHERE dname IN(计算机系,外语系,中文系);该表达式等同于:dname=计算机系 OR dname=外语系 OR dname=中文系集合运算符NOT IN是IN的反义词,WHERE dname NOT IN(计算机系,外语系,中文系);,查询语句中的选择操作,空值查询学号为980001的同学正在学习的课程:SELECT cnoFROM scWHERE sno=980001 AND grade IS NULL;模糊匹配。_ 表示任意一个字符 表示任意个字符(包括0个)。例如,查询姓王的同学信息;SELECT*FROM student WHERE snam

7、e LIKE 王;,查询的排序输出,查询学生c01课程的成绩,并按成绩由高到低的顺序输出:SELECT sno,grade(输出学号和成绩)FROM scWHERE cno=c01and grade IS NOT NULLORDER BY grade DESC;排序输出的隐含顺序是升序(ASC),如果要求按列值的降序输出,需在列名后指定DESC。,(5)多表查询与连接操作(joins),笛卡尔积操作将结果关系扩展,如果笛卡尔积的两关系元组数分别为m和n,那么结果关系的元组数为mn,而在处理中往往只是需要其中部分元组。连接(Join)操作是从笛卡尔积中选择满足条件的元组。最常用的条件是等值连接,

8、Select*from student,dep where student.dno=dep.dno,dno,student,dep,多表查询与连接操作,表之间的连接操作(通常是自然连接)体现在WHERE子句中的连接条件。例:查询计算机系的学生信息SELECT sno,sname,sexFROM student,depWHERE student.dno=dep.dno AND dname=计算机系;,查询物理课不及格的学生名单(输出学生的学号、姓名及成绩):SELECT student.sno,sname,gradeFROM student,sc,courseWHERE cname=物理 AND

9、 grade60 AND o=o AND sc.sno=student.sno:在该例中,查询的结果来自两张表,而决定查询结果的因素涉及到三张表的信息。当一个查询涉及到几个关系时,为了区别不同表中的同名属性,我们可以在属性名前冠以关系名。,多表查询与连接操作,聚合操作,聚合是把关系作为运算对象的另一类操作,是对关系中的列值进行统计工作,最终得到一个统计值。例如求职工的平均年龄,求职工的工资总额等。常用5种聚合的操作符:SUM 对某列的值求和。AVG 求某列值的平均值。MIN 求某列值的最小值。MAX 求某列值的最大值。COUNT 统计某列值的个数(计数)。,例:统计职工的工资总额:SELECT

10、 SUM(sal)FROM emp;例:求职工的最高工资、最低工资和平均工资:SELECT MAX(sal),MIN(sal),AVG(sal)FROM emp;例:求女学生的学生总数:SELECT COUNT(*)FROM studentWHERE sex=女;,d01,d02,d01,d03,d01,d01,21,d02,18,19,20,21,18,22,sum,count,聚合操作,聚合操作,查询有多少名同学物理课不及格:SELECT COUNT(sno)FROM sc,courseWHERE cname=物理 AND o=o AND grade60;,聚合操作,求每个系的学生数而不是

11、求学生总数。希望得到下面的输出:dno count(*)d01 120d02 65 SELECT dno,count(*)FROM studentGROUP BY dno;,d01,d01,d01,d02,d02,d01,980001,d02,980003,980002,980004,981001,981003,981002,dno,count,count,聚合操作,查询每个学生已获得的学分(注:成绩及格即取得相应课程的学分):SELECT sno,sum(credit)FROM sc,courseWHERE grade60 AND o=oGROUP BY sno;,子查询,查询物理系的学生名

12、单(非子查询)SELECT snameFROM student,depWHERE dname=物理系 AND dep.dno=student.dno;子查询:SELECT snameFROM studentWHERE dno=(SELECT dno FROM dep WHERE dname=物理系);,子查询,SQL提供的对于关系的操作符,并产生一个布尔型的结果。例如:EXISTS R 是一个条件,当且仅当关系R不空时为真。集合运算符 IN,NOT IN,子查询,例:查体育课不及格的男生名单:SELECT sname FROM studentWHERE sex=男 AND sno IN(SEL

13、ECT sno FROM sc WHERE grade60 AND cno IN(SELECT cno FROM course WHERE cname=体育);,查找年龄在50岁以上、工资小于本部门平均工资的职工,输出他们的姓名、年龄、工资:SELECT ename,age,salFROM empWHERE 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 aSQL a,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号