第4章(1) 关系数据库标准语言SQL-4.1至4.4.1
vf第四章关系数据库标准语言SQL

4.2.8 利用空值查询
SQL支持空值,当然也可以利用空值进 行查询。 假设在订购单关系中,一名职工正在准 备订购单,但尚未选定供应商,这样若把信 息存入数据库,则供应商号和订购日期两个 属性均为空值,在前面给出的订购单记录中 有3个这样的记录。
例4.23 找出尚未确定供应商的订购单。 SELE * FROM 订购单 WHER 供应商号IS NULL 结果是: E6 NUIL OR77 NULI E1 NULL OR80 NUIJL E3 NUIJL OR90 NUI„L 注意:查询空值时要使用IS NULL,而= NULL是无效的,因为空值不是一个确定的 值,所以不能用“=”这样的运算符进行比较。
例4.20 求在WH2仓库工作的职工的最高工资值。
SELECT MAX(工资) FROM 职工 WHERE 仓库号=”WH2”
4.2.7 分组与计算查询
利用GROUP BY子句进行分组计算查询。 GROUP BY短语的格式如下: Group by 字段名 having 条件 可以按一列或多列分组,还可以用HAVING 进一步限定分组的条件。 例4.21 求每个仓库的职工的平均工资。 SELECT 仓库号,AVG(工资) FROM 职工 GROUP BY 仓库号
可以看到,在这个命令中含有两个 SELECT—FROM—WHERE查询块,即内 层查询块和外层查询块,内层查询块检索 到的仓库号值是WHl和WH2,这样就可以 写出等价的命令: SELE 城市 FROM 仓库 WHERE 仓库号; IN(”WHl”,”WH2”) 这里IN相当于集合运算符∈。
例4.9查询所有职工的工资都多于1210元的仓 库的信息。 这个检索要求也可以描述为:没有一个职工的工 资少于或等于1210元的仓库的信息。 不在以下范围 这样可以有SQL命令: SELE * FROM 仓库 WHER 仓库号 NOT IN; (SELECT 仓库号 FROM 职工 WHERE ; 工资<=1210) 内层SELECT—FROM—WHERE查询块指出所 有职工的工资少于或等于1210元的仓库的仓库号值 的集合,然后从仓库关系中检索元组的仓库号属性 值不在该集合中的每个元组。
第四章关系数据库标准语言SQL语言

4.3.1单表查询
(4)字符匹配 谓词LIKE可以用来进行字符串的匹配。 [NOT] LIKE ‘<匹配串>’[ESCAPE ‘<转换字符码>’] %代表任意长度的字符串(长度可以为0); -(下横线)代表任意单个字符。
4.3.1单表查询
例14.查询学号为200215121的学生的详细情况。 select * from student where sno like '200215121'; 例15.查询所有姓刘的学生的姓名、学号和性别。 select * from student where sname like '刘%‘; 例16.查询姓“欧阳”且全名为3个汉字的学生的 姓名。 select sname from student where sname like '欧阳_';
4.2数据定义
二、删除索引 DROP INDEX <索引名> 例:索引示例。 create table abc ( a int, b int );
create unique index abcindex on abc(a desc);
drop index abc.abcindex; create clustered index abcindex on abc(a desc);
4.3.1单表查询
二、选择表中的若干元组 1.消除取值重复的行 例6.查询选修了课程的学生学号。 select sno from sc; select distinct sno from sc; 2.查询满足条件的元组 (1) 比较大小 例7.查询计算机科学系全体学生的名单。 select sname from studenห้องสมุดไป่ตู้ where sdept='CS';
第4章 关系数据库标准语言SQL4(1)

供应商 供应商号
订购单 职工号
供应商号 订购单号 订购日期
1
(六)分组及计算查询 SQL语言是完备的,也就是说,只要数据按关系方式存入数据库, 语言是完备的,也就是说,只要数据按关系方式存入数据库, 语言是完备的 就能有构造合适的SQL命令把它检索出来。事实上,SQL不仅具有一 命令把它检索出来。 就能有构造合适的 命令把它检索出来 事实上, 不仅具有一 计算方式的检索 般的检索能力,而且还有计算方式的检索,比如检索职工的平均工资、 般的检索能力,而且还有计算方式的检索,比如检索职工的平均工资、 检索某个仓库中职工的最高工资值等。用于计算检索的函数有: 检索某个仓库中职工的最高工资值等。用于计算检索的函数有: 1.COUNT——计数 . 计数 2.SUM ——求和 . 求和 3.AVG ——计算平均值 . 计算平均值 4.MAX ——求最大值 . 求最大值 5.MIN ——求最小值 . 求最小值 这些函数可以用在SELECT短语中对查询结果进行计算。 短语中对查询结果进行计算。 这些函数可以用在 短语中对查询结果进行计算
例28.列出职工全部记录并计算全体职工 . 的平均工资和工资总和( 的平均工资和工资总和(使用 COMPUTE)。 )。
结果是: 结果是: WH2 E1 1220
E3 E4 E6 E7 1210 1250 1230 1250 avg ==== 1232 sum ==== 6160
SELECT 仓库号,职工号,工资 仓库号,职工号, FROM 职工 COMPUTE AVG(工资), ),SUM(工资); (工资), (工资);
职工
仓库号 职工号 工资
上一E3 1210 WH1 E7 1250 avg ==== 1230 sum ==== 2460 WH2 E1 1220 WH2 E4 1250
数据库系统概论:第4章 关系数据库标准语言——SQL语言1

②字符类型 CHAR(n)定义指定长度的字符串,n为字符数的固定长度。 VARCHAR(n)定义可变长度的字符串,其最大长度为n, n不可省略。 ③位串型 BIT(n)定义数据类型为二进制位串,其长度为n。 BIT VARYING(n)定义可变长度的二进制位串,其最大长 度为n,n不可省略。 ④时间型 DATE用于定义日期,包含年、月、日,格式为YYYY-MMDD。 TIME用于定义时间,包含时、分、秒,其格式为 HH:MM:SS。 ⑤布尔型 BOOLEAN定义布尔类型,其值可以是:TRUE(真)、 13 FALSE(假)。
第4章 关系数据库标准语言--SQL语 言
第一节 SQL概述 第二节 数据定义 第三节 数据查询 第四节 数据操纵 第五节 视图
1
第一节 SQL概述
1、什么是SQL语言
SQL(Structured Query Language) 是结构化查询语言。
SQL语言集数据定义、查询、更新和控 制功能于一体。
/*外键约束*/ Credit NUMBER);
21
例3:建立一个学生选课表SC,所有约束条件均为表
级完整性约束。
CREATE TABLE SC
( Sno CHAR(8),
Cno CHAR(8),
Grade NUMBER,
PRIMARY KEY(Sno,Cno),
/*主键约束*/
FOREIGN KEY(Sno) REFERENCES Student(Sno)
3
SQL语言已经成为关系数据库的标准语言, 是关系数据库的基础,oracle,SQL Server 和DB2都使用SQL。
目前,很多数据库产品都对SQL语句进行 再开发与扩展,如oracle提供的PL/SQL (Procedure Language and SQL)就是 对SQL的一种扩展。
数据库技术及应用第4章关系数据库标准语言sql

第4章 关系数据库标准语言——SQL
表4-2 SQL的数据定义语句
第4章 关系数据库标准语言——SQL
1. 语句格式的约定符号 在语句格式中: 尖括号“〈〉”——实际语义。 中括号“[ ]”中的内容——任选项。 大括号“{}”或用分隔符“|”中的内容——必选项, 即必选其中之一项。 [,…n]——表示前面的项可重复多次。
【例4-4】为学生课程数据库中的学生、课程和选 课三个表建立索引。其中,学生表按“学号”升序建 立索引;课程表按“课程号”升序建立惟一索引;选 课表按“学号”升序和“课程号”降序建立惟一索引。 CREATE UNIQUE INDEX 学号ON 学生(学号); CREATE UNIQUE INDEX 课程号 ON 课程(课程号); CREATE UNIQUE INDEX 选课号 ON 选课(学号 ASC, 课程号 DESC);
第4章 关系数据库标准语言——SQL
4.3.2 SQL的查询实例 SQL的查询语句可以分为简单查询、连接查询、嵌
套查询和组合查询四种类型。下面仍以学生课程数据 库为例,介绍各种查询的描述格式。
学生课程数据库包括三个基本表,其结构为 学生(学号,姓名,年龄,所在系) 课程(课程号,课程名,先行课) 选课(学号,课程号,成绩)
第4章 关系数据库标准语言——SQL
(2) 比较操作符。 比较操作符用于测试两个数据是否相等、不等、 小于或大于某个值。SQL中的比较操作符包括:=(等 于 ) 、 >( 大 于 ) 、 <( 小 于 ) 、 <=( 小 于 等 于 ) 、 >=( 大 于 等 于)、!=或<>(不等于)、!>(不大于)和 !<(不小于),共九 种操作符。 (3) 逻辑操作符。 SQL的逻辑操作符如表4-4所示。
第四章关系数据库标准语言SQL

第四章关系数据库标准语言SQLSQL是Structured Query Language(结构化查询语言)的缩写。
可以说查询是SQL语言的重要组成部分,但不是全部,SQL还包括数据定义、数据操纵和数据控制等部分。
4.1SQL概述●SQL语言具有以下主要特点:1.SQL是一种一体化的语言,它包含了数据定义、数据操纵和数据控制等方面的功能,可以完成数据库活动中的全部工作。
2.SQL语言是一种高度非过程化的语言。
3.SQL语言是非常简洁。
4.SQL语言看一直接以命令方式交互使用,也可嵌入到程序设计语言中以程序方式使用。
●SQL命令动词SQL功能命令动词数据查询Select数据定义Create、drop、alter数据操纵Insert、update、delete数据控制Grant、revoke4.2查询功能●Select 字段名from 表名where 条件●Where 条件——用来限定查询必须满足的条件●Group by 字段名——用于对查询结果进行分组,可以利用它进行分组汇总●Having 条件——用来限定分组必须满足的条件(having只是跟在group by 后使用)●Order by 字段名——用于对查询结果进行排序4.2.1简单查询(130页)简单查询是基于一个表的查询,其基本形式:select 字段名from 表名where 条件distinct短语的作用是去掉查询结果中的重复值。
“*”是通配符,表示所有属性(字段)。
Where短语指定了查询条件,查询条件可以是任意复杂的逻辑表达式。
命令窗口中的分号是续行符号。
SQL语句字段值需要定界符的要加。
对于字符型字段值区分大小写。
条件中的and,or有优先级,and优先于or。
4.2.2简单的连接查询连接查询是一种基于多个关系的查询。
若在from后有两个或多个表名,要在where后加这两个或多个表的连接条件,格式:表a.公共字段=表b.公共字段4.2.3嵌套查询嵌套查询是另一种基于多个关系的查询,这类查询所要求的结果出自一关系,但相关的条件却涉及多个关系格式:select 字段名from 表a where 公共字段名in;(select 公共字段名from 表b where 条件)In 相当于集合运算符∈。
第4章 关系数据库标准语言SQL

例1:<=与AND的使用 : 与 的使用 SELECT 姓名,性别,专业 姓名,性别,专业; FROM 学生档案 学生档案; WHERE 出生日期<={^1980-02-01}; 出生日期 AND 性别 女” 性别=“女 注意:不同数据类型数据实例的写法。 注意:不同数据类型数据实例的写法。 日期型: 日期型:{^1980-02-01}
23:37:55
SQL发展历程 SQL发展历程 发展
1976年诞生在 年诞生在IBM公司 年诞生在 公司 1986年出现标准 ANSI公布 1986年出现标准,ANSI公布 年出现标准, 1987年成为国际标准,ISO公布 年成为国际标准, 公布 年成为国际标准 SQL89 SQL92 SQL3
23:37:55
23:37:55
2. 表的删除
格式: 格式: DROP TABLE 表名 DROP VIEW 视图名 说明: 说明:删除数据库表时应在打开数据库 后进行,该命令是直接删除表文件。 后进行,该命令是直接删除表文件。 删除表还可以用 DELETE FILE 表名
23:37:55
4.2.2 数据表结构的修改
23:37:55
٭各子句的作用说明: 各子句的作用说明:
FROM是唯一必须的子句,指定查询来源; 是唯一必须的子句,指定查询来源; 是唯一必须的子句 WHERE可选子句限定查询条件 WHERE可选子句限定查询条件; 可选子句限定查询条件; GROUP BY子句对查询结果进行分组; 子句对查询结果进行分组; 子句对查询结果进行分组 HAVING子句只能用于 子句只能用于GROUP BY之后, 之后, 子句只能用于 之后 为每个分组指定条件; 为每个分组指定条件; ORDER BY指定查询结果的显示顺序。 指定查询结果的显示顺序。 指定查询结果的显示顺序
第4章关系数据库标准语言SQL

SELECT语句中的每个短语都完成一定的功能, 其中“SELECT…FROM…"短语是每个查询 语句必须具备的短语。 SELECT查询命令的使用非常灵活,用它可以 构造各种各样的查询。
图4—1给出了本章要用到的表:教师情况 表.DBF、课程情况表.DBF、学生成绩 表.DBF
(5)GROUP BY
例4.8 查询教师情况表中姓名和出生日期的值,将查询 结果按出生日期升序排序,并显示查询结果的前3条记录
SELECT TOP 3姓名,出生日期 FROM 教师情 况表 ORDER BY出生日期
在SELECT短语中,经常要用到一些函数,如表4-2 所示,其中COUNT函数表示统计记录个数,经常 用COUNT(*)形式或COUNT(字段名)形式等。
表4.1以分类的形式给出了SQL语言的命令动词。
Visual FoxPro在SQL语言方面支持数据定义、 数据查询和数据操纵功能, 由于isualFoxPro自身在安全控制方面的缺陷, 它没有提供数据控制功能。
WHERE短语表示查询条件,查询条件是逻辑表达 FROM短语指定查询数据需要的表,可以基于单个 ORDER BY短语后面跟排序选项,对查询的结果进 SELECT短语指定要查询的数据。主要由表中的字 GROUP BY短语后跟分组字段,对查询结果进行分 4.1 数据查询功能 “输出去向”短语给出查询结果的去向。 GROUP BY短语后跟分组字段,常用的统计方式有 式或关系表达式。也可以用WHERE短语实现多表 表或多个表进行查询。表的形式为“数据库名!表名 行排序。用ASC选择升序(默认);用DESC选择降序。 段组成,可以用“数据库名!表名.字段名”的形式 组,可以使用它进行分组统计,HAVING短语通常跟 求和(SUM())、求平均值(AVG())、求最小值(MIN()、 “查询去向’’可以是临时表、永久表、数组、浏 查询。 ",数据库名可以省略。 当排序的值相同时,可用第二个排序选项。 给出,数据库名和表名均可以省略。 GROUP 览等。 BY短语连用,用来限定分组结果中必须满 求最大值(MAX())、统计记录个数COUNT())等。 SQL语言的查询功能由SELECT命令完成, 足的条件。 基本形式为: SELECT [ALL|DISTINCT] [TOP N[PERCENT]] 要查询的数据 FROM数据源1 [联接方式JOIN数据源2] [ON联接条件] [WHERE查询条件] [GROUP BY分组字段 [HAVING分组条件]] [ORDER BY排序选项][ASC|DESC] [,排序选 项2[ASC|DESC]…]] [输出去向]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、数据类型
SQL中域的概念用数据类型来实现 定义表的属性时 需要指明其数据类型及长度 选用哪种数据类型
取值范围ቤተ መጻሕፍቲ ባይዱ 要做哪些运算
二、数据类型
数据类型 CHAR(n) VARCHAR(n) 长度为n的定长字符串 最大长度为n的变长字符串 含义
INT SMALLINT
NUMERIC(p,d) REAL Double Precision FLOAT(n) DATE TIME
模式与表(续)
创建基本表(其他数据库对象也一样)时,若没有指定模
式,系统根据搜索路径来确定该对象所属的模式 RDBMS会使用模式列表中第一个存在的模式作为数据库 对象的模式名 若搜索路径中的模式名都不存在,系统将给出错误
显示当前的搜索路径: SHOW search_path;
搜索路径的当前默认值是:$user, PUBLIC
数据操纵 数据控制 嵌入式SQL
SQL概述
4.1.1 SQL 的产生与发展
4.1.2 SQL语言的基本概念 4.1.3 SQL的组成 4.1.4 SQL的特点
4.1.4 SQL的特点
1.综合统一
集数据定义语言(DDL),数据操纵语言(DML), 数据控制语言(DCL)功能于一体。 可以独立完成数据库生命周期中的全部活动:
定义关系模式,插入数据,建立数据库; 对数据库中的数据进行查询和更新; 数据库重构和维护 数据库安全性、完整性控制等
用户数据库投入运行后,可根据需要随时逐步修改 模式,不影响数据的运行。 数据操作符统一
2.高度非过程化
非关系数据模型的数据操纵语言“面向过程”,
必须制定存取路径
表 4.2 SQL 的数据定义语句 操 作 对 象 模式 表 视 图 索 引 操 作 方 式 创 建 CREATE SCHEMA CREATE TABLE CREATE VIEW CREATE INDEX 删 除 DROP SCHEMA DROP TABLE DROP VIEW DROP INDEX 修 改 ALTER TABLE
模式与表(续)
DBA用户可以设置搜索路径,然后定义基本表
SET search_path TO “S-T”,PUBLIC; Create table Student(......);
结果建立了S-T.Student基本表。
RDBMS发现搜索路径中第一个模式名S-T存在,就把该 模式作为基本表Student所属的模式。
<模式名>隐含为用户名WANG
如果没有指定<模式名>,那么<模式名>隐含为<用户名>
定义模式(续)
定义模式实际上定义了一个命名空间
在这个空间中可以定义该模式包含的数据库对象,例如基本表、
视图、索引等。
在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。 CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[< 表定义子句>|<视图定义子句>|<授权定义子句>]
四、修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <数据类型> [ 完整性约束 ] ] [ DROP <完整性约束名> ]
每一个基本表都属于某一个模式
一个模式包含多个基本表 定义基本表所属模式
方法一:在表名中明显地给出模式名 Create table “S-T”.Student(......); /*模式名为 S-T*/ Create table “S-T”.Cource(......); Create table “S-T”.SC(......); 方法二:在创建模式语句中同时创建表 方法三:设置所属的模式
[例5] 建立“学生”表Student,学号是主码,姓名取值唯一。
CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );
基本表3
基本表4
模式
存储文件1
存储文件2
内模式
SQL语言的基本概念(续)
基本表
本身独立存在的表 SQL中一个关系就对应一个基本表 一个(或多个)基本表对应一个存储文件 一个表可以带若干索引
存储文件
逻辑结构组成了关系数据库的内模式 物理结构是任意的,对用户透明
视图
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ] [,<列名> <数据类型>[ <列级完整性约束条件>] ] …
[,<表级完整性约束条件> ] );
如果完整性约束条件涉及到该表的多个属性列, 则必须定义在表级上,否则既可以定义在列级 也可以定义在表级。
学生表Student
SQL只要提出“做什么”,无须了解存取路径。
存取路径的选择以及SQL的操作过程由系统自动 完成。
3.面向集合的操作方式
非关系数据模型采用面向记录的操作方式,操作对
象是一条记录
SQL采用集合操作方式
操作对象、查找结果可以是元组的集合 一次插入、删除、更新操作的对象可以是元组的集合
4.以同一种语法结构提供多种使用方式
学生选课表:SC(Sno,Cno,Grade)
Student表
学 号 Sno
姓 名 Sname
性 别 Ssex
年 龄 Sage
所在系 Sdept
200215121 200215122 200215123 200515125
李勇 刘晨 王敏 张立
男 女 女 男
20 19 18 19
CS CS MA IS
4.3 数据定义
4.3.1 模式的定义与删除
4.3.2 基本表的定义、删除与修改 4.3.3 索引的建立与删除
一、定义模式(续)
[例1]定义一个学生-课程模式S-T CREATE SCHEMA “S-T” AUTHORIZATION WANG;
为用户WANG定义了一个模式S-T
[例2]CREATE SCHEMA AUTHORIZATION WANG;
长整数(也可以写作INTEGER) 短整数
定点数,由p位数字(不包括符号、小数点)组成,小数后面有d位数字 取决于机器精度的浮点数 取决于机器精度的双精度浮点数 浮点数,精度至少为n位数字 日期,包含年、月、日,格式为YYYY-MM-DD 时间,包含一日的时、分、秒,格式为HH:MM:SS
三、模式与表
第四章 关系数据库标准语言SQL
4.1 SQL概述
4.2 学生-课程数据库
4.3 数据定义
4.4 数据查询
4.5 数据更新
4.6 视图
4.7 小结
4.2 学生-课程 数据库
学生-课程模式 S-T :
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
SQL概述(续)
4.1.1 SQL 的产生与发展
4.1.2 SQL的基本概念 4.1.3 SQL的组成 4.1.4 SQL的特点
SQL标准的进展过程
标准
SQL/86 SQL/89(FIPS 127-1) SQL/92 SQL99 SQL2003
大致页数
120页 622页 1700页
删除模式(续)
[例4] DROP SCHEMA ZHANG CASCADE;
删除模式ZHANG 同时该模式中定义的表TAB1也被删除
4.3 数据定义
4.3.1 模式的定义与删除
4.3.2 基本表的定义、删除与修改 4.3.3 索引的建立与删除
4.3.2 基本表的定义、删除与修改
一、定义基本表
主码
课程表Course
[例6] 建立一个“课程”表Course
CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), 先修课 Cpno CHAR(4) , Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) );
SQL是独立的语言
能够独立地用于联机交互的使用方式 SQL又是嵌入式语言 SQL能够嵌入到高级语言(例如C,C++,Java) 程序中,供程序员设计程序时使用
5.语言简洁,易学易用
SQL功能极强,完成核心功能只用了9个动词。
表 3.1 SQL 语言的动词 SQL 功 能 数 据 查 询 数 据 定 义 数 据 操 纵 数 据 控 制 动 词 SELECT CREATE, DROP, ALTER INSERT,UPDATE DELETE GRANT,REVOKE
定义模式(续)
[例3]
CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20), COL4 NUMERIC(10,3), COL5 DECIMAL(5,2) ); 为用户ZHANG创建了一个模式TEST,并在其中定义了一 个表TAB1。
课程号 Cno
1 2 3 2 3
成绩 Grade
92 85 88 90 80