1 / 25

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

第三章 关系数据库标准语言 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 于一体

otylia
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. 3.1 SQL概述 第三章 关系数据库标准语言SQL 三、SQL概念 外模式 模式 内模式

  5. 3.2 数据定义 第三章 关系数据库标准语言SQL SQL数据定义语句 NEXT

  6. 3.2 数据定义 第三章 关系数据库标准语言SQL 返回 CREATE TABLE语句 格式: CREATE TABLE <表名> (<列名><数据类型>[<列完整性约束条件>][,<列名><数据类型>[<列完整性约束条件>]…][,<表完整性约束条件>]); 功能:建立一个基本表 例1:建立一个学生表 CREATE TABLE Student(Sno CHAR(5)NOT NULL UNIQUE,Sname CHAR(20)UNIQUE,Ssex CHAR(1),Sage INT,Sdept CHAR(15));

  7. 3.2 数据定义 第三章 关系数据库标准语言SQL 返回 ALTER TABLE语句 格式: 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);

  8. 3.2 数据定义 第三章 关系数据库标准语言SQL 返回 DROP TABLE语句 格式: DROP TABLE <表名>; 功能:删除已建的基本表 例5:删除学生表 DROP TABLE Student; 注意:一旦删除基本表,此表上建立的索引、视图将自动删除!!

  9. 3.2 数据定义 第三章 关系数据库标准语言SQL 返回 CREATE INDEX语句 格式: CREATE [UNIQUE] [CLUSTER] INDEX <索引名>ON<表名> (<列名>[<次序>][,<列名>[<次序>]…]); 功能:为已建的基本表建立索引 例6:为学生表建立按学号的索引Stuno CREATE UNIQUE INDEX Stuno ON Student(Sno);

  10. 3.2 数据定义 第三章 关系数据库标准语言SQL 返回 DROP INDEX语句 格式: DROP INDEX <索引名>; 功能:将已建的索引删除 例7:将学生表已建立的索引Stuno删除 DROP INDEX Stuno; 注意:删除基本表已建立的索引不会影响其他数据、和其他索引!!

  11. 3.3 查询 第三章 关系数据库标准语言SQL SELECT-FROM语句 常用格式: 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)

  12. 3.3 查询 第三章 关系数据库标准语言SQL 1.简单查询——单表查询 例1:查询学生的学号和姓名 SELECT Sno, Sname FROM Student; ПSno ,Sname(Student) 例2:查询学生的情况 SELECT * FROM Student; ПSno,Sname,Ssex,Sage,Sdept(Student) 例3:查询学生姓名和出生年份 SELECT Sname,2002-Sage FROM Student; 关系代数无法表示。

  13. 3.3 查询 第三章 关系数据库标准语言SQL 例4:查询选修课程的学生学号 SELECT Sno FROM SC; ПSno(σGrade≠‘’(Student)) 例4-1:查询选修课程的学生学号 SELECT DISTINCT Sno FROM SC; 例5:查询20岁以下的学生姓名及年龄 SELECT Sname,Sage FROM Student WHRER Sage<20; ПSname,Sage(σSage<20(Student))

  14. 3. 3 查询 第三章 关系数据库标准语言SQL 查询条件运算符

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

  16. 3.3 查询 第三章 关系数据库标准语言SQL 2.连接查询——多表查询 例1:查询学生的选课情况 SELECT Student.*, SC.* FROM Student, SC WHERE Student.Sno=SC.Sno; Student ∞ SC 例1-1:查询学生的选课情况 SELECT Student.Sno, Sname,SC.Cno,Grade FROM Student, SC WHERE Student.Sno=SC.Sno; ПStudent.Sno,Sname,Cno,Grade(Student ∞ SC)

  17. 3.3 查询 第三章 关系数据库标准语言SQL 例2:查询学生的选课情况 SELECT Student.*, SC.* FROM Student, SC; Student × SC 例3:自身连接。查询每门课的间接先修课 SELECT First.Cno, Second.Cpno FROM Cource First, Course Second WHERE First.Cpno=Second.Cno; ПCno,Cpno(Course ∞ Course) Cpno=Cno

  18. 3.3 查询 第三章 关系数据库标准语言SQL 例4:外连接。查询学生的选课情况 SELECT Student.Sno, Cno,Grade FROM Student, SC WHERE Student.Sno=SC.Sno(*); ПStudent.Sname,Cno,Grade(Student∝SC) 例5:复合条件连接。查询选修2号课程,成绩90分以上的学生学号和姓名 SELECT Student.Sno, Sname FROM Student, SCWHERE Student.Sno=SC.Sno AND SC.Cno =‘2’ AND SC.Grade>90; ПStudent.Sno,Sname(σGrade>90∧SC.Cno=‘2’(Student∞SC)) ПStudent.Sno,Sname(σStudent.Sno=SC.Sno∧Grade>90∧SC.Cno=‘2’ (Student×SC))

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

  20. 3.4 数据更新 第三章 关系数据库标准语言SQL 1. 插入数据 格式2: INSERT INTO<表名>[(<属性1>[, <属性2>]…)] 子查询; 例2:将Stu1中的数学系(MA)学生记录插入Student中 INSERT INTO Student SELECT * FROM Stu1 WHERE Sdept=‘MA’;

  21. 3.4 数据更新 第三章 关系数据库标准语言SQL 2. 修改数据 格式: UPDATE <表名> SET <属性1>=<表达式1>[,<属性2>=<表达式2> …)] [WHERE <条件>]; 例1:修改单个元组的值 UPDATE Student SET Sage=21 WHERE Sno=‘99022’; 例2:修改多个元组的值 UPDATE Student SET Sage=Sage+1; 例3:带子查询的修改 UPDATE SC SET Grade=0 WHERE ‘CS’=(SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno);

  22. 3.4 数据更新 第三章 关系数据库标准语言SQL 3. 删除数据 格式: DELETE FROM <表名> [WHERE <条件>]; 4. 数据更新的数据一致性问题 例1:删除单个元组 Delete FROM Student WHERE Sno=‘99022’; 例2:删除多个元组 DELETE FROM SC WHERE Grade<60; 例3:带子查询的删除 DELETE FROM SC WHERE ‘CS’=(SELECT Sdept FROM Student WHERE Student.Sno=SC.Sno);

  23. 3.5 视图 第三章 关系数据库标准语言SQL 视图的操作与基本表基本上是相同的。 视图的作用: 1.视图能够简化用户的操作; 2.同一数据可以在不同的视图中出现; 3.视图可以提高数据的逻辑独立性; 4.视图可以提高数据的安全性。

  24. 3.6 数据控制 第三章 关系数据库标准语言SQL SQL的数据控制提供了用户权限的操。 3.7 嵌入式SQL SQL的两种使用方式: 1.宿主式SQL; 2.嵌入式SQL。

  25. 习 题 第三章 关系数据库标准语言SQL 1-9; 12

More Related