关系数据库标准语言SQL111
2024-04-23 13:01:20 3 举报
AI智能生成
123456789
作者其他创作
大纲/内容
SQL概述
SQL的产生与发展
SQL是在1974年由Boyce和Chamberlin提出的
SQL是一种非过程化语言用户只要说明需要的数据库内容,不必说明存取所需数据的具体过程和操作
SQL标准从公布以来随数据库技术的发展而不断发展
SQL的特点
功能综合且风格统一
数据库系统的主要功能是通过数据库支持的数据语言来实现的
数据操作高度非数据化
层次模型和网状模型的数据操纵语言事故面向过程的语言,用过程化语言完成某项请求必须指定存取路径
面对集合的操作方式
层次模型和网状模型采用的是面向记录的操作方式,操作对象是一条记录
以统一的语法结构提供多种使用方式
SQL既是独立的语言,又是嵌入式语言
语言简洁且易学易用
SQL接近英语口语,因此易于学习和使用
SQL的基本概念
SQL同样支持数据库系统的三级模式结构。其中外模式是用户能够看见和使用的数据结构,对应视图和部分基本表,模式对应基本表,内模式对应存储文件。用户可以用SQL对基本表和视图进行查询和其他操作。存储文件的逻辑结构和物理结构组成了关系数据库的内模式。
数据定义
模式的定义与删除
定义模式
CREATE SCHEMA{<模式名》} AUTHORIZATION<用户名》;
删除模式
DROP SCHEMA<模式名》<CASCADE RESTRICT>;
基本表的定义,删除与修改
定义基本表
CREATE TABLE<列名》《数据类型》【列级完整性约束】
参照物和被参照物可以是同一个表
数据类型
CHAR,CHARACTER,VARCHAR,CLOB,BLOB,INT,INTEGER,SMALLINT,BIGINT,NUMERIC,DECIMAL,DEC,REAL,BOUBLE PRECISIN,FLOAT,BOOLEAN,DAYE,TIME,TIMESTAMP,INTERVAL
一个属性选用哪种数据类型要根据实际情况来决定。
模式与表
每一个基本表都属于某一个模式,一个模式包含很多个基本表。当定义基本表时一般可以有三种方法定义他所属的模式。
修改基本表
随着应用环境和应用需求的变化,有时需要修改已建好的基本表。
删除基本表
当某个基本表不再使用时,可以使用DROP TABLE语句将其删除。
索引的建立与删除
建立索引
CRATE[UNIQUE][CLUSTER]INDEX<索引名>
修改索引
ALTER INDEX<旧索引名>RENAME TO<新索引名>;
删除索引
DROP INDEX<索引名>;
数据字典
数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有的定义信息,包括关系模式定义,视图定义,索引定义,完整性约束定义,各类用户对数据库操作权限,统计信息等。
数据查询
单表查询
指仅涉及一个表的查询
选择表中的若干列
选择表中的全部或部分列为关系代数的投影运算。
查询指定列:查全体没有筛选跳进时不写WHERE
查询全部列:可将列表达式用*代替
查询经过计算的值:SELECT子句的表达式可以是算数表达式,字符串常量,函数
列别名接双引号,其他均为单引号
选择表中的若干元组
消除取值重复的行
查询满足条件的元组
涉及空值的查询IS不能用等号代替
多重条件查询AND优先级高于OR,可用括号改变优先级
ORDER BY 子句
可以按一个或多个属性排序升序ASC降序DESC缺省值为升序
聚集函数
COUNT(*)统计元组个数
SUM求和,AVG求平均值,MAX最大值,MIN最小值
GROUP BY子句
按某列或多列值分组
LIMIT子句
LIMIT<行数1>[OFFSET<行数2>]
连接查询
等值与非等值连接查询
连接查询WHERE子句中用来连接两个表的条件称为连接条件或链接谓词
自然连接查询
把结果表目标列中重复的属性去掉的等值连接查询则为自然连接查询
复合条件连接查询
使用一条SQL语句可以同时完成选择和连接查询,这时WHERE子句是由连接谓词和选择谓词组成的复合条件
自身连接查询
连接操作不仅可以在两个表之间进行,也可以是一个表与其自身进行连接,此时的连接查询称为表的自身连接查询
外连接查询
普通连接操作只输出满足连接条件的元组
外连接操作以指定表为连接主体,将主体表不满足连接条件的元组一并输出
多表连接查询
连接查询除了可以是两表连接查询,一个表与其自身连接查询外,还可以是两个以上的表进行过连接查询,后者通常称为多表连接查询
嵌套查询
带有IN谓词的子查询
IN是嵌套查询中最经常使用的谓词
带有比较算符的子查询
子查询的查询条件不依赖于父查询,这类子查询称为不相关子查询
如果子查询的查询条件依赖于父查询,这类子查询称为相关子查询,整个查询语句称为相关嵌套查询
带有ZNY或ALL谓词的子查询
子查询返回单值时可以用比较运算符,但返回多值时要用ANY或ALL谓词修饰符
带有EXIXTS谓词的子查询
带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值true或逻辑假值false
集合查询
SELECT语句的查询结果是元组的集合,所以对多个SELECT语句的结果可进行集合操作。集合操作主要包括并操作UNION,交操作INTERSECT和差操作EXCEPT
基于派生表的查询
子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表成为主查询的查询对象
如果子查询中没有聚集函数,派生表可以不知道属性列,子查询SELECT子句后面的列为缺省属性
数据更新
插入数据
插入一个元组
语法
INSERT INTO<表名>[,<属性列1>[,属性列2>[...)]
插入子查询结果
INSERT INTO<表名>[,<属性列1>[,属性列2>[...)]
修改数据
修改某一个元组的值
UPDATE<表名> SET<列名>=<表达式>{,<列名>=<表达式》】...
如果忽略WHERE子句,表示要修改表中的所有元组
SET语句给出<表达式>的值用于取代相应的属性列
修改多个元组的值
带子查询的修改语句
删除数据
删除某一个元组的值’
DELETE FROM<表名>[WHERE<条件>];
删除多个元组的值
删除指定表中满足WHERE子句条件的元组
WHERE子句指定要删除的元组
带子查询的删除语句
空值的处理
空值的产生
所谓空值就是不知道,不存在或无意义的值
外连接
空值的关系运算
空值的情况
该属性应有一个值,但目前不知道具体值
该属性不应有值
由于某种原因不便于填写
空值的判断
判断一个属性的值是否为空值,用ISNULL 或 IS NOT NULL来表示
空值约束
在创建基本表时,如果属性定义为NOT NULL约束,则该属性不能取空值
主码的属性不能填空值
码属性不能取空值
空值的算数运算,比较运算和逻辑运算
空值与另一个值的算术运算的结果为空值
空值与另一个值的比较运算的结果为UNKNOWN
视图
定义视图
建立视图
SQL语言用CREATE VVIEW 命令建立视图
CREATE VIEW<视图名>[(,列名>[,<列名>]...)]
删除视图
DROP VIEW<视图名>[CASCADE];
视图删除后视图的定义将从数据字典中删除
查询视图
视图定义后,用户就可以像对基本表一样对视图查询了
关系数据库管理系统执行对视图的查询时,首先进行有效性检查,检查查询中涉及的表,视图等是否存在
进行有效性检查
转化成等价的对基本表的查询
执行修正后的查询
更新视图
是指通过视图来插入删除和修改数据
由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新
行列子集视图是可更新的
视图的作用
视图能够对机密数据提供安全保护
有了视图机制,就可以在设计数据库应用系统时对不同的用户定义不同的视图,使机密数据不出现在不应看到这些数据的用户视图上
视图对重构数据库提供了一定程度的逻辑独立性
数据的逻辑独立性是指当数据库重构时,如增加新的关系或对原有关系增加新的字段等,用户的应用程序不会受到影响
视图能够简化用户的操作
s视图机制使用户可以将注意力集中在所关心的数据上
视图使用户能以多种角度看待同一数据
收藏
0 条评论
下一页