【07】表的创建和管理

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)
    
  • 外键级联操作

  1. Cascade :级联
    a. 父表delete、update的时候,子表会delete、update掉关联记录;
    b. 年级表删除“一年级”,那么所有“一年级”的学生信息都被删除。
  2. Set Null:置空
    a. 父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
    b. 年级表删除“一年级”,那么所有“一年级”的学生Grade_Id列的值为null。
    c. 外键必须允许为空。
  3. Restrict:限定、约束(默认值)
    a. 如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
    b. 年级表删除“一年级”,那么先检查“一年级”的有没有学生,如果有学生信息,报错,不做删除。如果没有学生信息,删除“一年级”。
  4. 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; 
    

猜你喜欢

转载自blog.csdn.net/Spectre_win/article/details/88397307