关系型数据库标准语言SQL(精)
关系数据库标准语言SQL

(2)外调制光纤通信系统
该系统是在光源发出光之后,在光的输出通路上加调制 器(如电光晶体等)进行调制,又称为间接调制光纤通 信系统。
(3)外差光纤通信系统
该系统又称为相干光通信系统。在研制中。
SQL
视图1
视图2
外模式
基本表1
基本表2
存储文件1
基本表3
基本表4 模 式
存储文件2
内模式
4.2 网上书店数据库
为此定义网上书店数据库,其中包括5个表 用户表:USER1(ID,NAME,PASSWORD,ADDRESS,
POSTCODE,EMAIL,HOMEPHONE,CELLPHONE, OFFICEPHONE) 图书类型表:SORTKIND(ID,NAME) 图书表:PRODUCT(ID,NAME,DESCRIPTION, PRICE,IMG,ZUOZHE,SORTKIND_ID) 订单表:USER1_ORDER(ID,STATUS,COST,DATE, USER1_ID) 订单条目表:ORDER_ITERM(ID,AMOUNT, PRODUCT_ID,ORDER_ID) 关系的主码加下划线表示。
第4章 关系数据库标准语言SQL
本章主要内容
由于SQL语言的标准化,所以大多数关系型数据库系 统都支持SQL语言,它已经发展成为多种平台进行交 互操作的底层会话语言,成为数据库领域中一个主 流语言。这一章将详细介绍SQL的核心部分:数据定 义、数据查询、数据更新和嵌入式SQL。
本章学习目标
熟练掌握SQL语言的数据定义、数据查询、数据更新 功能
关系数据库标准语言SQL

关系数据库标准语言SQL(总分:120.00,做题时间:90分钟)一、{{B}}选择题{{/B}}(总题数:30,分数:60.00)1.在SELECT-SQL语句中,可以删除表的是 ______ 。
(分数:2.00)A.DELETEB.DROP √C.ALTERD.DISTINCT解析:2.用SQL语句建立表时将属性定义为主关键字,应使用短语 ______。
(分数:2.00)A.FREEB.PRIMARY KEY √C.CHECKD.UNIQUE解析:3.在第27题表中,将“工资”字段定义有效性检查及错误信息的是 ______。
(分数:2.00)A.ALTER TABLE职工ALTER工资; CHECK工资>0 ERROR“工资应为正数”B.ALTER TABLE职工ALTER工资; SET CHECK工资>0 ERROR工资应为正数C.ALTER TABLE职工ALTER工资; SET CHECK工资>0ERROR“工资应为正数”√D.ALTER TABLE职工ALTER工资; CHECK工资>0 ERROR“工资应为正数”解析:4.SQL的SELETE语句中,限定分组条件的短语是 ______。
(分数:2.00)A.ORDER BYB.WHEREC.GROUP BYD.HAVING √解析:5.SQL语句中的SELECT命令建立表之间联系的短语为 ______ 。
(分数:2.00)A.UNIOEB.GROUP BYC.JOIN √D.FROM解析:6.SQL语言是 ______ 的语言,易学习。
(分数:2.00)A.过程化B.非过程化√C.格式化D.导航式解析:7.在SELECT-SQL语句中,测试列值是否为空值的运算符是 ______。
(分数:2.00)A.IS NULL √B.EXISTSC.NOTD.NOT IN解析:8.在SQL的计算查询中,用于统计的函数是 ______ 。
(分数:2.00)A.AVG()B.SUM()C.COUNT() √D.COUNT解析:9.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处理时,各子句的执行次序为()。
关系数据库标准语言SQ

WHERE (职工.仓库号=仓库.仓库号) AND (工资>1230)
例4.7 找出工作在面积大于400的仓库的职工 号以及这些职工工作所在的城市. 分析 条件:面积>400 联接条件:(职工.仓库号=仓库.仓库号) 查询涉及表:仓库,职工 查询结果字段:职工号,城市 语句:SELE 职工号,城市 FROM 仓库,职工 WHERE;
(面积>400) AND (职工.仓库号=仓库.仓库号)
3、嵌套查询
外查询的条件来自内查询的结果
在SQL语句中,一个SELECT-FROM-WHERE语句称 为一个查询块。将一个查询块嵌套在另一个查询块的 WHERE子句或HAVING短语的条件中的返回多个值 NOT IN :属于关系 联接条件:公共字段名 IN SELE 公共字段名 (相当于联接中条件:表1.公共字段名=表2.公共字 段名)
6、简单的计算查询
SQL不仅具有一般的检索能力,而且还有计 算方式的检索 用于计算检索的函数: COUNT()--- ------计数 SUM()--------------求和 AVG()---------求平均值 MAX()---------求最大值 MIN()----------求最小值
查询产生新字段
例4.10 找出和职工E4工资相同的所有职工. SELE 职工号 FROM 职工 WHERE 工资 =(SELE 工资 FROM 职工 WHERE 职工号 =“E4”) 注意:= 与 IN 之间的关系,等号可以用IN 来 替换,而IN不能用=替换 =:返回的值是一个具体的值 IN:返回的是多个值
4、几个特殊运算符
第四章 关系数据库标准语言SQL
罗盛
一、SQL概述
第4章 关系数据库标准语言——SQL

4.2 SQL的数据定义
4.2.1 基本表的创建、修改和删除 4.2.2 索引的创建和删除
4.2 SQL的数据定义
SQL的数据定义功能包括:定义基本表、定义视图、定义索引。除此之外, 还有定义数据库、定义规则、定义存储过程等。SQL的数据定义语句如表 4-2所示。 表4-2 SQL的数据定义语句
操作方式 操作对象 创建 表 CREATE TABLE 删除 DROP TABLE 修改 ALTER TABLE
视图
CREATE VIEW
DROP VIEW
索引
CREATE INDEX
DROP INDEX
4.2.1 基本表的创建、修改和删除
1.
基本表的创建 一般格式如下:
CREATE TABLE<表名>(<列名><数据类型>[列级完整性 约束条件] [,<列名><数据类型>[列级完整性约束条件]]… [,<表级完整性约束条件>] );
4.2.1 基本表的创建、修改和删除
5. 基本表的删除 随着时间的变化,有些基本表无用了,可将其删除。删除基本表命 令的一般格式为: DROP TABLE<表名>[RESTRICT│CASCADE]; 说明: CASCADE(级联):表示在删除基本表时,不仅表中的数据和 此表的定义将被删除,而且此表上建立的索引、视图、触发器等 有关对象一般也都被删除。 RESTRICT(限制):表示在删除基本表时,只有在没有视图或 约束引用基本表 S 中的列时才能执行,否则拒绝删除。 如执行DROP TABLE S语句后,将基本表S的定义(表框架)连同它 的所有元组、索引以及由它导出的所有视图全部删除,并释放相 应的存储空间。
第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_第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语言》

[DataName!]TableName [[AS] Local_Alias] [ON JoinCondition]…] [WHERE JoinCondition [AND JoinCondition…] [AND|OR FilterCondition [AND|OR FilterCondition…]]] [ORDER BY Order_Item [ASC|DESC][,Order_Item [ASC|DESC]…]] [GROUP BY GroupColumn [,GroupColumn…] [HAVING FilterCondition]] [TO SCREEN|FILE FileName [ADDITIVE]|PRINTER [PROMPT]] [INTO TABLE TableName|CURSOR CursorName|ARRAY ArrayName]
(1)简单条件查询
【例5-5】在Zgjk.dbf表中,查询基本工资在1000元以上(含 1000元)职工的姓名和部门(要求不重复显示)。
在命令窗口中键入:
SELECT DISTINCT 姓名,部门,基本工资 FROM Zgjk WHERE 基本工资>=1000
(2)复合条件查询
【例5-6】在Zgjk.dbf表中,查询家电部门已婚的职工的信息。
1000 AND 1200 该命令等价于:
SELECT * FROM Zgjk WHERE 基本工资>=1000 AND ;
基本工资<=1200
3.对查询结果进行排序
在SELECT-SQL命令中,使用ORDER BY子句,可以使查询结果按 指定要求排序。 命令格式:SELECT <列名表> FROM <表名> [WHERE <条件>]; ORDER BY <排序依据> [ASC|DESC] 说明: 排序依据:备注型数据和通用型数据不能作为排序依据。排序依据 可以是字段名、由AS子句命名的列标题(在ORDER BY子句中,不能 直接使用表达式和函数)和列序号(即该列在查询结果中的位置1,2, 3…)。 排序方式:ASC表示查询结果按照排序依据项的值升序排列, DESC表示查询结果按照排序依据项的值降序排列。默认排序方式为 ASC。 排序规则:数值按大小顺序,字母按“ a ” < “ A ” < “ b ” < “ B ” … 的顺序,汉字按内码值顺序,日期按前后顺序,逻辑型数据“假”在 前“真”在后。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[例4-3]建立人事管理数据库rsgl.dbc,并用SQL 命令建立rs.dbf(编号C(4),姓名C(8),身份证号 C(18),性别C(2),出生日期D,基本工资N(9,2), 简历M) 。
代码如下: CLOSE DATABASES ALL &&关闭所有数据库 CREATE DATABASES rsgl &&建立rsgl数据库 CREATE TABLE rs(编号 C(4),姓名 C(8),身份证号 C(18),性别 C(2),; 出生日期 D,基本工资 N(9,2),简历 M) &&在rsgl数据库中创建表rs MODIFY DATABASE &&打开“数据库设计”窗口
2019/5/16 13
3. 删除记录 命令格式: DELETE FROM <表名> [WHERE <条件>] 功能:逻辑删除表中满足条件的记录,即对满足条件的记录做删除标志。 [例4-10] 将表rsb1.dbf中姓名是“陈宏”的记录删除。 代码如下: DELETE FROM rsb1 WHERE 姓名="陈宏" &&做删除标记 SELECT rsb1 LIST PACK &&彻底删除有删除标记的记录 LIST USE
2019/5/16
14
2019/5/16
5
[例4-4] 继续给上例表rs.dbf完成下列操作: ① 增加1个“籍贯C(8)”字段。 ② 将原来的“编号”字段的宽度由4改为6。 ③ 修改“基本工资”字段的有效性规则,要求基本工资不小于200,出错信息提示为“最低 工资额为200元”。 ④ 将“编号”字段设置成主索引字段。 代码如下: OPEN DATABASES rsgl ALTER TABLE rs ADD 籍贯 C(8) &&增加字段 MODIFY STRUCTURE &&查看结构的变化 ALTER TABLE rs ALTER 编号 C(6) &&修改字段的宽度 MODIFY STRUCTURE ALTER TABLE rs ALTER 基本工资 n(9,2) CHECK 基本工资>=200; ERROR "最低工资额为200元" MODIFY STRUCTURE ALTER TABLE rs ADD PRIMARY KEY 编号 TAG bh &&设置成主索引字段 MODIFY STRUCTURE CLOSE DATABASES ALL
2019/5/16
1
4.3.1 SQL数据定义命令
1. 建立表
2. 修改表的结构 3. 删除表
2019/5/16
2
1. 建立表 命令格式: CREATE TABLE | DBF <表名1>[NAME <长表名>] [FREE] (<字段名1> <字段类型>[(<字段宽度>[,<小数位数>])] [NULL|NOT NULL] [CHECK <逻辑表达式1> [ERROR <提示信息1>]] [DEFAULT <表达式1>] [PRIMARY KEY | UNIQUE] [REFERENCES <表名2> [TAG <标记1>]][NOCPTRANS] [,<字段名2> …] [, PRIMARY KEY <表达式2> TAG <标记2>|, UNIQUE <表达式3> TAG <标记3>] [, FOREIGN KEY <表达式4> TAG <标记4> [NODUP] REFERENCES <表名3> [TAG <标记5>]] [, CHECK <逻辑表达式2> [ERROR <提示信息2>]])| FROM ARRAY 数组名 功能:由给定的字段参数建立一个数据表。
2019/5/16
12
2. 更新记录 命令格式: UPDATE [<数据库名!>] <表名> SET <字段名1> = <表达式1> [,<字段名2> = <表达式2> ...] [WHERE <条件>] 功能:更新满足条件的记录,该记录指定字段值由相对应的表达式值来 代替。 [例4-9] 将表rsb.dbf复制成rsb1.dbf,然后对表rsb1.dbf中的职称为 “讲师”的职工基本工资都增加35元。 代码如下: USE RSB LIST COPY TO rsb1 UPDATE rsb1 SET 基本工资=基本工资+35 WHERE 职称="讲师" SELECT rsb1 LIST USE
2019/5/16
4
2. 修改表的结构
增加新的字段
修改原有的字段
(1)增加或修改字段 命令格式: ALTER TABLE <表名>ADD | ALTER [COLUMN] <字段名><字段类型> [(<字段宽度> [,<小数位数>])] [NULL | NOT NULL][CHECK <逻辑表达式> [ERROR <提示信息>]] [DEFAULT <表达式>] [PRIMARY KEY | UNIQUE] [REFERENCES<表名2> [TAG <标记1>]] [NOCPTRANS] [NOVALIDATE] 功能:增加或修改字段
2019/5/16 7
[例4-5] 继续对表rs.dbf完成下列操作: ① 修改“性别”字段的默认值为“男”。 ② 删除“基本工资”字段的有效性规则。 ③ 删除“籍贯”字段。 ④ 将“基本工资”字段改名为“工资”字段。 代码如下: OPEN DATABASES rsgl ALTER TABLE rs ALTER 性别 SET DEFAULT "男" MODIFY STRUCTURE ALTER TABLE rs ALTER 基本工资 DROP CHECK MODIFY STRUCTURE ALTER TABLE rs DROP 籍贯 MODIFY STRUCTURE ALTER TABLE rs RENAME COLUMN 基本工资 TO 工资 MODIFY STRUCTURE CLOSE DATABASES ALL
2019/5/16
9
(2)将表从数据库和磁盘上删除的DROP TABLE命令。 命令格式: DROP TABLE <表名> | <文件名> | ? [RECYCLE] 功能:从数据库和磁盘上将表直接删除掉。 [例4-7] 将rs.dbf表复制rs1.dbf,然后将rs1.dbf添加到rsgl数据库中,然后 再将其从数据库和磁盘中一起删除。 代码如下: CLOSE ALL USE rs COPY TO rs1 &&复制成表rs1.dbf OPEN DATABASES rsgl ADD TABLE rs1 &&添加表rs1.dbf到rsgl.dbc MODIFY DATABASES &&显示数据库 DROP TABLE rs1 &&将表从数据库和磁盘上一起删除 CLOSE DATABASES DIR *.dbf
2019/5/16
6
修改字段
删除字段
(2)设置字段属性 命令格式: ALTER TABLE <表名>ALTER|DROP [COLUMN] <字段名 1> 字段改 [NULL | NOT NULL] 名 [SET DEFAULT <表达式>] [SET CHECK <逻辑表达式>[ERROR <提示信息>]] [DROP DEFAULT] [DROP CHECK] [NOVALIDATE] [RENAME COLUMN <字段名2> TO <字段名3>] 功能:定义、修改、删除字段及有效性规则和默认值。
4.3 关系型数据库标准语言SQL
SQL是Structured Query Language(结构化查询语言)的英文缩写, 它是关系型数据库的标准操作语言,几乎所有的数据库产品都采用和支持该 语言。 SQL是一种综合的、通用的、功能强大的关系数据库语言,它包括数据 定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)、数据 查询语言(DSL)四大部分。 数据定义语言:用于定义、修改和撤消数据库、表对象等。 数据操纵语言:用于数据库中表记录的修改等。 数据控制语言:用于数据访问权限的控制等。 数据查询语言:用于从数据表中查询数据
2019/5/1610ຫໍສະໝຸດ 4.3.2 SQL数据操纵命令
SQL的数据操纵命令主要包括三个部分: 记录的插入 记录的更新 记录的删除
2019/5/16
11
1. 插入记录 命令格式: INSERT INTO <表名> [(<字段名1> [, <字段名2>, ...])] VALUES (<表达式1> [, <表达式2>, ...]) 或 INSERT INTO <表名> FROM ARRAY <数组> | FROM MEMVAR 功能:在表的末尾追加一条新的记录。 [例4-8] 向表rs.dbf表插入一条记录。 代码如下: OPEN DATABASES rsgl INSERT INTO rs(编号,姓名,性别,出生日期) ; VALUE ("0101","李明","男",{^1965/05/06}) LIST CLOSE DATABASES
2019/5/16 8