1 / 37

数据库系统概论 An Introduction to Database System 第三章 关系数据库标准语言 SQL

数据库系统概论 An Introduction to Database System 第三章 关系数据库标准语言 SQL. 内容概述. 本章详细介绍 SQL 语言,即结构化查询语言,它是关系数据库的标准语言,是一个通用的、功能强大的关系数据库语言。主要介绍 SQL 语言的数据定义、数据查询、数据操纵和数据控制功能。. 本章目标. 使学生熟练掌握 SQL 语言的使用,能够灵活使用 SQL 语句对数据库中的数据进行操作。. 第三章 关系数据库标准语言 SQL. 3.1 SQL 概述 3.2 学生 - 课程数据库 3.3 数据定义 3.4 数据查询

lilli
Download Presentation

数据库系统概论 An Introduction to Database System 第三章 关系数据库标准语言 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. 数据库系统概论 An Introduction to Database System 第三章 关系数据库标准语言SQL

  2. 内容概述 本章详细介绍SQL语言,即结构化查询语言,它是关系数据库的标准语言,是一个通用的、功能强大的关系数据库语言。主要介绍SQL语言的数据定义、数据查询、数据操纵和数据控制功能。

  3. 本章目标 使学生熟练掌握SQL语言的使用,能够灵活使用SQL语句对数据库中的数据进行操作。

  4. 第三章 关系数据库标准语言SQL 3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图 3.7嵌入式SQL 3.8 小结

  5. 3.1.1 SQL的产生与发展 • SQL是在1974年提出,并在IBM公司研制的关系数据库管理系统原型System R上实现。 • SQL作为国际标准语言已成为数据库领域中的主流语言。

  6. 3.1.2 SQL的特点 • 1. 综合统一 • 2. 高度非过程化 • 3. 面向集合的操作方式 • 4. 以同一种语法结构提供两种使用方法 • 5. 语言简洁,易学易用

  7. SQL功能 动词 数据查询 SELECT 数据定义 CREATE,DROP,ALTER 数据操纵 INSERT,UPDATE,DELETE 数据控制 GRANT,REVOKE 核心功能只有9个动词 SQL的动词

  8. 3.1.3 SQL的基本概念 • 支持SQL的RDBMS同样支持关系数据库三级模式结构 • 基本表:本身独立存在的表,在SQL中一个关系对应一个基本表。基本表和索引对应存储文件 • 视图:从一个或几个基本表导出的表,是虚表,数据库中只存放视图的定义而不存放视图对应的数据。

  9. 第三章 关系数据库标准语言SQL 3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图 3.7嵌入式SQL 3.8 小结

  10. 学 号 Sno 姓 名 Sname 性 别 Ssex 年 龄 Sage 所 在 系 Sdept 95001 李勇 男 20 CS 95002 刘晨 女 19 IS 95003 王敏 女 18 MA 95004 张立 男 19 IS Student(Sno , Sname , Ssex , Sage , Sdept) 数据示例 Student

  11. 课程号 课程名 先行课 学分 Cno Cname Cpno Ccredit 1 数据库 5 4 2 数学 2 3 信息系统 1 4 4 操作系统 6 3 5 数据结构 7 4 6 数据处理 2 7 PASCAL语言 6 4 Course ( Cno , Cname , Cpno , Ccredit ) 数据示例 Course

  12. 学 号 课 程 号 成 绩 Sno Cno Grade 95001 1 92 95001 2 85 95001 3 88 95002 2 90 95002 3 80 SC ( Sno , Cno , Grade ) 数据示例 SC

  13. 第三章 关系数据库标准语言SQL 3.1 SQL概述 3.2 学生-课程数据库 3.4 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图 3.7嵌入式SQL 3.8 小结

  14. 操作对象 操作方式 创建 删除 修改 模式 CREATE SCHEMA DROP SCHEMA 表 CREATE TABLE DROP TABLE ALTER TABLE 视图 CREATE VIEW DROP VIEW 索引 CREATE INDEX DROP INDEX 3.3 数 据 定 义 SQL的数据定义语句

  15. 一、模式的定义与删除 1.定义模式 CREATE SCHEMA [<模式名>] AUTHORIZATION <用户名> [<表定义子句>|<视图定义子句>|<授权定义子句>] • 不指定模式名时隐含为用户名。 • 有DBA权限或被授予了CREATE SCHEMA的用户才能进行模式创建

  16. 一、模式的定义与删除 [例1] CREATE SCHEMA S-T AUTHORIZATION WANG; [例2] CREATE SCHEMA AUTHORIZATION WANG; [例3] CREATE SCHEMA TEST AUTHORIZATION LI CREATE TABLE TAB1 (COL1 INT, COL2 CHAR(20)); 模式名为WANG

  17. 一、模式的定义与删除 2.删除模式 DROP SCHEMA <模式名> <CASCADE | RESTRICT> • CASCADE和RESTRICT必选其一。 • 选择CASCADE(级联),表示删除模式的同时把该模式中的所有数据库对象全部删除。 • 选择RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行。 [例4] DROP SCHEMA ZHANG CASCADE;

  18. 二、基本表的定义、删除与修改 1.定义基本表 CREATE TABLE <表名> (<列名> <数据类型>[ <列级完整性约束条件> ] [,<列名> <数据类型>[ <列级完整性约束条件>] ] … [,<表级完整性约束条件> ] ); • <表名>:所要定义的基本表的名字 • <列名>:组成该表的各个属性(列) • <列级完整性约束条件>:涉及相应属性列的完整性约束条件 • <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件

  19. 定义基本表(续) • 常用完整性约束 • 主码约束: PRIMARY KEY • 唯一性约束:UNIQUE • 非空值约束:NOT NULL • 参照完整性约束:FOREIGN KEY 外码列名 REFERENCES 表名(被参照列名) PRIMARY KEY与 UNIQUE的区别?

  20. 数据类型 含义 CHAR(n) 长度为n的定长字符串 VARCHAR(n) 最大长度为n的变长字符串 INT 长整数 SMALLINT 短整数 DECIMAL(p[,s]) 定点数,共p位(不包括符号、小数点), 或NUMERIC(p[,s])其中小数点后s位,s=0时可省略 REAL(n) (双字长浮点数)取决于机器精度的浮点数 FLOAT(n) (四字长浮点数)精度至少为n的浮点数 DATE 日期型,格式为YYYY―MM―DD TIME 时间型,格式为HH.MM.SS TIMESTAMP 日期加时间 定义基本表(续) • 数据类型

  21. [例5] 建立一个“学生”表Student,它由学号Sno、学生姓名Sname、性别Ssex、年龄Sage、所在系Sdept组成,其中Sno为主码。 CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY , Sname CHAR(20) UNIQUE , Ssex CHAR(2) , Sage SMALLINT , Sdept CHAR(20) ) ;

  22. [例6] 建立一个“课程”表Course,它由课程号Cno、课程名Cname、先行课号Cpno、学分Ccredit组成,其中Cno为主码。 CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY , Cname CHAR(40) , Cpno CHAR(4) , Ccredit SMALLINT , FOREIGN KEY Cpno REFERENCES Course( Cno) ) ;

  23. [例7] 建立一个“学生选课”表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno, Cno)为主码。 CREATE TABLE SC ( Sno CHAR(9) , Cno CHAR(4) , Grade SMALLINT, PRIMARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student (Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno));

  24. 3.修改基本表 (1)语句格式 ALTER TABLE <表名> [ ADD <新列名> <数据类型> [ 完整性约束 ] ] [ DROP <完整性约束名> ] [ALTER COLUMN <列名> <数据类型> ] • <表名>:要修改的基本表 • ADD子句:增加新列和新的完整性约束条件 • DROP子句:删除指定的完整性约束条件 • ALTER COLUMN子句:用于修改列名和数据类型

  25. 不论基本表中原来是否已有数据,新增加的列一律为空值。 不论基本表中原来是否已有数据,新增加的列一律为空值。  修改基本表举例 [例8]向Student中增加“入学时间”列 ALTER TABLE Student ADD S_entrance DATE; [例9]将年龄的数据类型由字符型改为整数 ALTER TABLE Student ALTER COLUMN Sage INT; • 修改原有的列定义有可能会破坏已有数据  [例10]增加课程名称必须取唯一值的约束条件 ALTER TABLE Course ADD UNIQUE(Cname);

  26. 补充:怎样删除属性列? 直接/间接删除 • 把表中要保留的列及其内容复制到一个新表中 • 删除原表 • 再将新表重命名为原表名 直接删除属性列:(新) 例:ALTER TABLE Student Drop Sname;

  27. 4.删除基本表 DROP TABLE <表名> [<CASCADE|RESTRICT>]; • 数据、表上的索引都删除 • 表上的视图往往仍然保留,但无法引用 基本表删除 删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述

  28. 标准及主流数 据库的处理 方式 删除基本表 依赖基本表的对象

  29. 三、模式与表 每一个基本表都属于某一个模式,当定义基本表时如何 定义它所属的模式?三种方法: • 在表名中明显地指出模式名 [例11] CREATE TABLE S-T.SC(……); • 在创建模式语句中同时创建表 • 设置所属的模式,此种方法在创建表时不用给出模式名 SET search_path TO S-T,PUBLIC; CREATE TABLE SC(……);

  30. 四、建立与删除索引 加快查询速度的有效手段 • 索引的作用: • 谁来建立索引? • DBA或表的属主(即建立表的人)根据需要建立 • 有些DBMS自动建立以下列上的索引 • PRIMARY KEY • UNIQUE • 谁来维护索引? DBMS自动完成 • 如何使用索引? DBMS自动选择是否使用索引以及使用哪些索引

  31. 1.建立索引 • 语句格式 CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…); • 用<表名>指定要建索引的基本表名字 • 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 • 用<次序>指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC。

  32. 1.建立索引(续) • UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 • 对于已含重复值的属性列不能建UNIQUE索引 • 对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束

  33. [例12] 为学生-课程数据库中的Course,SC表建立索引。其中Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。 CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);

  34. 1.建立索引(续) • CLUSTER表示要建立的索引是聚簇索引 • 建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致 • 在一个基本表上最多只能建立一个聚簇索引 • 聚簇索引的用途:对于某些类型的查询,可以提高查询效率 • 聚簇索引的适用范围: • 很少对基表进行增删操作 • 很少对其中的变长列进行修改操作

  35. [例13] 为学生-课程数据库中的Student表的Sname(姓名)列上建立一个聚簇索引,而且Student表中的纪录按照Sname 值的升序存放。 CREATE CLUSTER INDEX Stusname ON Student( Sname ) ;

  36. 2.删除索引 DROP INDEX <索引名>; • 删除索引时,系统会从数据字典中删去有关该索引的描述。 [例15] 删除Student表的Stusname索引。 DROP INDEX Stusname;

  37. 下课了。。。 追 求 休息一会儿。。。

More Related