0.前言
最近开始复习数据库,因为保送武大的研究生要笔试数据库和英语听力。遂将读书所得记于此以备忘,希望自己能坚持这个习惯。 参考书:《数据库原理与技术》 尹为民,金银秋主编,武汉大学出版社。
1. 关于SQL
结构化查询语言SQL(Structured Query Language)是基于关系代数与关系演算的语言,是通用的、功能极强的,高度非过程化的关系数据库语言。其数据定义、查询、操纵、控制的核心功能只用了九个动词:
SQL功能 | 核心动词 |
数据查询 | SELECT |
数据定义 | CREATE ALTER DROP |
数据操控 | INSERT UPDATE DELETE |
数据控制 | GRANT REVOKE |
2. SQL的数据定义
2.1 SQL模式的定义域撤销
1.SQL模式(SCHEMA)
一个SQL模式是所属基本表、视图等的集合。SQL模式由模式名和模式拥有者的用户名或账号来确定,并包含模式中的每一个元素(表、视图、索引等)的定义。定义了一个SQL模式就是定义了一个存储空间。
2.SQL模式的定义
CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<CREATE DOMAIN 子句>|<CREATE TABLE子句>|<CREATE VIEW子句>|……]
3.SQL模式的删除
DROP SCHEMA <模式名>{CASCADE|RESTRICT}
2.2 表(TABLE)的建立和删除
1.表的建立
CREATE TABLE [模式名.]<表名> (<列名><数据类型>[列级完整性约束]
[,<列名><数据类型>[列级完整性约束]……]
[,<表级完整性约束>]
)
附:
- 列级完整性约束
- NOT NULL
- DEFAULT <默认值>
- CHECK ( <约束条件>)
- 例如:
- CHECK (VALUE IS NOT NULL)
- CHECK (sex IN ('男','女'))
- CHECK (age>0&age<100)
- 例如:
- PRIMARY KEY
- 表级完整性约束
- PRIMARY KEY (<列表>)
- FOREIGN KEY (<列表>) REFERENCES [<表名>] [<约束选型>]
- 例如:
- FOREIGN KEY (worker_id) REFERENCES Worker ON DELETE CASCADE
- 例如:
2. 表的删除
DROP TABLE <表名> [CASCADE|RESTRICT]
2.3 表的扩充和修改(ALTER)
1.增加列
ALTER TABLE <表名> ADD (<列名><数据类型>,……)
2.删除列
ALTER TABLE <表名> DROP <列名> [CASCADE|RESTRICT]
3.修改列
ALTER TABLE <表名> MODIFY <列名><数据类型>
4.补充主码定义
ALTER TABLE <表名> ADD PRIMARY KEY(<列名表>)
5.删除主码
ALTER TABLE <表名> DROP PRIMARY KEY
2.4 域(DOMAIN)定义
1.域(DOMAIN)定义
域定义(DOMAIN DEFINITION)是一个特定的数据类型,用于建立用户自定义的属性列的数据类型,它由数据类型、缺省值和域约束一起构成。
2.域定义的一般格式
CREATE DOMAIN <域名> [AS] <数据类型> [DEFAULT <缺省值>] [<域约束>]
例如:
CREATE DOMAIN ITEM_ID NUMERIC(4) DEFAULT 0 CHECK(VALUE IS NOT NULL)
2.5.索引(INDEX)的建立与删除
在基本表上建立一个或多个索引,可以提供多种存取路径,加快查找速度。
1.创建索引
CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[ASC|DESC],…… )
- UNIQUE表示此索引的每一个索引值只对应唯一的数据记录
- CLUSTER表示要建立的索引时聚簇索引。所谓聚簇索引是指索引项的顺序与表中的记录的物理顺序一致的索引组织。
2.删除索引
DROP INDEX [ON <表名>] <索引名>