第三章 关系数据库标准语言 SQL

25
第第第 第第第第第第第第第 SQL

description

第三章 关系数据库标准语言 SQL. 3.1 SQL 概述. 第三章 关系数据库标准语言 SQL. 一、发展历史 74 年,由 Boyce 和 Chamberlin 提出 70 年代末, IBM 在 System R 上实现 86 年 10 月, ANSI 的 X3H2 批准为美国标准 87 年, ISO 批准国际标准   目前, ANSI 公布的最新标准是 SQL-92. 3.1 SQL 概述. 第三章 关系数据库标准语言 SQL. 二、 SQL 特点 1. 综合统一 集 DDL 、 DML 、 DCL 于一体 - PowerPoint PPT Presentation

Transcript of 第三章 关系数据库标准语言 SQL

Page 1: 第三章  关系数据库标准语言 SQL

第三章 关系数据库标准语言 SQL

Page 2: 第三章  关系数据库标准语言 SQL

3.1 SQL 概述一、发展历史   74 年,由 Boyce 和 Chamberlin 提出   70 年代末, IBM 在 System R 上实现   86 年 10 月, ANSI 的 X3H2 批准为美国标准   87 年, ISO 批准国际标准  目前, ANSI 公布的最新标准是 SQL-92

第三章 关系数据库标准语言 SQL

Page 3: 第三章  关系数据库标准语言 SQL

3.1 SQL 概述二、 SQL 特点   1. 综合统一 集 DDL 、 DML 、 DCL 于一体   2. 高度非过程化 一个语句完成一个特定功能   3. 面向集合的操作方式   4. 两种使用环境   5. 简捷、易学、易用

第三章 关系数据库标准语言 SQL

Page 4: 第三章  关系数据库标准语言 SQL

3.1 SQL 概述三、 SQL 概念  

第三章 关系数据库标准语言 SQL

SQL

存储文件2存储文件1

基本表4基本表3基本表2基本表1

视图2视图1 外模式模式内模式

Page 5: 第三章  关系数据库标准语言 SQL

3.2 数据定义SQL 数据定义语句

第三章 关系数据库标准语言 SQL

操作对象 操作方式创建 删除 修改

表 CREATE TABLE DROP TABLE ALTER TABLE

视图 CREATE VIEW DROP VIEW

索引 CREATE INDEX DROP INDEX

NEXT

Page 6: 第三章  关系数据库标准语言 SQL

3.2 数据定义CREATE TABLE 语句

第三章 关系数据库标准语言 SQL

格式:   CREATE TABLE < 表名 >  ( < 列名 >< 数据类型 >[< 列完整性约束条件 >][ , < 列名 >< 数据类型 >[< 列完整性约束条件 >]…][ , <表完整性约束条件 >] );功能:建立一个基本表例1:建立一个学生表   CREATE TABLE Student(Sno CHAR(5) NOT NULL U

NIQUE,Sname CHAR(20) UNIQUE,Ssex CHAR(1),Sage INT,Sdept CHAR(15));

返回

Page 7: 第三章  关系数据库标准语言 SQL

3.2 数据定义ALTER TABLE 语句

第三章 关系数据库标准语言 SQL

格式:   ALTER TABLE < 表名 > [ADD < 新列名 >< 数据类型 >[< 列完整性约束 >]] [DROP< 列完整性约束名 >][MODIFY < 列名 >< 数据类型 >] ;功能:修改已建的基本表例 2 :向学生表增加“入学时间”属性列 ALTER TABLE Student ADD Scome DATE;例 3 :修改学生表的“年龄”属性类型为半字长整数   ALTER TABLE Student MODIFY Sage SMALLINT;例 4 :删除学生表“姓名”属性列取唯一值的约束   ALTER TABLE Student DROP UNIQUE(Sname);

返回

Page 8: 第三章  关系数据库标准语言 SQL

3.2 数据定义DROP TABLE 语句

第三章 关系数据库标准语言 SQL

格式:   DROP TABLE < 表名 > ;功能:删除已建的基本表例 5 :删除学生表 DROP TABLE Student;注意:一旦删除基本表,此表上建立的索引、视图将自动删除!!

返回

Page 9: 第三章  关系数据库标准语言 SQL

3.2 数据定义CREATE INDEX 语句

第三章 关系数据库标准语言 SQL

格式:   CREATE [UNIQUE] [CLUSTER] INDEX < 索引名 >   ON< 表名 > ( < 列名 >[< 次序 >]   [ , < 列名 >[< 次序 >]…] );功能:为已建的基本表建立索引例 6 :为学生表建立按学号的索引 Stuno CREATE UNIQUE INDEX Stuno ON Student(Sno);

返回

Page 10: 第三章  关系数据库标准语言 SQL

3.2 数据定义DROP INDEX 语句

第三章 关系数据库标准语言 SQL

格式:   DROP INDEX < 索引名 > ;功能:将已建的索引删除例 7 :将学生表已建立的索引 Stuno 删除 DROP INDEX Stuno;注意:删除基本表已建立的索引不会影响其他数据、和其他索引!!

返回

Page 11: 第三章  关系数据库标准语言 SQL

3.3 查询SELECT-FROM 语句

第三章 关系数据库标准语言 SQL

常用格式:   SELECT [ALL|DISTINCT] < 属性表达式 >[ , < 属性表达式 >…] FROM < 表名或视图名 >[ , < 表名或视图名 >…] [WHERE < 条件 >] [GROUP BY < 属性 1>[HAVING< 条件 >]] [ORDER BY < 属性 2> [ASC|DEC]] ;功能:显示(多个)表和视图的查询结果例:若学生选课数据库包括三个表,模式结构为: Student (Sno, Sname, Ssex, Sage, Sdept) Course (Cno, Cname, Cpno, Ccredit) SC (Sno, Cno, Grade)

Page 12: 第三章  关系数据库标准语言 SQL

3.3 查询1. 简单查询——单表查询

第三章 关系数据库标准语言 SQL

ПSno ,Sname(Student)例 1 :查询学生的学号和姓名 SELECT Sno, Sname FROM Student ;例 2 :查询学生的情况 SELECT * FROM Student ; ПSno,Sname,Ssex,Sage,Sdept(Student)例 3 :查询学生姓名和出生年份 SELECT Sname,2002-Sage FROM Student ; 关系代数无法表示。

Page 13: 第三章  关系数据库标准语言 SQL

3.3 查询第三章 关系数据库标准语言 SQL

ПSno(σGrade≠ ‘’ (Student))例 4 :查询选修课程的学生学号 SELECT Sno FROM SC ;

例 5 :查询 20 岁以下的学生姓名及年龄 SELECT Sname,Sage FROM Student WHRER Sage<20 ;

例 4-1 :查询选修课程的学生学号 SELECT DISTINCT Sno FROM SC ;

ПSname,Sage(σSage<20 (Student))

Page 14: 第三章  关系数据库标准语言 SQL

3. 3 查询查询条件运算符

第三章 关系数据库标准语言 SQL

查询条件 谓词 示例 (WHERE 后 )比  较 =, >, <, >=, <=,

!=, <>, !>, !< Sdept=‘CS’

Sage <> 20确定范围 BETWEEN AND,

NOT BETWEEN AND Sage between 18 and 21

确定集合 IN, NOT IN Sdept in (‘CS’,’IS’,’MA’)字符匹配 LIKE, NOT LIKE Sname like ‘ 张’空  值 IS NULL, IS NOT NULL Sno IS NULL逻辑运算 NOT, AND, OR

Sname like ‘ 张’ ANDSdept in (‘CS’,’IS’,’MA’)

Page 15: 第三章  关系数据库标准语言 SQL

3.3 查询第三章 关系数据库标准语言 SQL

例 6 :查询不是“计算机系 CS” 和“数学系 MS” 学生情况,结果按系名升序排列,同一系按年龄降序排列。 SELECT * FROM Student WHERE Sdept NOT IN (‘CS’,‘MS’) ORDER BY Sdept, Sage DESC ;关系代数无法表示。

例 7 :查询各个课程的选修人数及课程号。 SELECT COUNT(Sno), Cno FROM SC GROUP BY Cno ; 关系代数无法表示。

Page 16: 第三章  关系数据库标准语言 SQL

3.3 查询2. 连接查询——多表查询

第三章 关系数据库标准语言 SQL

例 1 :查询学生的选课情况 SELECT Student.*, SC.* FROM Student, SC WHERE Student.Sno=SC.Sno ;例 1-1 :查询学生的选课情况 SELECT Student.Sno, Sname,SC.Cno,Grade FROM Student, SC WHERE Student.Sno=SC.Sno ;

Student ∞ SC

ПStudent.Sno,Sname,Cno,Grade(Student ∞ SC)

Page 17: 第三章  关系数据库标准语言 SQL

3.3 查询第三章 关系数据库标准语言 SQL

例 2 :查询学生的选课情况 SELECT Student.*, SC.* FROM Student, SC ;例 3 :自身连接。查询每门课的间接先修课 SELECT First.Cno, Second.Cpno FROM Cource First, Course Second WHERE First.Cpno=Second.Cno ;

Student × SC

ПCno,Cpno(Course ∞ Course) Cpno=Cno

Page 18: 第三章  关系数据库标准语言 SQL

3.3 查询第三章 关系数据库标准语言 SQL

例 4 :外连接。查询学生的选课情况 SELECT Student.Sno, Cno,Grade FROM Student, SC WHERE Student.Sno=SC.Sno(*) ;例 5 :复合条件连接。查询选修 2 号课程,成绩 90 分以上的学生学号和姓名 SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno =‘2’ AND SC.Grade>90 ;

ПStudent.Sname,Cno,Grade(Student∝SC)

ПStudent.Sno,Sname(σGrade>90∧SC.Cno=‘2’ (Student∞SC))ПStudent.Sno,Sname(σStudent.Sno=SC.Sno∧Grade>90∧SC.Cno=‘2’(Student×SC))

Page 19: 第三章  关系数据库标准语言 SQL

3.4 数据更新第三章 关系数据库标准语言 SQL

1. 插入数据格式 1: INSERT INTO < 表名 >[(< 属性 1>[, < 属性 2>]…)] VALUE (< 常量 1>[,< 常量 2>]…) ; 例 1 :插入新学生的记录 INSERT INTO Student VALUE (‘99022’,‘ 李鹏’ ,‘ 男’ ,‘IS’,‘21’) ;例 1-1 :插入新学生的记录 INSERT INTO Student(Sno,Sname,Sage) VALUE (‘99022’,‘ 李鹏’ ,‘21’) ;

Page 20: 第三章  关系数据库标准语言 SQL

3.4 数据更新第三章 关系数据库标准语言 SQL

1. 插入数据格式 2: INSERT INTO < 表名 >[(< 属性 1>[, < 属性 2>]…)] 子查询; 例 2 :将 Stu1 中的数学系( MA )学生记录插入 Student 中 INSERT INTO Student SELECT * FROM Stu1 WHERE Sdept=‘MA’ ;

Page 21: 第三章  关系数据库标准语言 SQL

3.4 数据更新第三章 关系数据库标准语言 SQL

2. 修改数据格式 : UPDATE < 表名 > SET < 属性 1>=< 表达式 1>[,< 属性 2>=< 表达式 2> …)] [WHERE < 条件 >] ; 例 1 :修改单个元组的值 UPDATE Student SET Sage=21 WHERE Sno=‘99022’ ;例 3 :带子查询的修改 UPDATE SC SET Grade=0 WHERE ‘CS’=(SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno) ;

例 2 :修改多个元组的值 UPDATE Student SET Sage=Sage+1 ;

Page 22: 第三章  关系数据库标准语言 SQL

3.4 数据更新第三章 关系数据库标准语言 SQL

3. 删除数据格式 : DELETE FROM < 表名 > [WHERE < 条件 >] ; 例 1 :删除单个元组 Delete FROM Student WHERE Sno=‘99022’ ;例 3 :带子查询的删除 DELETE FROM SC WHERE ‘CS’=(SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno) ;

例 2 :删除多个元组 DELETE FROM SC WHERE Grade<60 ;

4. 数据更新的数据一致性问题

Page 23: 第三章  关系数据库标准语言 SQL

3.5 视图第三章 关系数据库标准语言 SQL

视图的操作与基本表基本上是相同的。视图的作用: 1. 视图能够简化用户的操作; 2. 同一数据可以在不同的视图中出现; 3. 视图可以提高数据的逻辑独立性; 4. 视图可以提高数据的安全性。

Page 24: 第三章  关系数据库标准语言 SQL

3.6 数据控制第三章 关系数据库标准语言 SQL

SQL 的数据控制提供了用户权限的操。

SQL 的两种使用方式: 1. 宿主式 SQL ; 2. 嵌入式 SQL 。

3.7 嵌入式 SQL

Page 25: 第三章  关系数据库标准语言 SQL

习 题1 - 9; 12

第三章 关系数据库标准语言 SQL