文章目录
* 1. 常用的数据字段 <https://blog.csdn.net/Spectre_win/article/details/88397307#1__1>
* 2. 表的创建 <https://blog.csdn.net/Spectre_win/article/details/88397307#2__11>
* 3. 添加注释 <https://blog.csdn.net/Spectre_win/article/details/88397307#3__24>
* 4. 主键和外键 <https://blog.csdn.net/Spectre_win/article/details/88397307#4__42>
* 4.1 主表和子表
<https://blog.csdn.net/Spectre_win/article/details/88397307#41__43>
* 4.2 主键 <https://blog.csdn.net/Spectre_win/article/details/88397307#42__48>
* 4.3 外键 <https://blog.csdn.net/Spectre_win/article/details/88397307#43__56>
<>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;
热门工具 换一换