关系数据库标准语言SQL

合集下载

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

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

关系数据库标准语言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语言的数据定义、数据查询、数据更新 功能

第5章 SQL语言

第5章 SQL语言
SELECT 职工号,城市 FROM 职工,仓库 ; WHERE (工资>2230) AND(职工.仓库号=仓库.仓库号) • 仓库关系和职工关系之间存在一个一对多的联系。
例 5.7 找出工作在面积大于 1400 的仓库的职工号 以及这些职工所在的城市
SELECT 职工号,城市 FROM 职工,仓库 ; WHERE (面积>1400) AND(职工.仓库号=仓库.仓库号)
若使用SELECT SUM(DISTINCT工资) FROM 职工
举例
例5.15 求北京和上海的仓库职工的工资总和
SELECT SUM(工资) FROM 职工 WHERE 仓库号 IN ; (SELECT 仓库号 FFROM 仓库 WHERE 城市=”北京” OR; 城市=”上海”)
例5.16 求所有职工的 工资都多于2210元的仓库的平均 面积
[UNION …] [ORDER BY …]
• SELECT说明要查询的数据 • FROM说明要查询的数据来自哪个或哪些表, 可以对单个表或多个表进行查询; • WHERE说明查询条件,即选择元组的条件; • GROUP BY短语用于对查询结果进行分组, 可以利用它进行分组汇总; • HAVING短语必须跟随GROUP BY 短语使 用,它用来限定分组必须满足的条件; • ORDER BY 用来对查询的结果进行排序。
“武汉”的“SH4”仓库还没有职工,但该仓库的信息 也被检索出来了。
举例
• 排除那些还没有职工的仓库,检索要求描述 为: 查询所有的职工工资都多于 2210元的 仓库的信息,并且该仓库至少要有一名职工.
SELECT * FROM 仓库 WHERE 仓库号 NOT IN ; (SELECT 仓库号 FROM 职工 WHERE 工资<=2210) ; AND仓库号IN (SELECT 仓库号 FROM 职工)

关系数据库标准语言SQ

关系数据库标准语言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章 关系数据库标准语言——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的定义(表框架)连同它 的所有元组、索引以及由它导出的所有视图全部删除,并释放相 应的存储空间。

sql 课件 第3章 关系数据库标准语言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数据库由包含数据的表集合和其他对象( 如视图、索引、存储过程、触发器、用户、角色等)组 成,支持三级模式结构。其中用户模式对应于视图,逻 辑模式对应于基本表,物理模式对应于存储文件、索引 等。

第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 , ,

第3章 关系数据库标准语言SQL_第4版(1-3)

第3章 关系数据库标准语言SQL_第4版(1-3)
1 6 7 6
学分 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

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

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

第6章 关系数据库标准语言SQL
参数说明: ◆ JOIN的顺序和ON的顺序很重要。相应的连接条件一定要按相反的顺序给
出ON的顺序。 left join 左连接 / right join 右连接
例 从“学生档案表”、“学生成绩表”、“课程代码表”中, 查询99212班成绩>=80分各门课程,要求显示学号,姓 名,课程名称,成绩。 Select A.学号,A.姓名,B.课程名称,C.成绩 ; From 学生档案表 A,课程代码表 B,; 学生成绩表 C Where A.学号=C.学号 .And.; B.课程代码=C.课程代码 .And. ; 班级="99212" .And. C.成绩>=80
6-1 SQL概述
1、SQL是结构化查询语言(Structured Query Language的
缩写) 2、特点:
是一种一体化语言 是一种高度非过程化语言 非常简洁 可以以命令方式交互使用(也可以作为程序代码)
3、SQL的功能:
数据查询 数据定义 数据操纵 数据控制(此功能VFP没有)
◆ WHERE<连接条件>子句的作用是将若干个数据表,通过两两 数据表(按公共字段的值相等)的连接,产生一个包含若干个 数据表有关字段的数据信息。<连接条件>是指两数据表用公共 字段进行关联的连接条件。注意:<连接条件>中字段名前必须 冠以数据表别名,两者之间用英文状态下的“.”或“->”隔开。 如果有两个以上数据表打开,则必须用AND将多个<连接条件> 进行连接;还可以加过滤条件对参与操作的记录进行选择。< 连接条件>和<过滤条件>之间必须用AND连接。 ◆ 不论是<过滤条件>,还是<连接条件>中的有关字段也都注明工 作区号或别名,尤其是公共字段。

关系数据库标准语言

关系数据库标准语言


例:查询考试成绩有不及格的学生的学号。
SELECT DISTINCT 学号 FROM 选课 WHERE 成绩<60; 这里使用了DISTINCT短语,当一个学生有多门课程不及格,他 的学号也只列一次。



(2)确定范围
谓词BETWEEN…AND…和NOT BETWEEN…AND…可以用来查找属 性值在(或不在)指定范围内的元组,其中BETWEEN后是范围 的下限,AND后是范围的上限。 例:查询所有年龄在20岁到23岁之间的学生姓名、系别及其 年龄。


学号 95001
95001
95001
学号
95001 95002
95002
95002 95002
看书上的例子
2、查询满足条件的元组——条件查询
通过WHERE子句来实现, WHERE子句常用的查询条件有: 比较、确定范围、确定集合、字符匹配、空值与多重条件, 其谓词如书上P16所列。

(1)综合统一
SQL语言集DDL、DML、DCL的于一体,包括定义关系模式、录 入数据、建立数据库、查询、更新、维护、数据库重构、数据库安全性 控制等一系列功能。


(2)高度非过程化 用户无需了解存取路径,用户只需提出“做什么”,而不 必指明“怎么做”。存取路径的选择以及SQL语句的操作过 程由系统自动完成。 (3) SQL语言是一种面向集合的语言,每个命令的操作对 象是一个或多个关系,结果也是一个关系。 (4)以统一的语法结构提供两种使用方式——自含式和嵌 入式 自含式语言可以独立使用交互命令,适用于终端用户、 应用程序员和DBA; 嵌入式语言使其嵌入在高级语言中使用,供应用程序员 开发应用程序。

数据库系统概论:第4章 关系数据库标准语言——SQL语言1

数据库系统概论:第4章 关系数据库标准语言——SQL语言1
26
4)删除完整性约束
例:删除“Height”属性列上的CHECK约束。 ALTER TABLE Student DROP
CONSTRAINT Chk1;
27
5)删除属性列
例:删除Student表中新增加的“Height”属性列。 ALTER TABLE Student DROP COLUMN Height;
2
2、SQL语言应用情况
(1) Oracle、Sybase、Informix、Ingres、 DB2、SQL Server、Rdb等大型数据库管理系统 实现了SQL语言; (2) Dbase、Foxpro、Acess等PC机数据库管理 系统部分实现了SQL语言; (3)可以在HTML(Hypertext Markup Language, 超文本标记语言)中嵌入SQL语句,通过WWW访 问数据库; (4)在VC、VB、Delphi、PB也可嵌入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)
25
3)增加完整性约束
例:给Student表中“Height”属性列增加一 个CHECK约束,要求学生的身高要超过140厘 米才行。 ALTER TABLE Student ADD CONSTRAINT Chk1 CHECK(Height>140);

关系数据库语言SQL(ch)

关系数据库语言SQL(ch)
RIGHT JOIN(RIGHT OUTER JOIN):返回右表 中的所有行,以及左表中满足连接条件的行。如果 左表中没有匹配的行,则返回NULL。
LEFT JOIN(LEFT OUTER JOIN):返回左表中的 所有行,以及右表中满足连接条件的行。如果右表 中没有匹配的行,则返回NULL。
FULL JOIN(FULL OUTER JOIN):返回两个表中 的所有行,无论是否满足连接条件。如果某个表中 没有匹配的行,则返回NULL。
删除自定义函数
使用`DROP FUNCTION`语句删除不再需要的自定义函数。
视图创建及使用场景
01
02
03
04
创建视图
使用`CREATE VIEW`语 句定义视图名称、列名 和查询语句,将复杂的 SQL查询封装为可重用的 视图。
使用视图
在SQL查询中,通过视图 名称引用视图,简化查 询语句的编写。
修改表名
使用`ALTER TABLE`语句修改表 的名称。
删除数据库和表
删除数据库
使用`DROP DATABASE`语句删除现有的数据库 ,需要指定数据库名称。
删除索引
使用`DROP INDEX`语句删除现有的索引,需要 指定索引名。
删除表
使用`DROP TABLE`语句删除现有的表,需要指定 表名。
关系数据库语言sql(ch)
目录
• SQL语言概述 • 数据定义语言(DDL) • 数据操纵语言(DML) • 数据查询语言(DQL) • 数据控制语言(DCL) • 存储过程与触发器 • 函数与视图 • SQL优化与性能提升
01 SQL语言概述
SQL语言定义
1
SQL(Structured Query Language,结构化查 询语言)是用于管理关系数据库的标准编程语言。

第03章-关系数据库标准语言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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关系数据库标准语言SQL1.1SQL概述1.11 SQL的标准化历程SQL是1974年提出的;IBM公司首先实现了关系数据库管理系统;1987年SQL被作为国际标准。

1.12 SQL的功能特点SQL集数据查询,数据操作,数据定义和数据控制功能于一体。

具有以下特点:综合统一:非关系模型的数据语言一般都分为模式数据定义语言,外模式数据定义语言,与数据存储有关的描述语言以及数据操作语言,分别用于定义模式,外模式,内模式和进行数据的存取和处理。

而SQL则集数据定义语言,数据操作语言,数据控制语言的红能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动。

高度非过程化:非关系数据模型的数据操作语言是面向过程的语言,使用这样的语言进行数据操作,必须制定存取路径。

而SQL进行数据操作,用户只需提出“做什么”,而不用指明“怎么做”,因此用户无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。

面向集合的操作方式:非关系模具模型采用的是面向标记的操作方式,操作的对象都是一条记录。

而SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入,删除,更新操作的对象也可是是元组的集合。

灵活的使用方式:SQL既是自含式语言,又是嵌入式语言。

作为自含式语言,他能够独立的用联机交互的使用方式,用户可以在键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言程序中,供程序员设计程序时使用。

语言简易,易学易用,功能强:SQL功能极强,具有完备的表达能力。

但由于设计巧妙,语言十分简洁,完成数据定义,数据操作,数据控制的核心功能只用了9个动词。

1.13 SQL的基本组成(1)SQL数据库的三级模式结构SQL支持数据库三级模式结构,在SQL中,外模式对应于“视图(View)”和部分基本表,模式对应于基本表“Base Table”,内模式对应于“存储文件”。

一个SQL数据库模式是基本表的集合。

一个关系对应于一个SQL表,行对应于元组,列对应于属性。

一个表可以有若干索引,索引也存放在存储文件中。

存储文件的逻辑结构组成了SQL数据库的内模式,存储文件的物理结构对用户是透明的,由操作系统管理。

一个SQL表可以是一个基本表,也可以是一个视图。

基本表是实际存储在数据库中的表;视图是从一个或几个基本表或其它视图导出的表。

数据库并不存放视图对应的数据,而只存放视图的定义,因此视图是一个虚表。

一个基本表可以跨一个或多个存储文件存放,一个存储文件可一个或多个基本表。

每个存储文件与外部存储器上的一个物理文件对应。

SQL用户可以是应用程序,也可以是终端用户。

SQL环境是SQL数据存在和SQL语句执行的语境。

(2)SQL的组成SQL由以下部分组成数据定义语言DDL:用来创建数据库的各种对象,例如数据库模式,表,视图和索引等。

数据操作语言DML:用来查询和修改SQL数据库中的数据。

数据控制语言DCL:用来授予或收回访问数据库的某种特权,控制数据操作事物的发生时间及效果,对数据库进行监视等。

嵌入式和动态SQL规则:嵌入式和动态SQL用于某种通用的高级程序设计语言中,以便适应较为复杂的应用。

SQL调用和会话规则:SQL调用包括SQL例程和调用规则,以便提高SQL 的灵活性,有效性,共享性,使SQL具有更多的高级语言的特性。

(3)SQL语句的类型根据SQL的组成及其功能,SQL语句可以分为以下类型:SQL定义语句:用来创建,修改,删除数据库模式及其对象。

SQL数据语句:用来完成数据库的查询,插入,删除,更新操作。

SELETE,INSERT,DELETE,UPDATE。

SQL事物的控制语句:用来完成数据库授权,事物管理以及控制SQL数据集的运行。

GRANT,REVOKE,START TRANSACTION,COMMIT,ROBACK,SA VEPOINT SQL连接,会话和诊断语句:用来创建数据库连接,为SQL会话设置参数,获取诊断等。

SET CONNECTION,SET ZONE,SET SESSION AUTHORIZATION1.14 SQL 的数据类型SQL的数据类型可分为如下三类:预定义数据类型构造数据类型用户定义数据类型预定义数据类型又可分为数值型,字符串型,位串型,时间型和布尔型。

而构造数据类型是由特定的保留字和预定义数据类型构造而成,如用“REF”定义的引用类型,用“ROW”定义的行类型,用“ARRAY”定义的聚合数据类型等。

用户定义数据类型是一个对象类型,它由用户按照一定的规则用预定义数据类型组合定义的用户自己专用的数据类型。

1.2 SQL的数据定义SQL的数据定义功能主要包括对SQL模式,基本表,视图,索引的定义和删除以及对基本表的修改和对域的定义等。

模式CREATE SCHEMA DROP SCHEMA基本表CREATE TABLE DROP TABLE ALTER TABLE 视图CREATE VIEW DROP VIEW索引CREATE INDEX DROP INDEX域CREATE DOMAIN DROP DOMAIN1.21 SQL的模式SQL模式是其所属模式对象的集合,SQL模式对象包括表,视图,域,约束,特权,字符集,排序,翻译,用户定义类型,例程及序列等。

(1)定义SQL模式SQL模式由模式名和模式拥有者的用户名或帐号确定。

定义了一个SQL模式,就是定义了一个存储空间,在该空间中存储的数据库对象全体构成该模式对应的SQL数据库。

CREA TE SCHEMA <模式名> AUTHORIZATION <用户名>[<CREATE DOMAIN 字句>|<CREATE TABLE 字句>|<CREATE VIEW 字句>|……](2) 删除SQL模式DROP SCHEMA <模式名> {CASCADE|RESTRICT};当用DROP SCHEMA 语句删除数据库模式时,可以选用以下的两种方式:选用CASCADE(级联方式),则删除数据库模式时,该数据库模式连同其下属的模式对象全部被删除。

选用RESTRICT(约束方式),则删除数据库模式时,该数据库模式下属的模式对象预先已全部删除,才能执行对该数据库模式的删除,否则拒绝删除。

1.22 SQL基本表(1)创建基本表CREATE TABLE [模式名。

] <表名> (<列名><数据类型> [列完整性约束][,<列名><数据类型>[列完整性约束]]…….[,<表级完整性约束>])[其他参数];Primary key ()Foreign key () references ()(2)扩充和修改基本表ALTER TABLE <表名>[ADD <列名><数据类型>[<完整性约束>]][ADD <完整性约束>][DROP<列名>{CASCADE|RESTRICT}][DROP<完整性约束>][MODIFY <列名><数据类型>];(3)删除基本表DROP TABLE<表名>[CASCADE|RESTRICT]1.23 SQL的索引(1)创建索引CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名> (<列名>[<顺序>[,<列名>[<顺序>]]….])每个列名后面还可以用顺序指定索引值的排列顺序,包括ASC(升序),DESC (降序)两种,默认是升序。

UNIQUE表示此索引的每一个索引值只对应唯一的数据CLUSTER表示要建立的索引是聚簇索引聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。

(强制)例如:CREATE CLUSTER INDEX name_index ON course (cname) 则COUNT 表中的记录将按照cname值的升序存放。

一个表只能有一个聚簇索引。

(2)删除索引DROP INDEX [ON <表名>]<索引名>;删除索引时,系统会同时从数据字典中删去有关该索引的描述。

1.24 SQL的域SQL的域是一种特殊的数据类型,用于建立用户自定义的数据类型,它由带有域约束的数据类型的默认值一起构成。

定义域个格式为:CREATE DOMAIN <域名> [AS] <数据类型> [DEFAULT<默认值>][CHECK<约束条件>];如:CREATE DOMAIN item_id CHAR(6) DEFAULT 0 CHECK (V ALUE IS NOT NULL);删除索引的格式为:DROP DOMAIN <域名>1.3 SQL的数据查询SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]…FROM <基本表名或视图名>[,<基本表名或视图名>]…[WHERE<条件表达式>][GROUP BY<列名1>[HA VING<条件表达式>]][ORDER BY <列名2>[ASC|DESC]]1.31 简单查询查询表中的若干列SELECT * FROM student;查询经过计算的值SELECT sname,2008-age FROM sc;消除取值重复的行SELECT DISTINCT s# FROM sc;条件查询使用WHERE字句实现条件查询比较=,>,<,>=,<=,!=,!>,!<,确定范围BETWEEN AND; NOT BETWEEN AND确定集合IN,NOT IN字符匹配LIKE NOT LIKE空值IS NULL IS NOT NULL多重条件AND ; OR使用BETWEEN 的查询SELECT sname,age FROM studentWHERE age BETWEEN 20 AND 22使用LIKE的查询SELECT * FROM studentWHERE sname LIKE ‘刘%’_ 表示一个字符% 表示任意个字符涉及空值NULL的查询SELECT sname,s# FROM sc WHERE grade IS NULL;对查询结果排序SELECT * FROM student ORDER BY dept,age DESC;按照dept升序排列,dept相同时按照age降序排列使用聚集函数使用在select后面SQL 提供的聚集函数主要有:COUNT ([DISINCT|ALL]*) 统计元组个数COUNT ([DISINCT|ALL]<列名>) 统计一列值的个数SUM ([DISINCT|ALL]<列名>) 计算一列值的总和A VG ([DISINCT|ALL]<列名>) 计算一列值的平均值MAX ([DISINCT|ALL]<列名>) 求一列值中的最大值MIN ([DISINCT|ALL]<列名>) 求一列值中的最小值SELECT COUNT (*) FROM student对查询结果分组GROUP BY子句将查询结果表按某一列或多列值分组,值相等的为一组SELECT * FROM scGROUP BY s# HA VING COUNT (*) >2WHERE子句与HA VING短语的区别在于作用对象不同,WHERE子句作用于基本表或视图,HA VING短语作用于组1.32 连接查询若查询通过连接从多个表中取得数据,则称之为连接查询。

相关文档
最新文档