1、An Introduction to Database System数据库系统概论An Introduction to Database System第三章 关系数据库标准语言SQLAn Introduction to Database System第三章 关系数据库标准语言 SQL3.1 SQL概述3.2 学生 -课程数据库3.3 数据定义3.4 数据查询3.5 数据更新3.6 视图3.7 小结An Introduction to Database System3.1 SQL概述SQL( Structured Query Language)结构化查询语言,是关系数据库的标准语言SQL是一个通
2、用的、功能极强的关系数据库语言An Introduction to Database SystemSQL概述(续)3.1.1 SQL 的产生与发展3.1.2 SQL的特点3.1.3 SQL的基本概念An Introduction to Database SystemSQL标准的进展过程标准 大致页数 发布日期 SQL/86 1986.10 SQL/89(FIPS 127-1) 120页 1989年 SQL/92 622页 1992年 SQL99 1700页 1999年 SQL2003 2003年An Introduction to Database System3.1 SQL概述3.1.1 S
3、QL 的产生与发展3.1.2 SQL的特点3.1.3 SQL的基本概念An Introduction to Database System3.1.2 SQL的特点1.综合统一集数据定义语言( DDL),数据操纵语言( DML),数据控制语言( DCL)功能于一体。可以独立完成数据库生命周期中的全部活动: 定义关系模式,插入数据,建立数据库; 对数据库中的数据进行查询和更新; 数据库重构和维护 数据库安全性、完整性控制等用户数据库投入运行后,可根据需要随时逐步修改模式,不影响数据的运行。数据操作符统一An Introduction to Database System2.高度非过程化非关系数据模
4、型的数据操纵语言 “面向过程 ”,必须制定存取路径SQL只要提出 “做什么 ”,无须了解存取路径。 存取路径的选择以及 SQL的操作过程由系统自动完成。An Introduction to Database System3.面向集合的操作方式非关系数据模型采用面向记录的操作方式,操作对象是一条记录SQL采用集合操作方式 操作对象、查找结果可以是元组的集合 一次插入、删除、更新操作的对象可以是元组的集合An Introduction to Database System4.以同一种语法结构提供多种使用方式SQL是独立的语言能够独立地用于联机交互的使用方式SQL又是嵌入式语言SQL能够嵌入到高级语
5、言(例如 C, C+, Java)程序中,供程序员设计程序时使用An Introduction to Database System5.语言简洁,易学易用 SQL功能极强,完成核心功能只用了 9个动词。表3.1 SQL语言的动词 SQL 功 能 动 词 数 据 查 询 SELECT 数 据 定 义 CREATE, DROP, ALTER数 据 操 纵 INSERT, UPDATE DELETE 数 据 控 制 GRANT, REVOKE An Introduction to Database System3.1 SQL概述3.1.1 SQL 的产生与发展3.1.2 SQL的特点3.1.3 SQ
6、L的基本概念An Introduction to Database SystemSQL的基本概念(续)SQL视图 2视图 1基本表 2基本表 1 基本表 3 基本表 4存储文件 2存储文件 1外模式模式内模式SQL支持关系数据库三级模式结构An Introduction to Database SystemSQL的基本概念(续)基本表 本身独立存在的表 SQL中一个关系就对应一个基本表 一个 (或多个 )基本表对应一个存储文件 一个表可以带若干索引存储文件 逻辑结构组成了关系数据库的内模式 物理结构是任意的,对用户透明视图 从一个或几个基本表导出的表 数据库中只存放视图的定义而不存放视图对应的
7、数据 视图是一个虚表 用户可以在视图上再定义视图An Introduction to Database System第三章 关系数据库标准语言 SQL3.1 SQL概述3.2 学生 -课程数据库3.3 数据定义3.4 数据查询3.5 数据更新3.6 视图3.7 小结An Introduction to Database System3.2 学生 -课程 数据库学生 -课程模式 S-T : 学生表: Student(Sno,Sname,Ssex,Sage,Sdept)课程表: Course(Cno,Cname,Cpno,Ccredit)学生选课表: SC(Sno,Cno,Grade)An Int
8、roduction to Database SystemStudent表学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept200215121200215122200215123200515125李勇刘晨王敏张立男女女男20191819CSCSMAISAn Introduction to Database SystemCourse表课程号Cno课程名Cname先行课Cpno学分Ccredit1234567数据库数学信息系统操作系统数据结构数据处理PASCAL语言516764243424An Introduction to Database SystemSC表学号Sno课程号Cno成
9、绩Grade200215121200215121200215121200215122200215122123239285889080An Introduction to Database System第三章 关系数据库标准语言 SQL3.1 SQL概述3.2 学生 -课程数据库3.3 数据定义3.4 数据查询3.5 数据更新3.6 视图3.7 小结An Introduction to Database System3.3 数据定义表3.2 SQL的数据定义语句 操 作 方 式 操 作 对 象 创 建 删 除 修 改 模式 CREATE SCHEMA DROP SCHEMA 表 CREATE T
10、ABLE DROP TABLE ALTER TABLE视 图 CREATE VIEW DROP VIEW 索 引 CREATE INDEX DROP INDEX SQL的数据定义功能 : 模式定义、表定义、视图和索引的定义An Introduction to Database System3.3 数据定义3.3.1 模式的定义与删除3.3.2 基本表的定义、删除与修改3.3.3 索引的建立与删除An Introduction to Database System定义模式(续)例 1定义一个学生 -课程模式 S-TCREATE SCHEMA “S-T” AUTHORIZATION WANG;为用
11、户 WANG定义了一个模式 S-T例 2CREATE SCHEMA AUTHORIZATION WANG;隐含为用户名 WANG 如果没有指定 ,那么 隐含为 An Introduction to Database System定义模式(续) 定义模式实际上定义了一个 命名空间 在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。 在 CREATE SCHEMA中可以接受 CREATE TABLE, CREATE VIEW和 GRANT子句。CREATE SCHEMA AUTHORIZATION |An Introduction to Database System定义模式(
12、续)例 3CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT,COL2 INT,COL3 CHAR(20),COL4 NUMERIC(10, 3),COL5 DECIMAL(5, 2);为用户 ZHANG创建了一个模式 TEST,并在其中定义了一个表 TAB1。An Introduction to Database System二、删除模式 DROP SCHEMA CASCADE(级联 )删除模式的同时把该模式中所有的数据库对象全部删除RESTRICT(限制 )如果该模式中定义了下属的数据库对象(如表、视
13、图等),则拒绝该删除语句的执行。当该模式中没有任何下属的对象时 才能执行。An Introduction to Database System删除模式(续)例 4 DROP SCHEMA ZHANG CASCADE;删除模式 ZHANG同时该模式中定义的表 TAB1也被删除An Introduction to Database System3.3 数据定义3.3.1 模式的定义与删除3.3.2 基本表的定义、删除与修改3.3.3 索引的建立与删除An Introduction to Database System3.3.2 基本表的定义、删除与修改一、定义基本表CREATE TABLE ( , , );如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。An Introduction to Database System学生 表 Student例 5 建立 “学生 ”表 Student,学号是主码,姓名取值唯一。CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件 */ Sname CHAR(20) UNIQUE, /* Sname取唯一值 */Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20);主码