第3章 关系数据库标准语言SQL
数据库原理 第三章关系数据库标准语言——SQL期末习题与答案

1、数据库的事务日志文件()。
A.只能有一个B.可以有多个C.可以没有D.以上都不对正确答案:B2、CREATE命令属于()语句。
A.数据查询B.数据操纵C.数据定义D.数据控制正确答案:C3、使用ALTER命令修改数据时,以下说法错误的是()。
A.可以增加主要数据文件B.可以删除次要数据文件C.可以修改文件的增容方式D.可以增加事务日志文件正确答案:A4、使用存储存储过程Sp_helpfile可以()。
A.查看数据库的结构B.查看数据库的文件信息C.查看数据库的文件组信息D.以上都可以5、在DBMS中分离数据库之后,()。
A.数据库文件将会从磁盘上删除B.数据库文件将会脱离DBMSC.事务日志文件将会从磁盘上删除D.以上都不对正确答案:B6、假设学号字段“SNo”的数据类型为nvarchar(6),当“SNo”的值为“S001”时,“SNo”在内存中占()字节。
A.4B.6C.8D.12正确答案:C7、创建数据表时,如果给某个字段定义PRIMARY KEY约束时,该字段的数据()。
A.不允许有空值B.允许有多个空值C.允许有一个空值D.以上都不对正确答案:A8、为数据表增加新的字段时,()。
A.可以为新字段设置NOT NULL约束B.不能为新字段设置NOT NULL约束C.不能为新字段设置约束D.以上都不对9、在SQL的SELECT语句中,能实现选取操作的是()。
A.SELECTB.FROMC.WHERED.GROUP BY正确答案:C10、假定学生关系是S(SNo,SName,Sex,Age),课程关系是C(CNo,CName,Teacher),学生选课关系是SC(SNo,CNo,Grade)。
要查找选修“数据库”课程的“男”学生姓名,将涉及的关系是()。
A.SB.SC,CC.S,SCD.S,C,SC正确答案:D11、下列SQL语句中,()不是数据操纵语句。
A.INSERTB.CREATEC.DELETED.UPDATE正确答案:B12、SQL中,下列涉及空值的操作,不正确的是()。
关系数据库标准语言SQL

第三章关系数据库标准语言SQL1、视图:2、SQL:3、基本表:4、索引:5、下列的SQL语句中,()不是数据定义语句。
A、CREA TE INDEXB、DELETE TABLEC、CREA TE VIEWD、ALTER TABLE6、有关系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE)。
其中S#是学生号,SNAME是学生姓名,SEX是性别,C#是课程号,CNAME是课程名称。
要查询选修“数据库”课的全体男生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句。
这里的WHERE子句的内容是()。
A、S、S# = SC、S# and C、C# = SC、C# and SEX=’男’and CNAME=’数据库’B、S、S# = SC、S# and C、C# = SC、C# and SEX in’男’and CNAME in’数据库’C、SEX ’男’and CNAME ’数据库’D、S、SEX=’男’and CNAME=’数据库’7、在数据库技术中,NULL是指()。
A、0B、空格C、无任何值D、空字符串8、SQL语言中,删除一个视图所用的动词是()。
A、DELETEB、DROPC、CLEARD、REMOVE9、若要在一个查询中联接3个表,则需要()个联接条件。
A、1B、2C、3D、不确定10、假设学生关系S(S#,SNAME,SEX),课程关系C(C#,CNAME),学生选课关系SC (S#,C#,GRADE)。
要查询选修“Computer”课的男生姓名,将涉及到关系()A、SB、S,SCC、C,SCD、S,C,SC11、若要在一个等值连接查询中联接N个表,则需要()个联接条件。
A、N- 1B、NC、N+1D、不确定12、对由SELECT--FROM—WHERE—GROUP--ORDER组成的SQL语句,其在被DBMS处理时,各子句的执行次序为()。
《数据库应用》全套PPT电子课件教案-第三章(关系数据库标准语言SQL)

库文件。
16
第3章 关系数据库标准语言SQL
3.3 数据查询
SQL的核心是查询。SQL的查询命令也称作SELECT命令,它 的基本形式由SELECT-FROM-WHERE查询块组成,多个查 询块可以嵌套执行。SQL查询命令格式:
DISTINCT短语的作用是去掉查询结果中的重复值.
19
第3章 关系数据库标准语言SQL
SELECT * FROM 仓库 其中“*”是通配符,表示所有属性,即字段,这里的命令 等同于:
SELECT 仓库号,城市,面积 FROM 仓库 SELECT DISTINCT 仓库号 FROM 职工 WHERE 工资 > 1210
SQL语言是当前最为成功、应用最为广泛的关 系数据库语言,其主要特点包括:
1. SQL语言非常简洁 2. 综合统一 3. 高度非过程化 4. 面向集合的操作方式 5. 以同一种语法结构提供两种使用方式
4
第3章 关系数据库标准语言SQL
3.1.2 SQL语言功能概述
SQL功能可分为四大部分:数据定义功能、数据 控制功能、数据查询功能和数据操纵功能。
21
第3章 关系数据库标准语言SQL
匹配串中可包含如下四种通配符: _(下划线):匹配任意一个字符。 %(百分号):匹配0个或多个字符。 [ ]:匹配[ ]中的任意一个字符。如[abcd]表示匹配a、b、
c和d中的任何一个。 [^]:不匹配[ ]中的任意一个字符。如[abcd]表示不匹配
a、b、c和d。
SELECT 职工号,城市 FROM 仓库,职工 WHERE ( 面积 > 400) AND
第三章 关系数据库标准语言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中一个关系就对应一个表。
sql 课件 第3章 关系数据库标准语言SQL

山东财政学院计算机信息工程学院
3、默认文件组
在每个数据库中,同一时间只能有一个文件组是默认 文件组(Default Filegroup)。 当进行数据库操作时,如果不指定文件组,则系统自 动选择默认文件组。 可使用Transact-SQL语句中的alter database语句指 定数据库的默认文件组。 在不特别指定的情况下,系统将主要文件组认定为默 认文件组。
山东财政学院计算机信息工程学院
2、扩展盘区
由8个连续页面组成的数据结构称为一个盘区。 是SQL Server分配给表和索引的基本单位。 扩展盘区可分为统一扩展盘区和混合扩展盘区。 统一扩展盘区由一个数据库对象所有。 混合扩展盘区可以为多个数据库所有,即其中最多 可以放8种数据库对象。
山东财政学院计算机信息工程学院
山东财政学院计算机信息工程学院
例:创建具有两个文件组的数据库bank2
CREATE DATABASE BANK2 ON PRIMARY (NAME=BANK2_1_DAT, FILENAME='d:\bank\bank2_f1dat.mdf', SIZE=20MB, MAXSIZE=50MB, FILEGROWTH=5MB), (NAME=BANK2_2_DAT, FILENAME='d:\bank\bank2_f2dat.ndf', SIZE=10MB, MAXSIZE=40MB, FILEGROWTH=5MB),
山东财政学院计算机信息工程学院
3.2 数据定义
3.2.1 数据库的定义 3.2.2 表的定义 3.2.3 索引的定义
山东财政学院计算机信息工程学院
数据定义
SQL Server数据库由包含数据的表集合和其他对象( 如视图、索引、存储过程、触发器、用户、角色等)组 成,支持三级模式结构。其中用户模式对应于视图,逻 辑模式对应于基本表,物理模式对应于存储文件、索引 等。
数据库系统概论(第四版)_王珊_萨师煊_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 , ,
关系数据库标准查询语言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
关系数据库标准语言SQL练习题

精心整理第3章关系数据库标准语言SQL一.单项选择题1.SQL语言是▁▁▁▁▁的语言,易学习。
A.过程化B非过程化C.格式化D导航式B2.SQL语言是▁▁▁▁▁语言。
A.层次数据库B.网络数据库C.关系数据库D非数据库3.SQL语言具有▁▁▁▁▁的功能。
A.关系规范化、数据操纵、数据控制BCC4.A.5AC6.A.7A.第8S(S#8A.B.C.D.9.检索选修课程“C2”的学生中成绩最高的学生的学号。
正确的SELECT语句是▁▁D▁▁。
A.SELECTS#FORMSCWHEREC#=“C2”ANDGRADE>=(SELECTGRADEFORMSCWHEREC#=“C2”)B.SELECTS#FORMSCWHEREC#=“C2”ANDGRADEIN(SELECTGRADEFORMSCWHEREC#=“C2”)C.SELECTS#FORMSCWHEREC#=“C2”ANDGRADENOTIN(SELECTGRADEFORMSCWHEREC#=“C2”)D.SELECTS#FORMSCWHEREC#=“C2”ANDGRADE>=ALL(SELECTGRADEFORMSCWHEREC#=“C2”)10.检索学生姓名及其所选修课程号和成绩。
正确的SELECT语句是▁▁▁C▁▁。
SELECTS.SN,SC.C#,SC.GRADEFROMSWHERES.S#=SC.S#B.SELECTS.SN,SC.C#,SC.GRADEFROMSWHERES.S#=SC.GRADEC.SELECTS.SN,SC.C#,SC.GRADEFROMS,SCWHERES.S#=SC.S#D.SELECTS.SN,SC.C#,SC.GRADEFROMS.SC11.检索选修四门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。
正确的SELECT语句是▁B▁。
A.12A.13ABCDB14SEXCAGENA.(C.B1.3.视图是一个虚表,它是从▁▁▁中导出的表。
数据库原理 第三章:关系数据库标准语言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.为成绩。
7第三章 关系数据库标准SQL语言

3.
4. 5.
6. 7. 8. 9. 10.
11. 12.
13.
14.
15. 16. 17. 18.
19. 08 信管 B 视图建立后,在数据字典中存放的是 C A.查询语句 B. 组成视图的表的内容 C. 视图的定义 D. 产生视图的表的定义
。
以下四题基于这样三个表,即学生表 S、课程表 C 和学生选课表 SC,它们的结构如下: S(S#, SN, SEX, AGE, DEPT) C(C#, CN) SC(S#, C#, GRADE) 其中,S#为学号,SN 为姓名,SEX 为性别,AGE 为年龄,DEPT 为系别,C#为课程号, CN 为课程名,GRADE 为成绩。 20. 检索所有比 “王华” 年龄大的学生姓名、 年龄和性别。 正确的 SELECT 语句是 A. SELECT SN, AGE, SEX FROM S WHERE AGE > ( SELECT AGE FROM S WHERE SN=”王华” C. SELECT SN, AGE, SEX FROM S WHERE AGE > ( SELECT AGE WHERE SN=”王华” B. SELECT SN, AGE, SEX FROM S WHERE SN=”王华” D. SELECT SN, AGE, SEX FROM S WHERE AGE >王华.AGE D 。 A 。
21. 检索选修课程 “C2” 的学生中成绩最高的学生的学号。 正确的 SELECT 语句是 A. SELECT S# FROM SC WHERE C#=”C2” AND GRADE>= ( SELECT GRADE FROM SC WHERE C#=”C2” B. SELECT S# FROM SC WHERE C#=”C2” AND GRADE IN ( SELECT GRADE FROM SC WHERE C#=”C2”
关系模型概述

П Sname,Sage(σSage<20 (Student))
第三章 关系数据库标准语言SQL
3. 3 查询
查询条件运算符
查询条件 比 较 谓词
=, >, <, >=, <=, !=, <>, !>, !< BETWEEN AND, NOT BETWEEN AND IN, NOT IN LIKE, NOT LIKE IS NULL, IS NOT NULL
ALTER TABLE语句
格式:
返回
ALTER TABLE <表名> [ADD <新列名><数据类型>[<列完整性约 束>]] [DROP<列完整性约束名>][MODIFY <列名><数据类型>];
功能:修改已建的基本表 例2:向学生表增加“入学时间”属性列
ALTER TABLE Student ADD Scome DATE;
第三章 关系数据库标准语言SQL
3.3 查询
例4:查询选修课程的学生学号 SELECT Sno П Sno(σGrade≠ ‘’ (Student)) FROM SC; 例4-1:查询选修课程的学生学号 SELECT DISTINCT Sno FROM SC; 例5:查询20岁以下的学生姓名及年龄 SELECT Sname,Sage FROM Student WHRER Sage<20;
例3:修改学生表的“年龄”属性类型为半字长整数
ALTER TABLE Student MODIFY Sage SMALLINT;
例4:删除学生表“姓名”属性列取唯一值的约束
ALTER TABLE Student DROP UNIQUE(Sname);
数据库第三章关系数据库标准语言SQL

数据库第三章关系数据库标准语言SQL第三章关系数据库标准语言SQL习题1.试述SQL语言的特点。
2.试述SQL的定义功能。
3.用SQL语句建立第二章习题5中的4个表。
4.针对上题中建立的4个表试用SQL语言完成第二章习题5中的查询。
5.针对习题3中的4个表试用SQL语言完成下列各项操作:(1)找出所有供应商的姓名和所在城市。
(2)找出所有零件名称、颜色、重量。
(3)找出使用供应商SI所供应零件的工程号码。
(4)找出工程项目J2使用的各种零件的名称及其数量。
(5)找出上海厂商供应的所有零件号码。
(6)找出使用上海产的零件的工程名称。
(7)找出没有使用天津产的零件的工程号码。
(8)把全部红色零件的颜色改成蓝色。
(9)由S5供给J4的零件P6改为由S3供应,请做必要的修改。
(10)从供应商关系中见风删除S2的记录,并从供应情况关系中删除相应的记录。
6.什么是基本表?什么是视图?两者的区别和联系是什么?7.试述视图的优点。
8.所有的视图是否都可以更新?为什么?9.哪类视图是可以更新的?哪类视图是不可以更新的?各举一例说明。
10.试述某个你熟悉的实际系统中对视图更新的规定。
11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
针对该视图完成下列查询:(1)找出三建工程项目使用的各种零件代码及其数量。
(2)找出供应商S1的供应情况。
12.针对习题3建立的表,用SQL语言完成以下各项操作:(1)把对表S的INSERT权限授予用户张勇,并允许他在将此权限授予其他用户。
(2)把查询SPJ表和修改QTY属性的权限授给用户李天明。
13.在嵌入式SQL中是如何区分SQL语句和主语言语句的。
14.在嵌入式SQL中是如何解决数据库工作单元与源程序工作单元之间通信的?15.在嵌入式SQL中是如何协调SQL语言的集合处理方式和主语言的单记录处理方式的?参考答案1.答:(1)综合统一。
第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) 定义模式实际上是定义了一个命名空间(或容器)。 在这个空间中可以定义该模式包含的数据库对象 例如基本表、视图、索引、存储过程等。 定义模式能更好的管理数据库中的对象
数据库系统概论(王珊_萨师煊)第三章关系数据库标准语言SQL

2.高度非过程化
非关系数据模型的数据操纵语言“面向过
程”,必须制定存取路径
SQL只要提出“做什么”,无须了解存取
路径。 存取路径的选择以及SQL的操作过程由系
统自动完成。
An Introduction to Database System
SQL是独立的语言
能够独立地用于联机交互的使用方式
SQL又是嵌入式语言
SQL能够嵌入到高级语言(例如C,C++, Java)程序中,供程序员设计程序时使用
An Introduction to Database System
5.语言简洁,易学易用
SQL功能极强,完成核心功能只用了9个动词。
表 3.1 SQL 语言的动词 SQL 功 能 数 据 查 询 数 据 定 义 数 据 操 纵 数 据 控 制 动 词 SELECT CREATE, DROP, ALTER INSERT,UPDATE DELETE GRANT,REVOKE
An Introduction to Database System
主码
课程表Course
[例6] 建立一个“课程”表Course
CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, 先修课 Cname CHAR(40), Cpno CHAR(4) , Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Cpno是外码 Course(Cno) 被参照表是Course 被参照列是Cno );
3.1 SQL概述
3.2 学生-课程数据库
3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图 3.7 小结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章关系数据库标准语言SQL主要内容:✧SQL的基本概念✧数据定义✧数据查询✧数据更新✧视图3.1 SQL 概述SQL(Structured Query Language),即结构化查询语言,是关系数据库的标准语言,SQL 是一个通用的、功能极强的关系数据库语言。
决大部分数据库管理系统都支持SQL,许多软件厂商对SQL基本命令集还进行了扩充和修改。
大多数据库均用SQL作为共同的数据存取语言和标准接口,使不同数据库系统之间的互操作有了共同的基础。
SQL已成为数据库领域中的主流语言。
3.1.1SQL的产生和发展1974 提出并实现1986 ANSI的数据库委员会批准作为关系数据库语言的美国标准。
公布了标准文本。
1987 ISO也通过这一标准。
标准逐步发展。
3.1.2SQL的特点1.综合统一SQL集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)的功能于一体,语言风格统一,可以独立完成数据库生命令周期中的全部活动,包括:✧定义关系模式,插入数据,建立数据库;✧对数据库中的数据进行查询和更新;✧数据库重构和维护;✧数据库安全性、完整性控制等。
有了这些功能,就为数据库应用系统的开发提供了良好的环境(通过分层开发来解释)。
特别是在数据库系统投入运行后,还可以根据需要随进地逐步地修改模式,并不影响数据库的运行,从而使系统具有良好的可扩展性。
关系数据库数据结构的单一性带来数据操作符的统一性,查找、插入、删除、更新等每一种操作都只需一种操作符。
2.高度非过程化非关系数据模型的数据操纵语言是“面向过程”,必须制定存取路径,指明“怎么做”;SQL只要提出“做什么”,无需指明“怎么做”,无须了解存取路径。
存取路径的选择以及SQL的操作过程由系统自动完成。
这样就减轻了用户负担,有利于提高数据独立性。
3.面向集合的操作方式非关系数据模型采用面向记录的操作方式,操作对象是一条记录;SQL采用集合操作方式,操作对象、查找结果是元组的集合,一次插入、删除、更新操作的对象可以是元组的集合。
4.以同一种语法结构提供多种使用方式SQL是独立的语言,能够独立地用于联机交互的使用方式。
SQL又是嵌入式语言,SQL能够嵌入到高级语言(例如C,C++,Java,.NET)程序中,供程序员设计程序时使用。
两种方式下,SQL的语法结构基本上是一致的,提供了极大的灵活性与方便性。
5.语言简洁,易学易用SQL功能极强,但语言十分简洁,完成核心功能只用了9个动词,并且接近英语口语。
(见P81表)。
3.1.3SQL与三模式结构1.关系数据库的模式结构RDBMS支持关系数据库的三级模式结构。
(见P81图)。
外模式对应于视图和部分基本表;模式对应于基本表;内模式对应于存储文件。
基本表是本身独立存在的表,一个关系对应一个基本表;一个或多个基本表对应一个存储文件;一个表可有若干索引,索引也存放在存储文件中。
存储文件的逻辑结构组成了关系数据库的内模式。
存储文件的物理结构对用户是透明的。
2.SQL对关系数据库模式的支持用户可以用SQL对基本表和视图进行查询或其它操作。
3.2学生-课程数据库分析学生课程数据库,分析基本表,属性,主码,外码等。
3.3数据定义SQL的数据定义功能有三个操作,分别是创建(CREATE)、删除(DROP)和修改(ALTER)。
主要包括模式定义、表定义、视图定义和索引定义(见p83表)。
SQL通常不提供修改模式、视图、索引的操作。
用户如果想修改这些对象,只要先将它们删除掉,然后再重新创建。
3.3.1模式的创建与删除1 什么是模式定义模式实际上定义了一个命名空间,在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。
(Oracle中对模式的解释:模式是一个命了名的对象的集合,对象可以是表、视图、索引、存储过程、触发器等。
一个用户被创建时,一个与之对应的模式也被创建;一个用户只能与一个模式相关;用户名与模式经常互换。
)2 定义模式格式1:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>格式2:CREATE SCHEMA <模式名>AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]说明:1)如果没有指定<模式名>,那么<模式名>隐含为<用户名>。
2)用户可以在创建模式的同时在这个模式中创建基本表、视图,也可以授权。
例1:定义一个学生-课程模式S-T。
CREATE SCHEMA “S-T” AUTHORIZATION WANG;例2:CREATE SCHEMA AUTHORIZATION W ANG;例3:CREATE SCHEMA TEST AUTHORIZATION ZHANGCREATE TABLE TAB1(COL1 SMALLINT,COL2 INT,COL3 CHAR(20),COL4 NUMERIC(10,3),COL5 DECIMAL(5,2));3 删除模式格式:DROP SCHEMA <模式名> <CASCADE | RESTRICT>说明:1)CASCADE和RESTRICT两者必选其一。
2)CASCADE(级联),删除模式的同时把该模式中所有的数据库对象全部删除。
3)RESTRICT(限制),如果该模式中已定义了数据库对象,则拒绝该删除语句的执行。
当该模式中没有任何下属的对象时才能执行。
例:DROP SCHEMA ZHANG CASCADE;3.3.2基本表的创建、删除与修改1 数据类型关系模型中一个很重要的概念是域。
每一个属性来自一个域,它的取值必须是域中的值。
在SQL中域的概念用数据类型来实现。
定义表的各个属性时需要指明其数据类型及长度。
SQL提供了一些主要数据类型,见p86表。
不同的RDBMS中支持的数据类型不完全相同。
一个属性选用哪种数据类型,长度取多少要根据实际情况来决定,一般要从两个方面来考虑:一是取值范围,二是要做哪些运算。
(举例说明:1 字符串、数值;2 定长字符串、变长字符串;3 整数、实数;4 日期类型)2 定义基本表主要完成:定义表名;定义表结构;定义完整性约束。
格式:CREATE TABLE <表名>(<列名> <数据类型>[ <列级完整性约束条件> ][,<列名> <数据类型>[ <列级完整性约束条件>] ]…[,<表级完整性约束条件> ]);说明:1)<表名>:所要定义的基本表的名字,同一个模式中不能重名。
2)<列名>:组成该表的各个属性(列,字段)名,同一个表中不能重名。
3)<列级完整性约束条件>:涉及该属性列的完整性约束条件,也可以在“表级完整性约束条件”处定义。
4)<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件。
5)用户操作表中数据时,由RDBMS自动检查是否违背完整性约束条件。
6)多个列之间、多个表级完整性约束条件之间用逗号分开。
7)右圆括号前一项后面不加逗号。
例1:建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。
其中学号不能为空,是主键,并且姓名取值也唯一。
CREATE TABLE Student( Sno CHAR(12) PRIMARY KEY,Sname V ARCHAR(20) UNIQUE NOT NULL,Ssex CHAR(2),Sage INT,Sdept CHAR(15));例2:建立一个课程表Course。
CREATE TABLE Course( Cno CHAR(4) PRIMARY KEY,Cname V ARCHAR(30) UNIQUE NOT NULL,Cpno CHAR(4),Ccredit SMALLINT,FOREIGN KEY (Cpno) REFERENCES Course(Cno));例3:建立一个学生选课表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno, Cno)为主码。
CREATE TABLE SC( Sno CHAR(12),Cno CHAR(4),Grade INT,PRIMARY KEY (Sno, Cno),FOREIGN KEY (Sno) REFERENCES Student(Sno),FOREIGN KEY (Cno) REFERENCES Course(Cno));3 模式与表每一个基本表都属于某一个模式,一个模式包含多个基本表,定义基本表时有三种方法确定它所属的模式:✧在表名中明确地给出模式名,Create table “S-T”.Student(......);✧在创建模式语句中同时创建表。
✧设置所属的模式,这样在创建表时表名中不必给出模式名。
4 修改基本表随着应用环境和应用需求的变化,有时需要修改已经建立的基本表。
格式:ALTER TABLE <表名>[ ADD <新列名> <数据类型> [ 完整性约束] ][ DROP <完整性约束名> ][ ALTER COLUMN <列名> <数据类型> ];说明:ADD子句:增加新列或新的完整性约束条件DROP子句:删除指定的完整性约束条件或删除列(SQL Server:CONSTRAINT constraint_name;COLUMN columnname)。
ALTER COLUMN子句:用于修改原有的列定义,包括修改列名和数据类型。
例1:向Student表增加“入学时间”列,其数据类型为日期型。
ALTER TABLE Student ADD S-entrance DA TE;不论基本表中原来是否已有数据,新增加的列一律为空值。
例2:将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。
ALTER TABLE Student ALTER COLUMN Sage INT;例3:增加课程名称必须取唯一值的约束条件。
ALTER TABLE Course ADD UNIQUE(Cname);5 删除基本表当某个基本表不再需要时,可删除它。
格式:DROP TABLE <表名>[RESTRICT|CASCADE]说明:1)若选择RESTRICT,则该表的删除是有限制条件的。
要删除的基本表不能被其它表的约束所引用(如CHECK,FOREIGN KEY等约束),不能有视图,不能有触发器等;若选择CASCADE,则该表的删除没有限制条件,删除基本表的同时,相关的依赖对象也将一起被删除。