关系代数

image-20250531153530944

image-20250531153635860

上面是一些传统运算,难度不大,记住就行

image-20250531154419394

上面是一些前置定义

接下来是一些比较难的了

image-20250531154802239

image-20250531155255589

image-20250531155626923

image-20250531160128390

image-20250531160211569

sql

创建模式

在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。

CREATE SCHEMA<模式名>AUTHORIZATION<用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]

删除模式/基本表

DROP SCHEMA<模式名><CASCADE|RESTRICT>

DROP TABLE<表名>[RESTRICT|CASCADE];

  • CASCADE(级联)
    • 删除模式的同时把该模式中所有的数据库对象全部删除
  • RESTRICT(限制)
    • 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。

创建基本表

CREATE TABLE<表名>(

<列名><数据类型>[<列级完整性约束条件>] [,<列名><数据类型>[<列级完整性约束条件>]] [,<表级完整性约束条件>] ); | 数据类型 | 含义 | | -------------------------------- | ------------------------------------------------------------ | | CHAR(n), CHARACTER(n) | 长度为 n 的定长字符串 | | VARCHAR(n), CHARACTER VARYING(n) | 最大长度为 n 的变长字符串 | | CLOB | 字符串大对象 | | BLOB | 二进制大对象 | | INT, INTEGER | 长整数(4 字节) | | SMALLINT | 短整数(2 字节) | | BIGINT | 大整数(8 字节) | | NUMERIC(p, d) | 定点数,由 p 位数字(不包括符号、小数点)组成,小数点后面有 d 位数字 | | DECIMAL(p, d), DEC(p, d) | 同 NUMERIC | | REAL | 取决于机器精度的单精度浮点数 | | DOUBLE PRECISION | 取决于机器精度的双精度浮点数 | | FLOAT(n) | 可选精度的浮点数,精度至少为 n 位数字 | | BOOLEAN | 逻辑布尔量 | | DATE | 日期,包含年、月、日,格式为 YYYY-MM-DD | | TIME | 时间,包含一月的时、分、秒,格式为 HH:MM:SS | | TIMESTAMP | 时间戳类型 | | INTERVAL | 时间间隔类型 | 列级完整性约束 - PRIMARY KEY - NOT NULL - UNIQUE - CHECK( ) 表级完整性约束 - PRIMARY KEY(列名1,.....列名n) - FOREIGN KEY(列名1) REFERENCES 被参照表(列名1) ### 修改基本表 ALTER TABLE<表名> [ADD[COLUMN]<新列名><数据类型>[完整性约束]] [ADD<表级完整性约束>] [DROP[COLUMN]<列名>[CASCADE|RESTRICT]] [DROP CONSTRAINT<完整性约束名>[RESTRICT|CASCADE ]] [ALTER COLUMN<列名><数据类型>]; ### 建立索引 CREATE [UNIQUE] [CLUSTER]INDEX<索引名> ON<表名>(<列名>[<次序>] [,<列名>[<次序>]]); - <次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC - UNIQUE:此索引的每一个索引值只对应唯一的数据记录 - CLUSTER:表示要建立的索引是聚簇索引 ### 删除索引 DROP INDEX<索引名>; ### 修改索引 ALTER INDEX<旧索引名>RENAME TO<新索引名> ### 查询 SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]… FROM<表名或视图名>[,<表名或视图名>]..I(SELECT语句) [AS]<别名> [WHERE<条件表达式>] [GROUP BY<列名1>[HAVING<条件表达式>]] [ORDER BY<列名2>[ASC|DESC]]; - SELECT子句:指定要显示的属性列 - FROM子句:指定查询对象(基本表或视图) - WHERE子句:指定查询条件 - GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。 - HAVING短语:只有满足指定条件的组才予以输出 - ORDER BY子句:对查询结果表按指定列值的升序或降序排序 - 指定DISTINCT关键词,去掉表中重复的行。如果没有指定DISTINCT关键词,则缺省为ALL 聚集函数: - 统计元组个数 - COUNT(*) - 统计一列中值的个数 - COUNT([DISTINCTIALL]<列名>) - 计算一列值的总和(此列必须为数值型) - SUM([DISTINCTIALL]<列名>) - 计算一列值的平均值(此列必须为数值型) - AVG([DISTINCTIALL]<列名>) - 求一列中的最大值和最小值 - MAX([DISTINCTIALL]<列名>) - MIN([DISTINCTIALL]<列名>) 连接条件或连接谓词:用来连接两个表的条件 - 一般格式: - [<表名1>.]<列名1><比较运算符>[<表名2>.]<列名2> - [<表名1>.]<列名1>BETWEEN[<表名2>.]<列名2> AND[<表名2>.]<列名3> ### 集合操作 - 并操作 UNION - 交操作 INTERSECT - 差操作 EXCEPT ### 数据更新 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]; ### 视图增删改查 同基本表,且对视图的修改会被数据库管理系统自动转化成基本表的修改 ### 授权与收权 GRANT<权限>[,<权限>].. ON<对象类型><对象名>[,<对象类型><对象名>.… TO<用户>[,<用户>].. [WITH GRANT OPTION]; REVOKE<权限>[,<权限>].…. ON<对象类型><对象名>[,<对象类型><对象名>].. FROM<用户>[,<用户>]...[CASCADE |RESTRICT]; 详细例子可见作业8 ### 用户创建 CREATE USER <用户名> [WITH] [DBA|RESOURCE|CONNECT]; ### 角色创建 CREATE ROLE<角色名> ### 自身连接 ![image-20250612221638998](https://huatiancen.oss-cn-nanjing.aliyuncs.com/img/image-20250612221638998.png) ## 范式 范式BCNF之后的不做要求 哪一级别 如何处理从而提升 - 1NF - 如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF - 2NF - 若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则R∈2NF image-20250611213529023 - 3NF - 设关系模式R<U,F>∈2NF,若R中不存在这样的码X、属性组Y及非主属性Z(Z≠Y),使得X→Y,Y→Z成立,Y→X不成立,则称R<U,F>∈3NF。 (就是没有传递依赖) image-20250611213738318 - BCNF - 设关系模式R<U,F>∈3NF,若X→Y且Y⊈X时X必含有码,则R<U,F>∈BCNF。 - 换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。 ## E-R图 逻辑结构设计转换 image-20250611231302090 image-20250611231427538 image-20250611231447925 image-20250611231519811 image-20250611231541369