目录
一、数据定义
创建 | 删除 | 修改 | |
模式 | CREATE SCHEMA | DROP SCHEMA | |
表 | CREATE TABLE | DROP TABLE | ALTER TABLE |
视图 | CREATE VIEW | DROP VIEW | |
索引 | CREATE INDEX | DROP INDEX | ALERT INDEX |
一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据库对象。
二、模式的定义与删除
1、创建模式
CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义句子>|<视图定义句子>|<授权定义句子>];
CREATE:创建
SCHEMA:模式
AUTHORIZATION:授权
CREATE SCHEMA cat AUTHORIZATION yellowcat;
/*创建名为cat的模式,并且授权给yellowcat这个用户*/
2、删除模式
DROP SCHEMA <模式名> [CASCADE | RESTRICT];
CASCADE 与 RESTRICT 必须二选一
CASCADE(级联):删除模式,同时把该模式中所有的数据库对象全部删除。
RESTRICT(限制):删除模式,但是如果该模式中还存在有数据,则会报错。
DROP SCHEMA cat CASCADE;
/*删除名为cat的模式,如果cat模式中存有数据库对象,数据库对象也一并删除*/
DROP SCHEMA cat RESTRICT;
/*删除名为cat的模式,如果cat模式中存有数据库对象,则会报错*/
三、数据类型
CHAR(n),CHARACTER(n):长度为n的定长字符串。
VARCHAR(n),CHARACTERVARYING(n):最大长度为n的变长字符串。
INT,INTEGER:长整数(4字节)。
SMALLINT:短整型(2字节)。
BIGINT:大整数(8字节)。
DATE:日期(包含年月日,格式YYY-MM-DD)。
TIME:时间(包含时分秒,格式为HH:MM:SS)。
BOOLEAN:逻辑布尔量。
FLAOT(n):可选精度的浮点数,精度最少为n位数字。
四、表的定义、删除、修改
1、表的定义
CREATE TABLE <表名> (
<列名><数据类型>[列级完整性约束条件],
<列名><数据类型>[列级完整性约束条件],
<列名><数据类型>[列级完整性约束条件],
[表级完整性约束条件]);
主码由一个属性构成的表:
CREATE TABLE TAB1(
COL1 CHAR(20) PRIMARY KEY,
/*COL1数据类型为长度为20的定长字符串,列级完整性约束条件:COL1为主码*/
COL2 INT UNIQUE,
/*列级完整性约束条件:取值唯一,且不为空*/
COL3 SMALLINT,
);
主码由多个属性构成的表:
CREATE TABLE TAB2(
COL1 INT NOT NULL,
/*列级完整性约束条件:COL1不能为空*/
COL2 CHAR(4),
COL3 CLOB,
PRIMARY KEY (COL1,COL2,COL3),
/*主码由三个属性构成,必须作为表级完整性进行定义*/
FOREING KEY (COL1) REFERENCES TAB1 (COL2),
/*表级完整性约束条件,COL2是外码,被参照表是TAB1*/
);
注:参照表和被参照表可以是同一个表
外码:
1.外码是另外一个表的主码;
2.插入数据是必须先给所关联外码的那个表插入数据;
3.报错的原因是插入的某个属性在所关联外码表中找不到。
外码的意义是:保证两个表之间的数据的一致性,例如:职工表中的部门号,必须在部门表中存在。
2、表的修改
ALTER TABLE <表名>
[ADD [COLUMN] <新列名> <数据类型> [完整性约束条件]] /*增加一个列*/
[ADD <表级完整性约束>] /*添加新的表级完整性约束*/
[DROP [COLUMN] <列名> [CASCADE | RESTRICT]] /*删除列*/
[DROP CONSTRAINT <完整性约束名> [RESTRICT | CASCADE]] /*用于删除指定的完整性约束条件*/
/*CASCADE 只要有关联的都删除,RESTRICT 如果该列被其他列引用,则拒绝删除,系统报错*/
[ALTER COLUMN <列名><数据类型>]; /*用于修改原有的列定义,包括列名和数据类型*/
ALTER TABLE TAB1 ADD COL4 INT;
/*添加新列“COL4”,数据类型为INT*/
/*不论基本表中原来是否已有数据,新增的列一律为空值*/
ALTER TABLE TAB1 ALTER COLUMN COL4 CHAR(4);
/*将表中的COL4列的数据类型改为了CHAR(4)*/
ALTER TABLE TAB1 ADD UNIQUE(CIL4);
/*增加COL4取值必须唯一的完整性约束条件*/
ALTER FOREIGN KEY (COL4) REFERENCES TAB2(COL2);
/*增加表级完整性约束条件*/
3、表的删除
DROP TABLE <表名> [RESTRICT | CASCADE];
DORP TABLE TAB1 RESTRICT;
/*RESTRICT 如果该列被其他列引用,则拒绝删除,系统报错*/
DORP TABLE TAB2 CASCADE;
/*CASCADE 只要有关联的都删除*/
五、模式与表的关系
每一个基本表都属于某一个模式,一个模式包含多个基本表。
创建基本表(其他数据库对象也一样)时,若没有指定模式,系统会根据搜索路径来确定该对象所属模式。
(1)显示当前搜索路径
SHOW search_path;
(2)搜索路径的当前默认值是:
$user , PUBLIC;
(3)DBA用户可以设置搜索路径:
SET search_path T0 "S-T", PUBLIC;