ORACLE SQL 约束

约束用于规定表中的数据规则,约束用于规定表中的数据规则。
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
在 SQL 中,我们有如下约束:
• NOT NULL - 指示某列不能存储 NULL 值。
• UNIQUE - 保证某列的每行必须有唯一的值。
• PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
• FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
• CHECK - 保证列中的值符合指定的条件。
• DEFAULT - 规定没有给列赋值时的默认值。

  1. 不为空(NOT NULL)
    约束强制列不接受 NULL 值
  2. 唯一约束(UNIQUE)
    UNIQUE 约束唯一标识数据库表中的每条记录,UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证,创建表时指定:
 CREATE TABLE Student(ID int primary key not null,Name NVARCHAR2(20) UNIQUE,Age int,City NVARCHAR2(20),MajorID int);

但是这样UNIQUE约束名是按规则默认的,我们无法确认,不便于后续修改。需在创建时指定约束名称,当然可以同时多多列建立唯一约束。建议创建表后添加约束。
(1)创建学生表时,指定ID和Name唯一约束

CREATE TABLE Student(ID int not null,Name VARCHAR2(50),Age int,CityVARCHAR2(50),MajorID int,CONSTRAINT UK_Students_ID_And_Name UNIQUE (ID,Name));

(2)为学生的姓名添加唯一约束

ALTER TABLE Student ADD CONSTRAINT UK_Students_Name UNIQUE(Name);

(3)删除学生姓名唯一约束

ALTER TABLE Student DROP CONSTRAINT UK_Students_Name
  1. 主键(PRIMARY KEY)
    PRIMARY KEY 约束唯一标识数据库表中的每条记录。规则:1)主键必须包含唯一的值;2)主键列不能包含 NULL 值每个表都应该有一个主键;3)并且每个表只能有一个主键;其使用方法与UNIQUE一样,这里只说个简单例子:
    (1)指定学生ID为主键
ALTER TABLE Student ADD CONSTRAINT PK_Students_ID PRIMARY KEY(ID)

(2)删除学生ID主键

ALTER TABLE Student DROP CONSTRAINT PK_Students_ID
  1. 外键(FOREIGN KEY)
    一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。如:学生信息表中的MajorID即是专业信息表Majors的外键。
    (1) 学生信息表中的MajorID添加外键约束
ALTER TABLE Student ADD CONSTRAINT FK_Students_MajorID FOREIGN KEY(MajorID) REFERENCES Majors(ID)

(2) 删除外键约束

ALTER TABLE Student DROP CONSTRAINT FK_Students_MajorID
  1. 校验约束(CHECK)
    CHECK 约束用于限制列中的值的范围
    (1) 设置学生的名称长度不能少于2
ALTER TABLE Student ADD CONSTRAINT CK_Students_Name CHECK(LENGTH(SName)>=2)

(2)删除该约束

ALTER TABLE Student DROP CONSTRAINT CK_Students_Name
  1. 默认值(DEFAULT)
    DEFAULT 约束用于向列中插入默认值。
    (1)单独语句增加Sex默认值约束
ALTER TABLE Student MODIFY Sex  DEFAULT '1'

(2)删除默认值约束

ALTER TABLE Student DROP CONSTRAINT DF_Students_Sex
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值