第3章关系数据库语言SQL
第三章 关系数据库查询语言SQL
20112011-2-25
主讲:王颂华
9
3.2 数据定义
3.2.3 索引的建立与删除
1.建立索引 1.建立索引 索引是数据库随机检索的常用手段,它实际上是记 录的关键字与其相应地址的对应表。借助于索引结构,可 以迅速查找到某个属性A 以迅速查找到某个属性A具有指定值的那些元组。对一个 基本表,可以按需要建立若干个索引,以便提供多种存取 路径。 建立索引的语句格式为: CREATE[UNIQUE][CLUSTER]INDEX<索引名 CREATE[UNIQUE][CLUSTER]INDEX<索引名 > ON<表名>(<列名1>[<次序>],[<列名2>[<次序 ON<表名>(<列名1>[<次序>],[<列名2>[<次序 >]]… >]]…);
3.2 数据定义
2)主关键字的定义 一个关系可能有多个候选关键字,但在定义基本表 时只能定义一个主关键字。一个关系的主关键字由一个或 几个属性构成,在CREATE TABLE中声明主关键字有两 几个属性构成,在CREATE TABLE中声明主关键字有两 种方法: (1)在列出关系模式的属性时,在属性及其类型后加 上保留字PRIMARY KEY,表示该属性是主关键字。 上保留字PRIMARY KEY,表示该属性是主关键字。 (2)在列出关系模式的所有属性后,再附加一个声明: PRIMARY KEY(<属性1>[,<属性2>,…]) KEY(<属性1 ,<属性2>,… 如果关键字由多个属性构成,则必须使用第二种方 法。
20112011-2-25 主讲:王颂华 12
3.3 数据查询
3.3.1 单表查询
第3章 SQL语言
SELECT SNO, CNO, SCORE FROM SC WHERE CNO=‘C1’ OR CNO= ‘C2’ 利用“NOT IN”可以查询指定集合外的元组。 例11 查询没有选修C1,也没有选修C2的学生的学号、课 程号和成绩。 SELECT SNO, CNO, SCORE FROM SC WHERE CNO NOT IN(‘C1’, ‘C2’) 等价于: SELECT SNO, CNO, SCORE FROM SC WHERE CNO!=‘C1’ AND CNO!= ‘C2’
注意:函数SUM和AVG只能对数值型字段进行计算。
23
例16 求选修C1号课程的最高分、最低分及之间相差的分 数 SELECT MAX(SCORE) AS MaxScore, MIN(SCORE) AS MinScore, MAX(SCORE) - MIN(SCORE) AS Diff FROM SC WHERE (CNO = 'C1') 例17 求计算机系学生的总数 SELECT COUNT(SNO) FROM S WHERE DEPT='计算机'
1. SQL语言类似于英语的自然语言,简洁易用。 2. SQL语言是一种非过程语言,即用户只要提出“干什 么”即可,不必管具体操作过程,也不必了解数据的 存取路径,只要指明所需的数据即可。 3. SQL语言是一种面向集合的语言,每个命令的操作对 象是一个或多个关系,结果也是一个关系。 4. SQL语言既是自含式语言,又是嵌入式语言。可独立 使用,也可嵌入到宿主语言中。 自含式语言可以独立使用交互命令,适用于终端 用户、应用程序员和DBA; 嵌入式语言使其嵌入在高级语言中使用,供应用 程序员开发应用程序。
10
例1 查询全体学生的学号、姓名和年龄。 SELECT SNO, SN, AGE FROM S 例2 查询学生的全部信息。 SELECT * FROM S 用‘ * ’表示S表的全部列名,而不必逐一列出。
第三章 关系数据库标准语言SQL语言
第三章关系数据库标准语言SQL语言一、选择题1. 在SQL语言中授权的操作是通过________________语句实现的。
C A.CREATEB.REVOKEC.GRANTD.INSERT2. 假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选课关系是SC(S#,C#,GRADE)。
要查找选修“COMPUTER”课程的“女”学生姓名,将涉及到关系____。
DA.S B.SC,C C.S,SC D.S,C,SC3. 在 MS SQL Server中建立了表 Student(no,name,sex,birthday),no为表的主码,其他属性的默认值为 null。
表中信息如图所示:能够正确执行的插入操作是________。
A No Name Sex Birthday 101 张丽丽女 1967/05/07 102 李芳女 1970/04/14103 王朋男 1982/10/27 A.INSERT INTO student (no,sex) VALUES(102,′男′) B.INSERT INTO student (name,sex) VALUES(′王中′,′男′)D.INSERT INTO student VALUES(106,′王中′,′男′,′1984/03/08′) C.INSERT INTO stude nt VALUES(102,′男′,′王中′,′1984/03/08′) 4. SQL语言中,删除一个表的命令是________。
B A. DELETE B. DROP C. CLEAR D. REMORE 5. 为数据表创建索引的目的是________ AA.提高查询的检索性能B.创建唯一索引C.创建主键D.归类6. 在SQL语言中,条件“RETWEEN 20 AND 30”表示年龄在20到30之间,且________A. 包括20岁和30岁B. 不包括20岁和30岁C. 包括20岁不包括30岁D. 不包括20岁包括30岁7. 为了使索引键的值在基本表中唯一,在建立索引语句中应使用保留字________ AA. UNIQUEB. COUNTC. DISDINCTD. UNION 8. 下面关于SQL语言的说法中,哪一种说法是错误的? ________ AA. 一个SQL数据库就是一个基本表B. SQL语言支持数据库的三级模式结构C. 一个基本表可以跨多个存储文件存放,一个存储文件可以存放一个或多个基本表D. SQL的一个表可以是一个基本表,也可以是一个视图二、简答题1. 什么是基本表?什么是视图?两者的区别和联系是什么?【解答】基本表是本身独立存在的表,在SQL中一个关系就对应一个表。
数据库系统概论(第四版)_王珊_萨师煊_chp3-1
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
Student表
学 号 Sno
姓 名 Sname
性 别 Ssex
年 龄 Sage
所在系 Sdept
200215121 200215122 200215123 200515125
李勇 刘晨 王敏 张立
查询教师的姓名、职称、应发工资
查询教师的姓名、职称、应发工资 π姓名,职称,应发工资(教师⋈工资)
查询学分大于3的所有课程名称、及其对应的授课 老师姓名和老师所在的系名
查询学分大于3的所有课程名称、及其对应的授课 老师姓名和老师所在的系名 π课程名称,姓名,系名称(σ学分>3(系部⋈教师⋈ 授课⋈ 课程))
3.4.3 嵌套查询
3.4.4 集合查询
3.4.5 Select语句的一般形式
3.4.1 单表查询
查询仅涉及一个表:
一、 选择表中的若干列 二、 选择表中的若干元组 三、 ORDER BY子句 四、 聚集函数 五、 GROUP BY子句
一、 选择表中的若干列
查询指定列
男 女 女 男
20 19 18 19
CS CS MA IS
Course表
课程号 Cno
1 2 3 4 5 6 7
课程名 Cname
数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言
先行课 Cpno
5 1 6 7 6
学分 Ccredit
4 2 4 3 4 2 4
SC表
学号 Sno
语言简洁,易学易用
SQL语言的动词非常少,主要包括:
第3章:关系数据库标准语言SQL
例6:建立一个“课程”表Course. :建立一个“课程” Create table Course (Cno Cpno Char(4) Primary Key, , Char (4) , Cname Char (40) , Ccredit Smallint, , Foreign Key (Cpno) References Course(Cno) );
不论基本表中原来是否已有数据, 不论基本表中原来是否已有数据 , 新增加 的列一律为空值。 的列一律为空值。
例9:将年龄的数据类型改为整型。
ALTER TABLE Student Alter Column Sage Int; ;
修改原有的列定义有可能会破坏已有数据。 修改原有的列定义有可能会破坏已有数据。
group by:此短语将查询结果按某一列或某几 :
列的值进行分组。Having子句用于与group 列的值进行分组。Having子句用于与group by 子句用于与 子句配合使用,用于说明分组条件。 子句配合使用,用于说明分组条件。
查询分类
单表查询 连接查询 嵌套查询 集合查询
CREATE TABLE Student (Sno Ssex Sage Sdept
CHAR(5) NOT NULL UNIQUE,
Sname CHAR(20) UNIQUE, ,
CHAR(1) , INT, , CHAR(15)); ;
修改
Alter table <表名 表名> 表名
Add <新列名> <新列类型> (列宽度)[完整性约束] Drop Column <列名>|<完整性约束名> Alter Column <列名> <列类型> (列宽度) P87例8,例9,例10 , ,
第3章 关系数据库标准语言SQL(上)
空值的概念?
关于约束名称
column_name <data_type> [ NULL | NOT NULL ] [ [ CONSTRAINT constraint_name ] PRIMARY KEY | UNIQUE | [ FOREIGN KEY ] REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ] [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] | CHECK ( logical_expression ) ] [DEFAULT constant_expression ]
一个表由若干列构成,自SQL Server 2005不仅可 以定义实列(简称列,column_definition), 而且还 可以定义虚列(即计算列, computed_column_definition) 理解: <column_definition> <computed_column_definition> <table_constraint>
定义列(<column_definition>)
column_name <data_type> [ NULL | NOT NULL ] [ [ CONSTRAINT constraint_name ] PRIMARY KEY | UNIQUE | [ FOREIGN KEY ] REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ] [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] | CHECK ( logical_expression ) ] [DEFAULT constant_expression ]
第3章 关系数据库标准语言SQL_第4版(1-3)
学分 Ccredit 4 2 4 3 4 2 4
SC表
学号 Sno
200215121 200215121 200215121 200215122 200215122
课程号 Cno
1 2 3 2 3
成绩 Grade
92 85 88 90 80
§3.3 数据定义
SQL的数据定义功能: 模式定义、表定义、视图 和索引的定义
被参照建立一个“学生选课”表SC CREATE TABLE SC Cno CHAR(4), Grade SMALLINT, 列级完整性约束条件, Sno是外码,被参照表是 Student
(Sno CHAR(9) REFERENCES Student(Sno) , 主码由两个属性构 成,必须作为表级 完整性进行定义
用户数据库投入运行后,可根据需要随时逐步修 改模式,不影响数据的运行。 数据操作符统一
2.高度非过程化
非关系数据模型的数据操纵语言“面向过程”,
必须制定存取路径
SQL只要提出“做什么”,无须了解存取路径。 存取路径的选择以及SQL的操作过程由系统自动 完成。
3.面向集合的操作方式
SQL
数据流(Data) 元数据流(Meta Data) 对应于视图和部 分基本表
视图1
视图2
外模式
对应于基本表
基本表1 基本表2 基本表3 基本表4
数据词典
(元数据)
模式
对应于存储 文件
存储文件1 存储文件2 内模式
SQL的基本概念(续)
基本表(BASE TABLE):
是独立存在的表, 一个关系对应一个基本表,
嵌入式语言:嵌入高级语言如C,COBOL, FORTRAN,PB等
SQL基础试题
SQL基础试题第3章关系数据库标准语⾔SQL⼀、选择题1、SQL语⾔是的语⾔,易学习。
A.过程化 B.⾮过程化 C.格式化 D.导航式答案:B2、SQL语⾔是语⾔。
A.层次数据库 B.⽹络数据库 C.关系数据库 D.⾮数据库答案:C3、SQL语⾔具有的功能。
A.关系规范化、数据操纵、数据控制 B.数据定义、数据操纵、数据控制C.数据定义、关系规范化、数据控制 D.数据定义、关系规范化、数据操纵答案:B4、SQL语⾔具有两种使⽤⽅式,分别称为交互式SQL和。
A.提⽰式SQL B.多⽤户SQL C.嵌⼊式SQL D.解释式SQL 答案:C5、假定学⽣关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学⽣选课关系是SC(S#,C#,GRADE)。
要查找选修“COMPUTER”课程的“⼥”学⽣姓名,将涉及到关系。
A.S B.SC,C C.S,SC D.S,C,SC 答案:D6、若⽤如下的SQL语句创建⼀个student表:CREATE TABLE student(NO C(4) NOT NULL,NAME C(8) NOT NULL,SEX C(2),AGE N(2))可以插⼊到student表中的是。
A.(‘1031’,‘曾华’,男,23) B.(‘1031’,‘曾华’,NULL,NULL)C.(NULL,‘曾华’,‘男’,‘23’) D.(‘1031’,NULL,‘男’,23) 答案:B7、当两个⼦查询的结果时,可以执⾏并,交,差操作.A.结构完全不⼀致 B.结构完全⼀致C.结构部分⼀致D.主键⼀致答案:B第8到第10题基于这样的三个表即学⽣表S、课程表C和学⽣选课表SC,它们的结构如下:S(S#,SN,SEX,AGE,DEPT)C(C#,CN)SC(S#,C#,GRADE)其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE为成绩。
DBS第三章_2
[ORDER BY <列名>[ASC DESC] ] 排序子句
第三章
关系数据库语言SQL
3.3
SQL的数据查询
(2)执行过程 P88
④SELECT ①FROM ②WHERE
读取FROM子句中基表、视图的数据,执行‘×‟
选取满足WHERE子句中所给条件表达式的元组 按GROUP BY子句中指定列的值将元组分组
第三章
关系数据库语言SQL
3.3
SQL的数据查询
(3) SELECT子句中目标表的列名或列表达式
[ ALL | DISTINCT] 列名或列表达式序列
* : 所有列
例: SELECT SNAME, O, GRADE →聚集函数(列名) ,不允许对聚集运算复合使用 常数:SELECT sno, „birth_year:‟, year(age) FROM STUDENT,COURSE,SC 例:查询所有女学生的身高(以厘米表示) 例1:求所有学生的平均身高 改名,AS可省 →列名 AS 别名 FROM … WHERE student 例1: SELECT SELECT SNAME , FROM STUDET; sno AS 学号, sname 100*HEIGHT SELECT AVG(HEIGHT) AS 姓名
③GROUP
BY 选满足HAVING子句中组条件表达式的那些组
按SELECT子句中所给的列或列表达式求值输出
③HAVING ⑤ORDER
BY 按ORDER BY子句对输出的目标表进行排序
第三章 关系数据库语言SQL 3.3 SQL的数据查询
三、有关限定 (1) 通常每条语句以 ‘;’ 结束 (2) 表达式的组成及元素
Π A1,…,An (σF(R1 …Rn))
第三章 关系数据库标准语言SQL(习题)
一、选择题1.SQL语言是()的语言,容易学习.BA. 过程化B.非过程化C.格式化D.导航式2.在视图上不能完成的操作是()。
CA.更新视图B.查询C.在视图上定义新的表D.在视图上定义新的视图3.SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREA TE、DROP、ALTER语句是实现哪种功能()。
CA.数据查询B.数据操纵C.数据定义D.数据控制4.SQL语言中,删除一个视图的命令是()。
BA.DELETEB.DROPC.CLEARD.REMOVE5.在SQL语言中的视图VIEW是数据库的()。
AA.外模式B.模式C.内模式D.存储模式6.下列的SQL语句中,()不是数据定义语句。
DA.CREA TE TABLEB.DROP VIEWC.CREA TE VIEWD.GRANT7.若要撤销数据库中已经存在的表S,可用()。
CA.DELETE TABLE SB.DELETE SC.DROP TABLE SD.DROP S8.若要在基本表S中增加一列CN(课程名),可用()。
CA. ADD TABLE S (CN CHAR(8))B. ADD TABLE S ALTER (CN CHAR(8))C. ALTER TABLE S ADD CN CHAR(8)D. ALTER TABLE S (ADD CN CHAR(8))9.学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。
要在表S中删除一个属性“年龄”,可选用的SQL语句是()。
BA.DELETE Age from SB.ALTER TABLE S DROP COLUMN AgeC.UPDA TE S AgeD.ALTER TABLE S ‘Age’10.有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。
其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄,C#是课程号,CNAME是课程名称。
关系数据库标准查询语言SQL
SELECT Sname, ‘Year of Birth:’, 2008-Sage ,
ISLOWER(Sdept)
FROM Student ; 结果为:
Sname ‘ Yearof Birth:’ 2008-Sage ISLOWER(Sdept)
李勇 Yearof Birth: 1986
第三章关系数据库标准查询语言sql第三章第三章关系数据库标准语言关系数据库标准语言sqlsql结构化查询语言sqlstructuredquerylanguage是一种介于关系代数与关系演算之间的语言它具有查询操纵定义和控制功能是一种通用的功能极强的标准的关系数据库语言
第三章 关系数据库标 准查询语言SQL
例4:删除关于学号必须取唯一值的约束。 ALTER TABLE Student DROP UNIQUE(Sno);
3.删除基本表
基本格式: DROP TABLE〈表名〉
例5. 删除student表 DROP TABLE Student ;
3.2.2.建立与删除索引
1. 建立索引 基本格式: CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>[,<列名>[〈次序>]]…..); 次序:ASC,DESC 例 6: 为Student, Course, SC 3个表 建立索引,Student
2.选择表中的若干元组
1).消除重复的行 例6.查询所有选修过课的学生学号。
SELECT Sno
FROM SC ;
Sno
Cno Grade
数据库系统原理教程课后习题及答案(第三章)汇编
第3章关系数据库标准语言SQL1 .试述sQL 语言的特点。
答:(l)综合统一。
sQL 语言集数据定义语言DDL 、数据操纵语言DML 、数据控制语言DCL 的功能于一体。
(2)高度非过程化。
用sQL 语言进行数据操作,只要提出“做什么”,而无需指明“怎么做”,因此无需了解存取路径,存取路径的选择以及sQL 语句的操作过程由系统自动完成。
(3)面向集合的操作方式。
sQL 语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
(4)以同一种语法结构提供两种使用方式。
sQL 语言既是自含式语言,又是嵌入式语言。
作为自含式语言,它能够独立地用于联机交互的使用方式;作为嵌入式语言,它能够嵌入到高级语言程序中,供程序员设计程序时使用。
(5)语言简捷,易学易用。
2 .试述sQL 的定义功能。
sQL 的数据定义功能包括定义表、定义视图和定义索引。
SQL 语言使用cREATE TABLE 语句建立基本表,ALTER TABLE 语句修改基本表定义,DROP TABLE 语句删除基本表;使用CREATE INDEX 语句建立索引,DROP INDEX 语句删除索引;使用CREATE VIEW 语句建立视图,DROP VIEW 语句删除视图。
3 .用sQL 语句建立第二章习题5 中的4 个表。
答:对于S 表:S ( SNO , SNAME , STATUS , CITY ) ;建S 表:CREATE TABLE S ( Sno C(2) UNIQUE,Sname C(6) ,Status C(2),City C(4));对于P 表:P ( PNO , PNAME , COLOR , WEIGHT );建P 表:CREATE TABLE P(Pno C(2) UNIQUE,Pname C(6),COLOR C(2),WEIGHT INT);对于J 表:J ( JNO , JNAME , CITY);建J 表:CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8),CITY C(4))对于sPJ 表:sPJ ( sNo , PNo , JNo , QTY);建SPJ 表:SPJ(SNO,PNO,JNO,QTY)CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2),QTY INT))4.针对上题中建立的4 个表试用sQL 语言完成第二章习题5 中的查询。
数据库原理 第三章:关系数据库标准语言SQL
例5:查询选修全部课程的学生姓名。
RANGE SC X Course CX GET W (Student.SN) : CXSCX (SCX.SNO=Student.SNO∧O=O)
1、除运算÷(Division,亦称商)
用途:除法运算同时从行和列的角度进行运算,在表达某 些查询时有用,适合于包含“全部”之类的短语的查询, 例如“查询已注册选修了所有课程的学生名字”。
定义:给定关系 R(X,Y),S(Y,Z),X,Y,Z为属 性列,关系R和关系S中的Y出自相同域集,则: R÷S={tr[X]|tr∈R∧Πy(S)Yx} 其中,Yx为x在R中的象集,x= tr[X]。
② 逻辑运算符:∧(与),∨(或),┐(非)
③ 表示执行次序的括号:()
其中,比较运算符的优先级高于逻辑运算符,可以使用()改
变它们的优先级。
例1:查询所有男学生的姓名。
GET W (Student.Sname) : Student. Ssex = „男’
例2:查询信息系(IS)中年龄小于20岁的学生的学号和年龄
例3:查询S3同学所选课程名
RANGE SC X Course CX GET W (ame):X CX (o=o∧X.Sno=‟S3‟)
此查询涉及两个关系,对两个关系(Course和SC)作用存在 量词,所以用了两个元组变量。
例4:查询至少选修一门其先行课为6号课程的学生名字
操作条件中使用量词时必须用元组变量 例1:查询S3同学所选课程号
第三单元 关系数据库标准语言--SQL 练习
第三单元关系数据库标准语言—SQL学号: 姓名: 成绩:一、选择题1.SQL语言是____的语言,易学习A、过程化B、非过程化C、格式化D、导航式2.SQL语言是____语言。
A、层次数据库B、网络数据库C、关系数据库D、非数据库3..SQL语言具有____的功能。
A、关系规范化、数据操纵、数据控制B、数据定义、数据操纵、数据控制C、数据定义、关系规范化、数据控制D、数据定义、关系规范化、数据操纵4.SQL语言的数据操纵语句包括SELECT,INSERT,UPDA TE和DELETE,最重要的,也是使用最频繁的语句是____。
A、INSERTB、SELECTC、UPDA TE;D、DELETE5.SQL语言具有两种使用方式,分别称为交互式SQL和____。
A、提示式SQLB、多用户SQLC、嵌入式SQLD、解释式SQL6.SQL语言中,实现数据检索的语句是____。
A、INSERTB、SELECTC、UPDA TED、DELETE7. 下列SQL语句中,修改表结构的是____。
A、CREATEB、ALTERC、UPDA TED、INSERT8.SQL为用户授权的命令是。
A.GRANT B. REVOKE C. SELECT D. PUT9.SQL收回用户权力的命令是。
A.GRANT B. REVOKE C. SELECT D. PUT10.SQL规定具有执行授权和收回权力命令的用户是。
A.只能是该数据库(表)的使用者 B. 只能是该数据库(表)的建立者C.只能是DBA D. 只能是DBA和该数据库(表)的建立者11.结构化查询语言SQL 。
A.是一种自含式语言 B. 是一种嵌入式语言C.既是自含式语言又是嵌入式语言 D. 以上说法都不对12. 以下关于SQL的叙述中,哪个不是SQL的特点。
A.综合统一,即集DDL、DML、DCL等多种功能于一体B.高度过程化C.面向集合的操作方式D.提供交互式和嵌入式两种使用方式13.基于这样的三个表即学生表S、课程表C和学生选课表SC,它们的结构如下:S(S#, SN, SEX, AGE, DEPT)C(C#, CN)SC(S#, C#, GRADE)其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT为系别,C#为课程号,CN为课程名,GRADE.为成绩。
DBS第三章1
需装入数据才可使用 数据的装入可用 Insert命令、数据装载程序
复制某表结构的命令如下:
create table 名 as select * from
第三章 关系数据库语言SQL 3.2 SQL的数据定义
二、基表结构的修改(列.主键.外键.别名) --ALTER TABLE
3.3 SQL的数据查询 CREATE SCHEMA TL AUTHORIZATION U1;
3.1 SQL的体系结构
2. SQL模式的撤销
3.4 SQL的数据更新 3.5 视图
DROP SCHEMA <模式名> [CASCADE | RESTRICT] 3.6 嵌入式SQL
CASCADE:该模式下的数据库对象随模式而撤消 RESTRICT:只当该模式下无元素时才可撤消
DROP SCHEMA TL CASCADE;
第三章 关系数据库语言SQL 3.2 SQL的数据定义
3.2.2 基本的数据类型
数据类型 整 数 短整数 十进制数 浮点数 定长字符串 说 明 符 INT SMALLINT 备 字长32位 字长16位 m为总位数(不包括小数点),n为小数位数 一般指双精度浮点数,即字长64位 注
3.2.1 SQL模式的创建和撤销 一、SQL模式的创建和撤销
第三章 关系数据库语言SQL 二、基本数据类型 1. SQL模式的创建 三、基表的创建、修改和撤销 CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
四、索引的创建和撤销 3.2 SQL的数据定义 SQL模式由模式名和拥有者的用户名或帐号确定
查询语言QL ――用于查询数据 数据操纵语言DML――用于增、删、改数据 数据控制语言DCL――用于数据访问权限的控制 完整性规则描述 事务控制等 两种使用方法: 交互式SQL(ISQL)→单独使用的SQL,不能编程
第03章-关系数据库标准语言SQL
语句 CREATE
功能 创建数据库或数据库对象
ALTER
修改数据库或数据库对象
DROP
删除数据库或数据库对象
说明 不同数据库对象参数不同 不同数据库对象参数不同 不同数据库对象参数不同
SQL的组成(续) ❖ 数据操纵语言DML(Data Manipulation Language):用于执行对数据库检索和更新。
定义基本表(续)
❖ 表的完整性约束条件 创建表时可指定表的完整性约束条件,也称为约束: 列级完整性约束条件 完整性约束条件涉及到该表的当前一个属性列 表级完整性约束条件 完整性约束条件涉及到该表的一个或多个属性列
➢ RDBMS自动检查对表的操作是否违背表的完整性约束条件
学生表Student
数据库 模式
表 视图
模式 表
索引
定义模式(续)
❖ 基本格式: CREATE SCHEMA [<模式名>] AUTHORIZATION <用户名> CREATE、SCHEMA 、AUTHORIZATION为保留字 保留字习惯使用大写 CREATE SCHEMA 为定义模式的语句 <模式名>为所创建的模式的名称 尖括号表示用户提供的参数 方括号表示参数可选 AUTHORIZATION <用户名> 子句用于指定模式的所有者 <用户名>指定一个用户
❖ 也可以使用带指定参数值的命令创建数据库
3.3 数据定义
3.3.1 模式的定义与删除 3.3.2 基本表的定义、删除与修改 3.3.3 索引的建立与删除
定义模式
❖ 模式(SCHEMA) 定义模式实际上是定义了一个命名空间(或容器)。 在这个空间中可以定义该模式包含的数据库对象 例如基本表、视图、索引、存储过程等。 定义模式能更好的管理数据库中的对象
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.5.3
删除数据
DELETE
FROM <表名> [WHERE <条件>];
语句格式
功能
删除指定表中满足WHERE子句条件的元组
WHERE子句
指定要删除的元组 缺省表示要删除表中的全部元组,表的定义仍在字典中
22
删除数据(续)
三种删除方式
删除某一个元组的值
删除多个元组的值
12
插入子查询结果(续)
关系数据库管理系统在执行插入语句时会检查所插元组是否破坏 表上已定义的完整性规则
实体完整性 参照完整性
用户定义的完整性
NOT NULL约束 UNIQUE约束
值域约束
13
3.5
数据更新
3.5.1 插入数据
3.5.2 修改数据
3.5.3 删除数据
14
34
空值的算术运算、比较运算和逻辑运算(续)
[例3.82] 找出选修1号课程的不及格的学生。
SELECT Sno FROM SC WHERE Grade < 60 AND Cno='1'; 查询结果不包括缺考的学生,因为他们的Grade值为 null。
35
空值的算术运算、比较运算和逻辑运算(续)
41
建立视图(续)
WITH CHECK OPTION
对视图进行UPDATE,INSERT和DELETE操作时要保证更新、插入或删除 的行满足视图定义中的谓词条件(即子查询中的条件表达式)
子查询可以是任意的SELECT语句,是否可以含有ORDER BY子句 和DISTINCT短语,则决定具体系统的实现。
功能
将新元组插入指定表中
5
插入元组(续)
INTO子句
指定要插入数据的表名及属性列 属性列的顺序可与表定义中的顺序不一致
没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义 中的顺序一致
指定部分属性列:插入的元组在其余属性列上取空值
6
插入元组(续)
VALUES子句
INTO子句 子查询
SELECT子句目标列必须与INTO子句匹配
值的个数 值的类型
11
插入子查询结果(续)
[例3.72] 对每一个系,求学生的平均年龄,并把结果存入数据库 第一步:建表 CREATE TABLE Dept_age ( Sdept CHAR(15) /*系名*/ Avg_age SMALLINT); /*学生平均年龄*/ 第二步:插入数据 INSERT INTO Dept_age(Sdept,Avg_age) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;
3.5 数据更新
3.6 空值的处理
3.7 视图
3.8 小结
27
3.6 空值的处理
空值就是“不知道”或“不存在”或“无意义”的值。 一般有以下几种情况:
该属性应该有一个值,但目前不知道它的具体值 该属性不应该有值 由于某种原因不便于填写
28
1. 空值的产生
空值是一个很特殊的值,含有不确定性。对关系运算带来特殊的问题, 需要做特殊的处理。 空值的产生
பைடு நூலகம்
[例 3.79]向SC表中插入一个元组,学生号是”201215126”,课程号是”1”,成绩为空。
29
空值的产生(续)
[例3.80] 将Student表中学生号为”201215200”的学生所属的系改为空值。
UPDATE Student SET Sdept = NULL WHERE Sno='201215200';
36
第三章
关系数据库标准语言SQL
3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询
3.5 数据更新
3.6 空值的处理
3.7 视图
3.8 小结
37
3.7
视图
视图的特点
虚表,是从一个或几个基本表(或视图)导出的表
只存放视图的定义,不存放视图对应的数据
基表中的数据发生变化,从视图中查询出的数据也随之改变
INSERT INTO SC(Sno,Cno,Grade) VALUES('201215126 ','1',NULL); /*该学生还没有考试成绩,取空值*/ 或 INSERT INTO SC(Sno,Cno) VALUES(' 201215126 ','1'); /*没有赋值的属性,其值为空值*/
[例3.78] 删除计算机科学系所有学生的选课记录。 DELETE FROM SC WHERE Sno IN (SELETE Sno FROM Student WHERE Sdept= 'CS') ;
26
第三章
关系数据库标准语言SQL
3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询
8
插入元组(续)
[例3.71] 插入一条选课记录( '200215128','1 ')。 INSERT INTO SC(Sno,Cno) VALUES ('201215128 ',' 1 '); 关系数据库管理系统将在新插入记录的Grade列上自动地 赋空值。 或者: INSERT INTO SC VALUES (' 201215128 ',' 1 ',NULL);
3.5.2
修改数据
语句格式
UPDATE <表名> SET <列名>=<表达式>[,<列名>=<表达式>]… [WHERE <条件>];
功能
修改指定表中满足WHERE子句条件的元组
SET子句给出<表达式>的值用于取代相应的属性列 如果省略WHERE子句,表示要修改表中的所有元组
15
31
3. 空值的约束条件
属性定义(或者域定义)中
有NOT NULL约束条件的不能取空值 加了UNIQUE限制的属性不能取空值
码属性不能取空值
32
4. 空值的算术运算、比较运算和逻辑运算
空值与另一个值(包括另一个空值)的算术运算的结果为空值
空值与另一个值(包括另一个空值)的比较运算的结果为UNKNOWN。 有UNKNOWN后,传统二值(TRUE,FALSE)逻辑就扩展成了三值逻辑
修改数据(续)
三种修改方式
修改某一个元组的值 修改多个元组的值 带子查询的修改语句
16
1. 修改某一个元组的值
[例3.73] 将学生201215121的年龄改为22岁
UPDATE Student SET Sage=22 WHERE Sno=' 201215121 ';
17
2. 修改多个元组的值
44
建立视图(续)
[例3.84] 建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= 'IS';
45
建立视图(续)
[例3.85]建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该
提供的值必须与INTO子句匹配
值的个数 值的类型
7
插入元组(续)
[例3.69]将一个新学生元组(学号:201215128;姓名:陈冬;性别:男;所在系: IS;年龄:18岁)插入到Student表中。 INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES ('201215128','陈冬','男','IS',18);
19
修改数据(续)
关系数据库管理系统在执行修改语句时会检查修改操作是否破坏表
上已定义的完整性规则
实体完整性 主码不允许修改 用户定义的完整性
NOT NULL约束
UNIQUE约束
值域约束
20
3.5
数据更新
3.5.1 插入数据 3.5.2 修改数据 3.5.3 删除数据
21
9
插入元组(续)
[例3.70]将学生张成民的信息插入到Student表中。
INSERT INTO Student VALUES ('201215126','张成民','男’,18,'CS');
10
2. 插入子查询结果
语句格式
INSERT INTO <表名> [(<属性列1> [,<属性列2>… )] 子查询;
[例3.74] 将所有学生的年龄增加1岁。
UPDATE Student SET Sage= Sage+1;
18
3. 带子查询的修改语句
[例3.75] 将计算机科学系全体学生的成绩置零。 UPDATE SC SET Grade=0 WHERE Sno IN (SELETE Sno FROM Student WHERE Sdept= 'CS' );
视图只有信息系的学生 。
CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student
WHERE Sdept= 'IS'
WITH CHECK OPTION;
46
建立视图(续)