1. 常用的数据字段
数据类型 | 关键字 | 描述 |
---|---|---|
字符串 | VARCHAR2(n) | 其中 n 表示的是字符串所能保存的最大长度,基本上保存 200 个左右的内容 |
整数 | NUMBER(n) | 表示最多为 n 位的整数,有时候也可以使用 INT 替代 |
小数 | NUMBER(n,m) | 其中 m 为小数位,n-m 位整数位,有时候也可以用FLOAT 代替 |
日期 | DATE | 存放日期-时间 |
大文本 | CLOB | 可以存储海量文字(4G),例如存储《三国演义》、《西游记》 |
大对象 | BLOB | 存放二进制数据,例如:电影,MP3,图片,文字 |
2. 表的创建
-- 创建表
create table Grade
(
grade_Id integer not null,
grade_Name VARCHAR2(50) not null,
primary key(grade_Id) -- 主键
);
3. 添加注释
-
表的注释
COMMENT ON TABLE 表名 IS ‘表的注释’;
-
列的注释
COMMENT ON COLUMN 表名.列名 IS ‘列的注释’;
-- Add comments to the table
COMMENT ON TABLE Grade IS '年级表';
-- Add comments to the columns
COMMENT ON COLUMN Grade.grade_id IS '年级编号';
COMMENT ON COLUMN Grade.grade_name IS '年级名称';
4. 主键和外键
4.1 主表和子表
- 主表:关联关系中,起主导作用的表(Grade),主表中必须有主键;
- 子表:关联关系中的附属表,子表中的外键引用主表中的主键;
4.2 主键
- 作用:唯一的标识表中的每一行数据
- 主键不能为空,不能重复
- 一张表中可以没有主键
- 作为主键的列可以是一列、也可以是多列(复合主键)
- PRIMARY KEY(Grade_Id)
4.3 外键
-
作用:在外键表中添加对主键表的引用
-
外键可以为空
-
FOREIGN KEY
FOREIGN KEY (Grade_Id) REFERENCES Grade(Grade_Id)
-
外键级联操作
- Cascade :级联
a. 父表delete、update的时候,子表会delete、update掉关联记录;
b. 年级表删除“一年级”,那么所有“一年级”的学生信息都被删除。 - Set Null:置空
a. 父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
b. 年级表删除“一年级”,那么所有“一年级”的学生Grade_Id列的值为null。
c. 外键必须允许为空。 - Restrict:限定、约束(默认值)
a. 如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
b. 年级表删除“一年级”,那么先检查“一年级”的有没有学生,如果有学生信息,报错,不做删除。如果没有学生信息,删除“一年级”。 - No Action:不作处理
a. 同 RESTRICT,也是首先先检查外键;
-
示例
在子表上添加外键约束(两张表都已经存在,额外添加主外键关系) ALTER TABLE student ADD CONSTRAINT `FK_Student_Grade` FOREIGN KEY (`Grade_Id`) REFERENCES grade(Grade_Id) ON UPDATE SET NULL ON DELETE SET NULL;