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

合集下载

关系数据库标准语言SQL讲义模版(PPT105张)

关系数据库标准语言SQL讲义模版(PPT105张)

3.2.1 操作数据库
【例3-1】创建“salesystem”数据库,参数取系统默认值
Create Database salesystem
必须有 空格
必须有 空格
3.2.1 操作数据库
补充 内容
主数据 文件
日志 文件
Create Database salesystem On Primary (Name =' salesystem ', Filename ='C:\Program Files\Microsoft SQL Server\MSSQL\Data\ salesystem.Mdf', Size=10mb, Maxsize=30mb, Filegrowth=1mb ) Log On (Name = ' salesystem _Log' , Filename ='C:\Program Files\Microsoft SQL Server\MSSQL\Data\ salesystem _Log.Ldf', Size=2mb, Maxsize=6mb, Filegrowth=10%)
于Unique所约束的唯一键,允许有一个数据项为 空值。 ③不允许为一列既定义 Unique 约束,又定义 Primary Key约束。
3.2.2 操作表
【例3-6】在salesystem数据库中建立一个orders (订单) 表,注意外键约束的设置。
Create Table orders
( oid
picture varchar(100)
使用空格
)
分开
若为表中的一列同时设定两种约束,格式为:
pname varchar(30) not null unique,

第3章:关系数据库标准语言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 全 255页

关系数据库标准语言SQL 全 255页
子句。
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定 义子句>|<视图定义子句>|<授权定义子句>]
定义模式(续)
[例3.3]为用户ZHANG创建了一个模式TEST,并且在其中定义 一个表TAB1
CREATE SCHEMA TEST AUTHORIZATION ZHANG
操作方式
创建
删除
CREATE SCHEMA
DROP SCHEMA
CREATE TABLE
DROP TABLE
CREATE VIEW
DROP VIEW
CREATE INDEX
DROP INDEX
修改 ALTER TABLE ALTER INDEX
模式
数据库(有的系统称为目录)
模式
表以及视图、索引等
• 现代关系数据库管理系统提供了一个层次化的数据库对象命名机制
5.语言简洁,易学易用
• SQL功能极强,完成核心功能只用了9个动词。
表 3.2 SQL 的动词
SQL 功 能
动词
数据查询
SELECT
数据定义
CREATE,DROP,ALTER
数据操纵
INSERT,UPDATE,DELETE
数据控制
GRANT,REVOKE
3.1 SQL概述
3.1.1 SQL 的产生与发展 3.1.2 SQL的特点 3.1.3 SQL的基本概念
第三章 关系数据库标准语言SQL
3.1 SQL概述 3.2 学生-课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 空值的处理 3.7 视图 3.8 小结

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

第3章 关系数据库标准语言SQL
第3章 关系数据库标准语言SQL
3.1 SQL概述
关系数据库语言(Structured Query Language, SQL)是一种标准数据库语言,从对数据库的随机查 询到数据库的管理和程序的设计,几乎无所不能,而 且书写非常简单,使用方便。
3.1.2 SQL的组成
1. 数据定义(主要用于定义数据库的逻辑结构,包括定义基 本表、索引和视图三个部分)
例 对学生表Student,按姓名sname升序建立索引,索引名 为stusname。 CREATE INDEX stusname ON Student (sname); 例 对选修表SC,按学号sno升序和课程号cno降序建立唯一 性索引。索引名为scno。 CREATE UNIQUE INDEX scno ON SC(sno ASC, cno DESC); 例如,要在Student表的Sname列上建立一个聚簇索引,并 按升序排列的命令为: CREATE Cluster INDEX Student ON Student(Sname); 例 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO ASC)
說明:<表名>是所要建立的基本表的名字。在同一个数据库 中可以建立多个基本表,但表不能同名。一个基本表中至少 由一个或多个属性列组成。对于同一表中的各列要有不同的 <列名>,并要指明<数据类型>等。 在建表时还可以定义有关的完整性约束。完整性约束有两个 层次,即针对表中某一列的【列级完整性约束】和针对表的 【表级完整性约束】(方括号表示任选项)。用户可以根据 实际需要对于每列指明列级完整性约束,如用来指明该列的 值是否允许为空值(NULL)、值是否唯一(UNIQUE)等; 也可以对表指明表级完整性约束,如用来指明该表的主码 (PRIMARYKEY)、外码(FOREGIN KEY)和被参照关系 (REFERENCES)等。这些完整性约束将存入系统的数据 字典中。当用户对表进行数据更新时,由DBMS自动检查用 户操作是否违背所定义的完整性约束。

关系数据库标准语言SQL最新课件

关系数据库标准语言SQL最新课件
② 查找所有在CS系学习的学生。 SELECT Sno, Sname, Sdept FROM Student WHERE Sdept= ' CS ';
结果为:
Sno 201215121 201215122
Sname 李勇 刘晨
Sdept CS CS
2024/3/2
关系数据库标准语言SQL最新课件
30
常用于=连接 首先按连接属性对表1和表2排序 对表1的第一个元组,从头开始扫描表2,顺序查找满足
连接条件的元组,找到后就将表1中的第一个元组与该 元组拼接起来,形成结果表中一个元组。当遇到表2中 第一条大于表1连接字段值的元组时,对表2的查询不再 继续
2024/3/2
关系数据库标准语言SQL最新课件
接条件的元组一并输出 左外连接
列出左边关系中所有的元组
右外连接
列出右边关系中所有的元组
2024/3/2
关系数据库标准语言SQL最新课件
18
外连接(续)
[例 3. 53] 改写[例 3.49]
SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUT JOIN SC ON
2024/3/2
关系数据库标准语言SQL最新课件
13
2. 自身连接
❖ 自身连接:一个表与其自己进行连接 ❖ 需要给表起别名以示区别 ❖ 由于所有属性名都是同名属性,因此必须使用别
名前缀
[例 3.52]查询每一门课的间接先修课(即先修课的先修课)
SELECT o, SECOND.Cpno FROM Course FIRST, Course SECOND WHERE FIRST.Cpno = o;

关系数据库标准语言SQL

关系数据库标准语言SQL

3. 带子查询旳删除语句
[例11] 删除计算机科学系全部学生旳选课 统计。
DELETE FROM SC WHERE 'CS'=
子查询:在Student表 中找出选修了课程 旳学生所在旳系名
( SELETE Sdept
FROM Student
WHERE Student.Sno=SC.Sno);
4. 更新操作与数据一致性
F_Student1视图旳映象关系被破坏,造成该视 图不能正常工作。
常见旳视图形式
行列子集视图 WITH CHECK OPTION旳视图 基于多种基表旳视图 基于视图旳视图 带体现式旳视图 分组视图
2. 删除视图
DROP VIEW <视图名>;
该语句从数据字典中删除指定旳视图 定义
由该视图导出旳其他视图定义仍在数 据字典中,但已不能使用,必须显式 删除
删除视图(续)
[例9] 删除视图IS_S1
DROP VIEW IS_S1;
DROP VIEW IS_S2;
3.5 视 图
3.5.1 定义视图 3.5.2 查询视图 3.5.3 更新视图 3.5.4 视图旳作用
3.5.2 查询视图
new
对顾客来说,查询视图与查询基本表相同
DBMS实现视图查询旳措施:视图消解法 进行有效性检验,检验查询旳表、视图等是否存
查询视图(续)
[例2] 查询信息系选修了1号课程旳学生学号 和姓名 SELECT Sno,Sname FROM IS_S1
SELECT Sno,Sname FROM IS_Student,SC WHERE IS_Student.Sno = SC.Sno AND
o= '1';

第三章关系数据库标准语言SQL精品PPT课件

第三章关系数据库标准语言SQL精品PPT课件
数据库系统概论
第三章关系数据库标准语言SQL
3.1SQL概述
3.1.1SQL的产生与发展
3.1.2SQL的特点
SQL集数据查询、数据操纵、数据定义和数据 控制功能于一体。
主要特点包括:
1. 综合统一:SQL语言风格统一,可以独立完 成数据库生命周期中的全部活动,包括定义 关系模式、建立数据库、插入数据、查询、 更新、维护、数据库重构、数据库安全性控 制等一系列操作要求,这就为数据库应用系 统的开发提供了良好的环境。
语句格式约定符号:“<>”中为实际语义; “[]”中的内容为任性项;“{}”或“|”中的内 容为必选项,即必选其一;“[,…n]”表示前面 的项可重复多次;
一般语法规定:SQL中的数据项分隔符 “,”,其字符串常数的定界符用单引号 “ ’ ”表示;
SQL特殊语法规定:SQL的关键字一般使用大 写字母;SQL语句的结束符为“;”;SQL一 般应采用格式化书写方式。
2. 高度非过程化:SQL语言进行数据操作,只 要提出“做什么”,而无须指明“怎么做”, 因此无需了解存取路径,存取路径的选择以 及SQL语句的操作过程由系统自动完成。
3. 面向集合的操作方式:SQL语言采用集合操 作方式,不仅操作对象、查找结果可以是元 组的集合,而且一次插入、删除、更新操作 的对象也可以是元组的集合。
3.2学生-课程数据库
学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Cpno,Ccredit) 选修表:SC(Sno,Cno,Grade)
3.3数据定义
SQL的数据定义包括定义基本表、定义索 引、定义视图和定义数据库,如下表
1. 建立索引

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

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

6.字符串类型
字符数据类型是使用最多的数据类型之一,它可以用来存储各 种字母、数字符号、特殊符号。
(1)CHAR
(2)NCHAR (3)VARCHAR (4)NVARCHAR
(5) TEXT (6) NTEXT
7.二进制数据类型
(1)BINARY (2)VARBINARY。 (3)IMAGE
3.2.2
组成。
CREATE TABLE D
(Dno CHAR(10),Dept CHAR(15));
【例3-2】建立一个课程表C,由课程号(Cno)、课程名(Cn)、课时
数(Ct)、开课学期(Term)、课程性质(Cx)和课程先行课(Cpno) 组成,其中课程号不能为空。
CREATE TABLE C (Cno CHAR(8) CONSTRAINT cno_cons NOT NULL, Cn CHAR(20), Ct INT DEFAULT 64, Term CHAR(20) NULL,
[CONSTRAINT <约束名>] CHECK (<条件>)

(5)FOREIGN KEY约束(外键约束)
主表
从表
主键
引用
外部键
[CONSTRAINT<约束名>] FOREIGN KEY REFERENCES <主表名> (<列名>[{,<列名>}])
【例3-1】 创建部门表D,由部门号(Dno)和部门(Dept)两个属性
1.定义基本表
CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件] [,<表级完整性约束条件>]);

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

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

Sno
Sname Sex
SD
Age
C
Cno 1 2 3 4 5 6 7 Cname 数据库 数学 操作系统 数据结构 数字通信 信息系统 程序设计 (b) 4 7 6 1 2 Pcno Credit 3 3 4 4 3 3 4 2
create table c( cno char(1) primary key, cname varchar2(8), pcno char(1) references c(cno), credit number(1) );
Cno
Cname
Pcno Credit
Cno 1 2 3 4 5 6 7
Cname 数据库 数学 操作系统 数据结构 数字通信 信息系统 程序设计
Pcno Credit 3 4 7 6 1 2 3 4 4 3 3 4 2
insert into c(cno,cname,pcno,credit) value(‘2’,‘数学’,null,4); 数学’ 数学 insert into c(cno,cname,pcno,credit) value(‘7’,‘程序设计’, 2,2); insert into c(cno,cname,pcno,credit) value(‘4’,‘数据结构’,7,3); 数据结构’ 数据结构 insert into c(cno,cname,pcno,credit) value(‘3’,‘操作系统’,4,4); insert into c(cno,cname,pcno,credit) value(‘1’,‘数据库’, 3,3); 数据库’ 数据库 insert into c(cno,cname,pcno,credit) value(‘6’,‘信息系统’,1,4); 信息系统’ 信息系统 insert into c(cno,cname,pcno,credit) value(‘5’,‘数字通信’, 6,3); 数字通信’ 数字通信

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

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

SQL语言集数据查询(data query)、数据操纵 (data manipulation)、数据定义(data definition) 和数据控制(data control)功能于一体,充分体现 了关系数据语言的特点和优点 。
§3.1.1 SQL语言特点
⑴ 综合统一的一体化
• SQL语言集数据定义语言DDL、数据操纵语言DML、数 据控制语言DCL的功能于一体,语言风格统一,可以独 立完成数据库生命周期中的全部活动,包括定义关系模 式、插入数据建立数据库、查询、更新、维护、数据库 重构、数据库安全性控制等一系列操作要求
例2 向Student表增加“入学时间”列,其数 据类型为日期型。 ALTER TABLE Student ADD Scome DATE ;
§3.2.3 删除基本表
一般格式为: DROP TABLE <表名> [CASCADE]:无限制 [RESTRICT]: 有限制的删除基本表 例5 删除Student表。 DROP TABLE Student RESTRICT
例9 查询考试成绩有不及格的学生的学号。
• SELECT DISTINCT Sno FROM SC WHERE Grade <60;
这里使用了DISTINCT短语,当一个学生有多门课程不及格, 他的学号也只列一次。
② 确定范围 例10 查询年龄在20至23岁之间的学生的姓名、系 别、和年龄。

一般格式为: CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名> (<列名>[<次序>][,<列名>[<次序>]]...); 其中:<表名> 指定要建索引的基本表的名字。索引可以建 在该表的一列或多列上,各列名之间用逗号分隔。每个<列 名>后面还可以用<次序>指定索引值的排列次序,包括ASC (升序)和DESC(降序)两种,缺省值为ASC。 说明: UNIQUE:表明此索引的每一个索引值只对应唯一的数据记 录。 CLUSTER:表示要建立的索引是聚簇索引。所谓聚簇索引 是指索引项的顺序与表中记录的物理顺序一致的索引组织。

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

第三章 关系数据库标准语言-SQL
21
3.3 查询
【例5】查询选修了课程的学生人数。 解: SELECT COUNT (DISTINCT S#) FROM SC 【例6】统计C810号课程的学生平均成绩。 解: SELECT AVG G) AVG(G FROM SC =‘C810 C810’; WHERE C# = C810 ;
22
3.3 查询
4.数据分组查询
使用聚合函数可以实现对关系中的所有查 询的元组进行聚合运算,但在实际应用中,经 常要将查询的结果分组,然后再对每个分组进 行统计。这时就可以利用SELECT语句提供的 GROUP BY子句和HAVING短语来实现分组统计。
23
3.3 查询
【例7】查询选修了3门以上4学分课程的学生的学号。 解: SELECT S# FROM SC WHERE CR =‘4’ = 4 GROUP BY S# COUNT( )>3 HAVING COUNT(*)>3;
⑵删除索引
DROP INDEX <索引名>
9
3.2 数据定义
【例1】建立一个学生关系Student Student,由学号Sno 、姓名 Student Sno Sdept五个属 Sname 、性别Ssex 、年龄Sage 、所在系Sdept Ssex Sage Sdept 性组成,其中学号不能为空且值是唯一的。 解:CREATE TABLE Student CREATE (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(2), Sage INT, Sdept CHAR(15));
18
3.3 查询
【例1】查询全体学生的姓名,学号,所在系。 解: SELECT SN,S#,SD SN,S#, S; FROM S; 【例2】查询考试成绩不及格的学生的学号。 解: SELECT DISTINCT S# FROM SC G<60; WHERE G<60; 【例3】查询计算机系或信息系年龄在20岁以下的学生姓名。 解: SELECT SN FROM S WHERE (SD=‘计算机’ OR SD=‘信息’) AND SA<20; (SD SD ) SA<20

关系数据库标准查询语言SQL

关系数据库标准查询语言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章 关系数据库标准语言SQL

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

3.1.1 语言的发展及标准化
1992年,ISO又推出了SQL92标准,也称为SQL2。 目前SQL99(也称为SQL3)在起草中,增加了面向对象的 功能。 结构化查询语言SQL(Structured Query Language)是 一种介于关系代数与关系演算之间的语言,其功能包 括查询、操纵、定义和控制四个方面,是一个通用的、 功能极强的关系数据库语言。目前已成为关系数据库 的标准语言,广泛应用于各种数据库。
3.2.2 创建、修改和删除数据表ຫໍສະໝຸດ 2.修改基本表 一般格式为:
ALTER TABLE table { [ ALTER COLUMN column_name { new_data_type [ ( precision [ , scale ] ) ][ COLLATE < collation_name > ][ NULL | NOT NULL ]| {ADD | DROP } ROWGUIDCOL }]
3.2.2 创建、修改和删除数据表
3、用户自定义的完整性约束规则 CHECK可用于定义用户自定义的完整性约束规则,CHECK 既可用于列约束,也可用于表约束,其语法格式为: [CONSTRAINT <约束名>]CHECK [NOT FOR REPLICATION](<条件>)
3.2.2 创建、修改和删除数据表
3.1.2 SQL语言的基本概念 SQL语言的基本概念
SQL用户 SQL用户
视视 1
视视 2
外模式
基基基 1
基基基 2
基基基 3
模式
存储文件1
存储文件2
存储文件3
内模式
SQL支持的数据库模式
3.1.2 SQL语言的基本概念 SQL语言的基本概念

关系数据库标准语言SQL

关系数据库标准语言SQL
3.1.2 SQL的特点 3.1.3 SQL的基本概念
8
第3章 关系数据库标准语言SQL
3.1.1 SQL的产生与发展
1974年由Boyce和Chamberlin提出,并在 IBM公司研制的数据库管理系统System R 上实现
1986年10月获批成为关系型数据库语言 的美国标准 1987年被采纳为关系型数据库语言的国际 标准
---是关系数据库的标准语言
4
SQL概述(续)数据定义(Data definition)
数据检索(Data retrieval) SQL是用于对存放在计算机数据库中的数 存取控制(Access control)
第3章 关系数据库标准语言SQL SQL决不仅仅是一个查询工具
数据操纵(Data manipulation) 据进组织、管理和检索的工具。 数据共享(Data sharing)
3.1.3 SQL的基本概念
SQL同样支持关系数据库三级模式结构
SQL 外模式----视图和部分基本表
模式----基本表
内模式----存储文件
基本表1 基本表2 基本表3
视图1
视图2
外模式
基本表4
模式
存储文件1
存储文件2
内模式
13
第3章 关系数据库标准语言SQL
SQL的基本概念(续)
基本表
ALTER TABLE
SQL通常不提供修改数据库、视图、索引等的操作 修改方法:先删除,再重建
21
第3章 关系数据库标准语言SQL
3.3.1 数据库的定义与删除
CREATE DATABASE <数据库名>
CREATE DATABASE s_t

关系数据库标准语言SQL

关系数据库标准语言SQL

约束定义
① 列取值非空约束
<列名> <类型> NOT NULL 例: sname char(10) NOT NULL
约束定义(续)
② 表主码约束
在定义列时定义主码(仅用于单列主码)
列定义 PRIMARY KEY 例: SNO char(7) PRIMARY KEY
在表级完整性约束中定义主码(用于单列或 多列主码)
PRIMARY KEY (<列名序列>)
例: PRIMARY KEY(SNO) PRIMARY KEY(SNO,CNO)
约束定义(续)
③外码引用约束
指明本表外键码列引用的表及表中的主码列。 [ FOREIGN KEY (<本表列名>)] REFERENCES <外表名>(<外表主码列名>) 例: FOREIGN KEY (sno) REFERENCES 学生表(sno)
Student表结构
列名 Sno Sname Ssex Sage Sdept 含义 学号 姓名 性别 年龄 所在系 数据类型 CHAR(10) CHAR(8) CHAR(2) SMALLINT VARCHAR(20) 约束 主码,非空 非空
定义Student表
CREATE TABLE Student ( Sno CHAR(10) NOT NULL, Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept VARCHAR(20), PRIMARY KEY (Sno) );
3.1 SQL语言概述
3.1.1 SQL语言的发展 3.1.2 SQL语言的特点 3.1.3 SQL语言功能概述
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第三章关系数据库标准语言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中一个关系就对应一个表。

视图是从一个或1 几个基本表导出的表。

视图本身不独立存储在数据库中,是一个虚表。

即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。

视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。

2. 试述视图的优点。

⑴视图能够简化用户的操作。

⑵视图使用户能从多种角度看待同一数据。

⑶视图对重构数据库提供了一定程度的逻辑独立性。

⑷视图能够对机密数据提供安全性。

3. 所有的视图是否都可以更新?为什么?不是。

视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。

因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以并不是所有的视图都是可更新的。

如对视图S_G(学生的学号及其平均成绩)而言,要修改平均成绩,必须修改各科成绩,但无法知道哪些课程成绩的变化导致了平均成绩的变化。

CREATE VIEW S_G(Sno,Gavg)AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;三、应用题1. 设有两个基本表R(A,B,C)和S(D,E,F),试用SQL查询语句表达下列关系代数表达式:1)πA(R) (2)σB='17'(R)(3)R×S (4))πA,F(σC=D(R×S))(1)SELECT A FROM R(2)SELECT * FROM R WHERE B='17' (3)SELECT A,B,C,D,E,F FROM R,S(4)SELECT A,F FROM R,S WHERE R.C=S.D2. 设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式:(1)R∪S (2)R∩S (3)R-S (4)πA,B(R)πB,C(S)(1)SELECT A,B,C FROM R UNIONSELECT A,B,C FROM S (2)SELECT A,B,C FROM R INTERSECTSELECT A,B,C FROM S (3)SELECT A,B,C FROM R WHERE NOT EXISTS (SELECT A,B,C FROM SWHERE R.A=S.A AND R.B=S.B AND R.C=S.C) (4)SELECT R.A,R.B,S.C FROM R,S WHERE R.B=S.B2 3. 根据下面所给的商品库表,写出SQL语句商品表1(商品代号char(8),分类号char(8),单价float数量int) 商品表2(商品代号char(8),产地char(8),品牌char(8) ) (1)从商品库中查询出数量在10和20之间的商品种数 (2)从商品库中查询出每类(即分类名相同)商品的总数量 (3)从商品库中查询出比所有商品单价的平均值要低的全部商品 (4)从商品库中查询出所有商品的不同产地的总数 (1)select * from 商品表1 where 数量 between 10 and 20(2)select 分类名,sum(数量) as 总数量 from 商品表1 group by 分类名(3)select * from 商品表1where 单价< (select avg(单价) from 商品表1 ) (4)select count(distinct产地) as产地数from商品表2 4. 教学数据库的三个基本表如下:学生S(S#,SNAME,AGE,SEX) 学习SC(S#,C#,GRADE) 课程C(C#,CNAME,TEACHER) 试用SQL的查询语句表达下列查询。

(1) 检索LIU老师所授课程的课程号和课程名。

(2) 检索年龄大于23岁的男学生的学号和姓名。

(3) 检索至少选修LIU老师所授课程中一门课程的女学生姓名。

(4) 检索WANG同学不学的课程的课程号。

(5) 检索至少选修两门课程的学生学号。

(6) 检索全部学生都选修的课程的课程号与课程名。

(7) 检索选修课程包含LIU老师所授课的学生学号。

【解答】(1)SELECT C#,CNAME FROM C WHER E TEACHER=‘LIU’ (2)SELECT S#,SNAME FROM S WHERE (AGE>23) AND (SEX=‘M’) (3)SELECT SNAME FROM S WHERE SEX=‘F’ AND S# IN (SELECT S# FROM SC WHERE C# IN(SELECT C# FROM C WHERE TEACHER=‘LIU’)(4)SELECT C# FROM C WHERE C# NOT IN (SELECT C# FROM SC WHERE S# IN(SELECT S# FROM S WHERE SNAME='WANG'))(5)SELECT DISTINCT X.SNO FROM SC X,SC Y WHERE X.SNO=Y.SNO ANDO<>O(6)SELECT C#,CNAME FROM C WHERE NOT EXISTS3(SELECT * FROM S WHERE S# NOT IN(SELECT * FROM SC WHERE SC.C#=C.C#)) (7) SELECT DISTINCT S# FROM SC WHERE C# IN(SELECT C# FROM C WHERE TEACHER='LIU')) 5. 有三个关系如下:教师:(教师编号整数型 ,教师姓名字符型(4) ,职称字符型(10)) ,教师编号是主码。

课程:(课程编号整数型 ,课程名称字符型(20) ),课程编号是主码。

授课:(教师编号整数型,课程编号整数型 ,讲课效果浮点数型),教师编号和课程编号整体是主码,教师编号是参照教师关系的外码,课程编号是参照课程关系的外码。

是完成下列问题:(1) 编写 SQL 语句,创建教师表。

(2) 编写 SQL 语句,创建讲师视图(职称为“讲师”的所有教师)。

(3) 用汉语阐述 SQL 语句的查询结果:SELECT 教师姓名,职称 FROM 教师 WHERE 教师编号IN(SELECT 教师编号 FROM 授课 WHERE 讲课效果>=8.5 ); (4) 编写 SQL 语句,统计所有教师的人数。

(5) 编写 SQL 语句,将课程名称由“多媒体”更改为“多媒体技术” 。

(6) 编写SQL 语句,删除课程名称为“多媒体”的课程信息。

【解答】(1) CREATE TABLE 教师(教师编号 int NOT NULL,教师姓名 char(4),职称char(10),PRIMARY KEY(教师编号)) ;(2) CREATE VIEW 讲师 AS SELECT * FROM 教师 WHERE 职称=’讲师’ ; (3) 查询讲课效果不低于 8.5 分的教师姓名和职称信息。

(4) SELECT COUNT(*) FROM 教师;(5) UPDATE 课程 SET 课程名称=’多媒体技术’ WHERE 课程名称=’多媒体’;(6) DELETE FROM 课程 WHERE 课程名称=’多媒体’; 6. 教学数据库的三个基本表如下:学生S(S#,SNAME,AGE,SEX) 学习SC(S#,C#,GRADE) 课程C(C#,CNAME,TEACHER) 试用SQL的查询语句表达下列查询。

(1)统计有学生选修的课程门数。

(2)求选修C4课程的学生的平均年龄。

(3)求LIU老师所授课程的每门课程的学生平均成绩。

(4)统计每门课程的学生选修人数(超过10人的课程才统计)。

要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

相关文档
最新文档