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

Post on 18-Mar-2016

110 views 5 download

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

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

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

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

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

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

3.1 SQL 概述三、 SQL 概念  

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

SQL

存储文件2存储文件1

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

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

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

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

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

表 CREATE TABLE DROP TABLE ALTER TABLE

视图 CREATE VIEW DROP VIEW

索引 CREATE INDEX DROP INDEX

NEXT

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));

返回

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);

返回

3.2 数据定义DROP TABLE 语句

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

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

返回

3.2 数据定义CREATE INDEX 语句

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

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

返回

3.2 数据定义DROP INDEX 语句

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

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

返回

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)

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 ; 关系代数无法表示。

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))

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’)

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 ; 关系代数无法表示。

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)

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

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))

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’) ;

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

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

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 ;

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. 数据更新的数据一致性问题

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

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

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

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

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

3.7 嵌入式 SQL

习 题1 - 9; 12

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