Oracle - 二维表相关

时间:2021-11-21 01:54:19

 

1. 创建二维表

-- create table 表名 (
  -- 字段名1 字段类型 [not null] [primary key] ,
  -- 字段名2 字段类型 check(条件判断), 
  -- 字段名3 字段类型 , 
  -- ...
  -- constraint 约束名 primary key(字段名)
-- )
   
-- 字段类型
   
  -- number 数值类型
     -- number(a, b), 总长度为a, 小数位长度为b, 小数位可以不写
         
  -- varchar2 字符类型
     -- varchar(a), a表示字符的最大长度
     -- 实际存储的内存长度是根据字符大小来分配的, 但是不能超过a
     -- 动态分配存储空间, 节省空间
         
  -- char 字符类型
     -- char(a), 不管字符数据长度是多少, 直接开辟a大小的空间来存储数据
     -- 存储效率高于varchar2
         
  -- date 日期类型

 

2. 维护二维表

-- 添加新字段
  -- alter table 表名 add 新字段名 字段类型
   
-- 修改原字段
  -- 修改字段类型
  -- alter table 表名 modify 字段名 新字段类型
  -- 修改字段名
  -- alter table 表名 rename column 字段名 to 新字段名
  -- 删除字段
  -- alter table 表名 drop column 字段名
   
-- 修改表名
  -- rename 原表名 to 新表名

 

3. 删除二维表

--  drop table 表名

 

4. 创建约束 (主键约束/非空约束/检查约束/唯一约束)

-- 添加主键 : 非空唯一
  -- 直接在创建表的字段后使用 primary key
  -- 在创建表的语句最后 constraints 约束名 primary key(字段名)
  -- 在创建表后 alter table 表名 add constraints 约束名 primary key(字段名)
  -- 删除主键 alter table 表名 drop constraints 约束名
      
-- 非空约束
  -- 直接在创建表的字段后使用 not null
  -- 在创建表的语句最后 constraints 约束名 check(字段名 is not null)
  -- 在创建表后 alter table 表名 add constraints 约束名 check(字段名 is not null)
  -- 删除非空约束 alter table 表名 drop constraints 约束名
   
-- 检查约束
  -- 直接在创建表的字段后使用 check(条件判断)
  -- 在创建表的语句最后 constraints 约束名 check(条件判断)
  -- 在创建表后 alter table 表名 add constraints 约束名 check(条件判断)
  -- 删除检查约束 alter table 表名 drop constraints 约束名
      
-- 唯一约束
  -- 直接在创建表的字段后使用 unique
  -- 在创建表的语句最后 constraints 约束名 unique(字段名)
  -- 在创建表后 alter table 表名 add constraints 约束名 unique(字段名)
  -- 删除唯一约束 alter table 表名 drop constraints 约束名
   
-- 外键约束
   
  -- 作用: 当在子表中插入的数据在父表中不存在, 则会自动报错
      
  -- 当一张表的某个字段的值需要依赖另外一张表的某个字段的值, 则使用外键约束
  -- 其中主动依赖的表称为子表, 被依赖的表称为父表, 外键加在子表中
      
  -- 使用: 
     -- 在子表中的字段后直接使用 references 父表名(父字段名)
     -- 在创建表的语句最后 constraints 约束名 foreign key(子字段名) references 父表名(父字段名)
     -- 在创建表后 alter table 表名 add constraints 约束名 foreign key(子字段名) references 父表名(父字段名)
     -- 删除外键约束 alter table 表名 drop constraints 约束名
      
  -- 无法直接删除父表数据, 可以使用级联删除
  -- 级联删除 : 
     -- 在添加外键约束时, 在结尾使用关键字 on delete cascade 
     -- 当删除父表数据时, 会自动删除子表相关所有数据 (缺点: 无法保留子表历史数据)
     -- 在添加外键约束时, 在结尾使用关键字 on delete set null 
     -- 当删除父表数据时, 会将子表中的依赖字段的值设置为null (注意: 子表依赖字段不能添加非空约束)