导图社区 第三章关系数据库标准语言SQL
SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
编辑于2022-03-28 15:08:49MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
这是一篇关于数据库原理的思维导图,本篇思维导图包含关系数据结构及形式化定义、关系操作、关系的完整性、关系代数。
数据库管理并发控制,分六个板块,概述、封锁、封锁协议、死锁和活锁、并发调度的可串行性、两段锁协议
社区模板帮助中心,点此进入>>
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
这是一篇关于数据库原理的思维导图,本篇思维导图包含关系数据结构及形式化定义、关系操作、关系的完整性、关系代数。
数据库管理并发控制,分六个板块,概述、封锁、封锁协议、死锁和活锁、并发调度的可串行性、两段锁协议
关系数据库标准语言SQL
SQL概述
发展
主要特点
基本概念
视图
从一个或多个基本表导出。视图上可以再定义视图
基本表
一个表带若干索引
一个(或多个)基本表对应一个存储文件
SQL中一个关系对应一个基本表
本身独立存在的表
存储文件
逻辑结构组成了关系数据库的内模式
物理结构对用户是隐蔽的
主要功能
数据定义
CREATE, DROP, ALTER
数据查询
SELECT
数据操纵
INSERT, UPDATE, DELETE
数据控制
GRANT, REVOKE
数据定义
模式的定义和删除
定义
create schema <模式名> authorization <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]
删除
drop schema <模式名><cascade|restrict>
cascade级联:删除模式的同时把该模式中所有数据库对象全部删除
restrict限制:如有定义对象,不执行;反之
基本表定义、删除和修改
定义
create table <表名> (<列名><数据类型>[<列级完整约束条件>]), (.......);
修改
alter table<表名>
删除
drop table<表名>[restrict|cascade]
索引建立和删除
特点
普通索引
唯一(UNIQUE)索引和非唯一索引
表中有被设置为UNIQUE的字段时,SQL SERVER自建立一个非聚集的唯一性索引 表中有PRIMARY KEY的字段时,SQL SERVER会在该字段建立一个聚集索引
聚集索引(CLUSTERED)与非聚集索引
复合索引和单一索引
建立
create [unique][cluster] index <索引名> on <表名>(<列名>[<次序>]...)
修改
alter index <旧索引名> rename to <新索引名>
删除
drop index <索引名>
数据字典
关系数据库管理系统内部的一组系统表,记录数据库中所有定义信息
在执行定义语句时,实际上在给数据字典表中更新信息
数据查询
查询格式
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] … FROM <表名或视图名>[,<表名或视图名> ]…|(SELECT 语句) [AS]<别名> [ WHERE <条件表达式> ] [ GROUP BY <列名1> [ HAVING <条件表达式> ] ] [ ORDER BY <列名2> [ ASC|DESC ] ];
单表查询
仅查询一个表
分类
选择表中的若干列
选择表中的若干元组
ORDER BY子句
聚集函数
GROUP BY子句
连接查询
同时涉及两个以上的表的查询
[<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3>
分类
等值与非等值连接查询
自身连接
外连接
多表连接
嵌套查询
一个SELECT-FROM-WHERE语句称为一个查询块
将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询
SELECT Sname /*外层查询/父查询*/ FROM Student WHERE Sno IN ( SELECT Sno /*内层查询/子查询*/ FROM SC WHERE Cno= ' 2 ');
求解方法
不相关子查询
相关子查询
分类
带有IN谓词的子查询
带有比较运算符的子查询
带有ANY(SOME)或ALL谓词的子查询
带有EXISTS谓词的子查询
集合查询
种类
并操作UNION
交操作INTERSECT
差操作EXCEPT
参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同
基于派生表的查询
子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表(Derived Table)成为主查询的查询对象
Select语句的一般形式
数据更新
插入
插入单个元组
INSERT INTO <表名> [(<属性列1>[,<属性列2 >…)] VALUES (<常量1> [,<常量2>]… );
插入子查询结果
INSERT INTO <表名> [(<属性列1> [,<属性列2>… )]
修改
修改某一元组的值
修改多个元组的值
带子查询的修改语句
UPDATE <表名> SET <列名>=<表达式>[,<列名>=<表达式>]… [WHERE <条件>];
删除
删除某一元组的值
删除多个元组的值
带子查询的删除语句
DELETE FROM <表名> [WHERE <条件>];
视图
概述
建立视图
CREATE VIEW <视图名> [(<列名> [,<列名>]…)] AS <子查询> [WITH CHECK OPTION];
删除视图
DROP VIEW <视图名>[CASCADE];
查询视图
更新视图
作用
视图能够简化用户的操作
视图使用户能以多种角度看待同一数据
视图对重构数据库提供了一定程度的逻辑独立性
视图能够对机密数据提供安全保护
适当的利用视图可以更清晰的表达查询
优点
利于数据保密
简化查询操作
保证数据的逻辑独立性
空值的处理
产生
空值是一个很特殊的值,含有不确定性。对关系运算带来特殊的问题,需要做特殊的处理。
判断
判断一个属性的值是否为空值,用IS NULL或IS NOT NULL来表示。
约束条件
属性定义(或者域定义)中
有NOT NULL约束条件的不能取空值
加了UNIQUE限制的属性不能取空值
码属性不能取空值
关系
空值与另一个值(包括另一个空值)的算术运算的结果为空值
空值与另一个值(包括另一个空值)的比较运算的结果为UNKNOWN。
有UNKNOWN后,传统二值(TRUE,FALSE)逻辑就扩展成了三值逻辑