0
点赞
收藏
分享

微信扫一扫

数据库复习(一)

hwwjian 2022-01-20 阅读 69
数据库

数据库基本概念:

        数据(data):描述事物的符号记录

        数据库(DataBase,DB):数据的集合

        数据库管理系统(DataBase Management System,DBMS):数据管理软件

        数据库系统(DataBase System,DBS):由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护的系统。

数据管理技术的产生和发展:

        人工管理阶段:批处理、无共享、冗余度极大、数据不独立

        文件系统阶段:批处理、联机实时处理、共享性差、冗余度大、数据独立性差

        数据库系统阶段:联机实时处理、分布处理、批处理、共享性高、冗余度小、具有高度的物理独立性和一定的逻辑独立性

数据库系统的三级模式结构:

        模式:也称逻辑模式、所有用户的公共数据视图、与高级程序设计语言无关

        外模式:逻辑结构、模式的子集、与高级程序设计语言有关

        内模式:物理结构

数据库的二级映像:

        外模式/模式映像:逻辑独立性

        模式/内模式映像:物理独立性

关系代数运算:

        基本运算:并、差、笛卡尔积×、选择σ、投影∏

        其它运算:交、连接、除

        笛卡尔积:R与S的笛卡尔积:R的每一个元组与S的每一个元组相连(列数相加,不合并),作为笛卡尔积中的元组。

        连接:

                等值连接:如A=B,笛卡尔积中选取A、B属性值相等的元组

                非等值连接:如A<B,笛卡尔积中选取A属性值<B属性值的元组

                自然连接:R、S中有同名属性组A,笛卡尔积中选取R.A、S.A属性值相等的元组,并把重复属性列去掉,即,将R.A、S.A合并为一列,写为A。

                外连接:类似自然连接,但保留属性值不相等的元组。如R存在元组1的A属性值=3,但S中不存在A属性值=3的元组时,将元组1写入外连接结果,元组中,S对应的列填入NULL。

                左外连接:R左外连接S:仅保留R中未匹配的元组

                右外连接:R右外连接S:仅保留S中未匹配的元组

        除:R÷S=T:T包含所有在R但不在S中的属性及其值,且T与S的所有组合都在R中。步骤:找出R与S的同名属性列,若R中存在元组集满足:除RS同名属性列的其它列属性值均相等,S中的同名属性列的元组在该元组集中都能找到,则其它列属性组成的元组在T中。

SQL的动词:

SQL功能动词
数据查询SELECT
数据定义CREATE、DROP、ALTER
数据操纵INSERT、UPDATE、DELETE
数据控制GRANT、REVOKE

SQL对关系数据库模式的支持:

        外模式:视图

        模式:基本表

        内模式:存储文件

数据定义:

模式:
创建模式:
CREATE SCHEMA 模式名 AUTHORIZATION 用户名 [表定义子句|视图定义子句|授权定义子句];

删除模式:
DROP SCHEMA 模式名 CASCADE(级联)|RESTRICT(限制)

在已存在的模式中添加表:
CREATE TABLE "模式名".表名(...);



表:
创建表:
CREATE TABLE 表名
(
    列名1 类型1 列级完整性约束,
    列名2 类型2 列级完整性约束,
    ...
    表级完整性约束
);

修改表:
ALTER TABLE 表名
    ADD COLUMN 新列名 数据类型 列级完整性约束;
    |DROP COLUMN 列名 CASCADE|RESTRICT;
    |ALTER COLUMN 列名 新数据类型;
    |RENAME COLUMN 列名 TO 新列名;
    |ADD 表级完整性约束;
    |DROP CONSTRAINT 完整性约束名 CASCADE|RESTRICT;

删除表:
DROP TABLE 表名 CASCADE|RESTRICT;



视图:
创建视图:
CREATE VIEW 视图名(列名1, 列名2, ...)
AS
    查询子句
[WITH CHECK OPTION];

删除视图:
DROP VIEW 视图名;



索引:
创建索引:
CREATE [UNIQUE] [CLUSTER] INDEX 索引名
ON 表名(列名1, ASC(升序)|DESC(降序), 列名2, ASC|DESC, ...);

修改索引:
ALTER INDEX 旧索引名 RENAME TO 新索引名;

删除索引:
DROP INDEX 索引名;

数据查询:

基本查询:
SELECT ALL|DISTINCT(删除重复元组) 目标列名1 [显示列名1], 目标列名2 [显示列名2], ...
FROM 表名1|视图名1, 表名2|视图名2 ...
WHERE 条件表达式
GROUP BY 分组依据列名1, 分组依据列名2, ...
    HAVING 组条件表达式
ORDER BY 排序依据列名1 ASC(升序)|DESC(降序), 列名2 ASC|DESC, ...;

连接查询:
...
FROM 表名1|视图名1, 表名2|视图名2 ...
WHERE 表名1.属性名1 = 表名2.属性名2
...

自身连接:
...
FROM 表名 新表名1, 表名 新表名2
WHERE 新表名1.属性名1 = 新表名2.属性名2
...

嵌套查询:
...
WHERE 属性名 IN (查询子句)
...

带有存在量词EXISTS的子查询
...
WHERE [NOT] EXISTS (查询子句)    --查询子句结果非空时,外层WHERE子句返回真,有NOT则返回假
...


集合查询:
查询子句1
UNION(并)|INTERSECT(交)|EXCEPT(差)
查询子句2

基于派生表查询
...
FROM (查询子句) AS 派生表名1(列名1, 列名2, ...)
...

数据操纵:

插入数据:
INSERT INTO 表名(列名1, 列名2, ...)
VALUES(值1, 值2, ...);

修改数据:
UPDATE 表名
SET 属性名 = 表达式
WHERE 条件;

删除数据:
DELETE FROM 表名
WHERE 条件;

数据控制:

授权:
GRANT 权限1(列名1), 权限2(列名2), ...
ON 对象类型1 对象名1, 对象类型2 对象名2, ...        --如:ON TABLE 表名1
TO 用户1, 用户2, ...
[WITH GRANT|ADMIN OPTION];

回收权限:
REVOKE 权限1, 权限2, ...
ON 对象类型1 对象名1, 对象类型2 对象名2, ...
FROM 用户1, 用户2, ... [CASCADE|RESTRICT];



角色创建:
CREATE ROLE 角色名

给角色授权:
...
TO 角色1, 角色2, ...
...

将角色授予其它角色或用户
GRANT 角色1, 角色2, ...
...

角色权限收回
...
FROM 角色1, 角色2, ...

数据类型:

数据类型含义
CHAR(n),CHARACTER(n)长度为n的定长字符串
VARCHAR(n),CHARACTERVARCHAR(n)最大长度为n的变长字符串
CLOB字符串大对象
BLOB二进制大对象
INT,INTEGER长整数(4字节)
SMALLINT短整数(2字节)
BIGINT大整数(8字节)
NUMERIC(p,d)定点数共p位数字,小数点后有d位
DECIMAL(p,d),DEC(p,d)同上
REAL取决于机器精度的单精度浮点数
DOUBLE PRECISION取决于机器精度的双精度浮点数
FLOAT(n)可选精度的浮点数,精度至少为n位数字
BOOLEAN逻辑布尔量
DATE日期,含年月日,格式为YYYY-MM-DD
TIME时间,含时分秒,格式为HH:MM:SS
TIMESTAMP时间戳类型
INTERVAL时间间隔类型

聚集函数:

函数名功能
COUNT计数
TOTAL求和
MAX求最大值
MIN求最小值
AVG求平均值

字符串匹配:

        %代表任意长度(长度可以是0)的字符串

        _代表任意单个字符

        定义转码字符:ESCAPE‘\'

        例:LIKE 'A%B_'可以匹配:‘AB1’,‘A11B1’,LIKE '\_%'可以匹配:'_1','_123'

ANY或ALL谓词语义:

>ANY大于子查询结果中的最小值
>ALL大于子查询结果中的最大值
<ANY小于子查询结果中的最大值
<ALL小于子查询结果中的最小值
>=ANY大于等于子查询结果中的最小值
>=ALL大于等于子查询结果中的最大值
<=ANY小于等于子查询结果中的最大值
<=ALL小于等于子查询结果中的最小值
=ANY等于子查询结果中的某个值
=ALL等于子查询结果中的所有值(通常没有实际意义)
!=(或<>)ANY不等于子查询结果中的某个值(通常没有实际意义)
!=(或<>)ALL不等于子查询结果中的所有值

三值逻辑真值表:

x        yx AND yx OR yNOT x
T        TTTF
T        UUTF
T        FFTF
U        TUTU
U        UUUU
U        FFUU
F        TFTT
F        UFUT
F        FFFT

约束

约束条件:
    NOT NULL                                      非空
    UNIQUE                                        唯一
    PRINMARY KEY                                  主键
    FOREIGN KEY(属性名) REFERENCES 外表名(属性名)  外键
    CHECK                                         自定义约束条件

创建约束条件:
ALTER TABLE 表名
    ADD CONSTRAINT 约束名 CHECK(条件)

删除约束条怀:
ALTER TABLE 表名
    DROP CONSTRAINT 约束名

断言

创建断言:
CREATE ASSERTION 断言名 CHECK子句

删除断言
DROP ASSERTION 断言名

触发器

创建触发器
CREATE TRIGGER 触发器名
BEFORE|AFTER 触发事件 ON 表名
REFERENCING
    OLDROW AS 旧行名
    NEWROW AS 新行名
FOR EACH ROW(行级触发)|STATEMENT(语句级触发)
[WHEN 触发条件] 触发动作体

删除触发器
DROP TRIGGER 触发器名
举报

相关推荐

0 条评论