博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle约束&修改
阅读量:5973 次
发布时间:2019-06-19

本文共 1997 字,大约阅读时间需要 6 分钟。

一、约束
 Oracle数据库通过约束(constraints)防止无效的数据进入到表中,以保护数据的实体完整性。
为了便于约束的使用,往往需要为约束起一个有意义的名字(例如student_id_pk表示student表id列为主键);
如果不显式命名约束,Oracle数据库将以SYS_Cn的格式为约束命名,这里n是唯一的整数。
约束分为字段级别约束和表级别约束:字段级约束:只为单个字段添加约束;表级约束:为多个字段添加约束
①、not null:指定字段不能为空,只能定义为字段级约束
  create table book(
  author varchar2(60) not null
  )
  ②、unique:指定字段的值(或字段组合的值)对于表中所有的行必须是唯一的。
  对于无非空约束的字段,唯一键约束允许输入空值,且包含空值的行可以有多个。可以为字段级别约束,也可以为表级别约束。
  create table user_info(
  user_name varchar2(30) unique
  )
  ③、primary key:指定主键。该约束强制字段或字段组合必须具有唯一性且每个字段不能为空。可以为字段级别约束,也可以为表级别约束。
  create table book(
  id char(36) primary key
  )
  ④、foreign key:指定外键(即外来的主键)。外键值必须匹配父表中存在的值;如果父表主键值是子表的外键值,则该数据不能删除,Oracle数据库中外键的值可以为null。
     在创建表的最后添加语句:
     foreign key(字段名)  refenreces (主表名)字段名;
 
  ⑤、check:指定列值必须满足check中条件,否则无法进行添加或修改
  create table people(
  age number(3) not null check(age>0 and age<150)-- --年龄不能为空并且范围在0~150
  )
 
二、修改表
  1、修改表字段:
  a、添加字段
  alter table student
  add (sex char(2) default '1' constraint student_sex_1_or_2 check(sex='1' or sex='2'))
  注意:新添加的字段在表的最后一列,不能指定字段的位置,这与MySQL数据库不同(MySQL数据库可以通过after设定添加字段的先后顺序)
b、修改字段
  alter table student
  modify(name varchar2(12))
  注意:字段的修改包括修改数据类型(只有对应列为空指才可以修改)、大小和默认值,其中默认值的修改只会影响后来插入表的数据,对之前的数据不会产生影响。
c、删除字段
  alter table student
  drop(sex)
  注意:
  ①、一次只能删除一个字段;
  ②、一个表至少要保留一个字段;
  ③、如果所删除列(如publisher表中id列)是另一个表的外键(book表publisher_id)则该列(publisher表中id列)无法删除,如下图所示:
 
  2、修改表字段约束:
a、添加约束
  alter table student
  add constraint student_id_pk primary key(id);--将student表id列设为主键
b、删除约束
  alter table student
  drop constraint student_sex_1_or_2;--依据约束名删除约束
  alter table student
  drop primary key--依据约束类型删除约束
  alter table student
  drop unique(id) --依据约束类型删除约束
c、启用或禁用约束
  alter table student
  disable constraint student_sex_1_or_2;--禁用约束
  alter table student
  enable constraint student_sex_1_or_2;--启用约束
三、表重命名
  rename 旧名字 to 新名字
四、截断表
  truncate table 表名——不用执行commit就可以将表数据删除
  delete from 表名——必须执行commit才可以将表数据删除
     关于二者的详细区别可以参考:
     链接:
五、删除表
  drop table 表名
六、注释
  表注释
  comment on table 表名 is '注释内容';
  字段注释
  comment on column 表名.字段名 is '注释内容';

转载于:https://www.cnblogs.com/anzhi/p/7515721.html

你可能感兴趣的文章
Camera Vision - video surveillance on C#
查看>>
如何理解网络连接中的"3次握手"?
查看>>
使用Dubbo服务出现java.io.IOException: invalid constant type: 18异常解决办法
查看>>
一条命令完成砸壳
查看>>
PYKit目录
查看>>
JSON使用总结
查看>>
php-redis中文帮助手册_系统相关_config_eval_evalSha_script...
查看>>
CSS3实现在图片上划过产生一道闪光
查看>>
Tomcat Context配置
查看>>
MyEclipse中properties文件中文插件
查看>>
CentOS6.5安装ntopng
查看>>
mysql事务rollback&commit
查看>>
Node.js搭建Web服务器
查看>>
Shell脚本学习
查看>>
JAX-RS入门 五: 自动类型转换
查看>>
连连看 欢迎玩耍 :)
查看>>
vim编辑器用法
查看>>
Masonry基本使用
查看>>
iOS-规范-头文件结构
查看>>
酒店入住管理系统
查看>>