数据库:约束

一:常见约束

含义:一种限制,限制表中的数据,为了保证表中数据的准确可靠性
分类:六大约束
      NOT NULL:非空
      DEFAULT:默认值
      PRIMARY KEY:主键,保证该字段的值具有唯一性,且非空
      UNIQUE:字段值具有唯一性,但可以为空
      CHECK:检查约束【mysql不支持】
      FOREIGN KEY:外键,限制两个表的关系,保证该字段的值必须来自于主表关联列的值
语法:列级约束(除了外键)、表级约束(除了非空、默认)
      create table 表名(
      字段名 字段类型 列级约束,
      ……
      表级约束      
      )
特点
1.主键与唯一对比:
           保证唯一性   是否允许为空      一个表能否多个    能否允许组合
     主键     是             否                                否                是(不推荐)
     唯一     是             是                                是                是(不推荐) 
2.外键
    要求在从表设置外键
    从表的外键列类型与主表关联列类型一致或兼容,名称无要求
    主要的关联列必须是key(主键或唯一键)   

#1.添加列级约束
CREATE TABLE stuinfo(
     id INT PRIMARY KEY,#主键
     stuName VARCHAR(20) NOT NULL,#非空
     gender CHAR(1),CHECK(gender='男' OR gender='女'),#检查
     seat INT UNIQUE,#唯一
     age INT DEFAULT 18,#默认
     majorId INT REFERENCES major(id)#外键
)
CREATE TABLE major(
      id INT PRIMARY KEY,
      majorName VARCHAR(20)  
);
#2.添加表级约束
/*
【constraint 约束名】 约束类型(字段名)
*/
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(
       id INT,
       stuname VARCHAR(20),
       gender CHAR(1),
       seat INT,
       age INT,
       majorid INT,
       CONSTRAINT pk PRIMARY KEY(id),#主键
       CONSTRAINT uq UNIQUE(seat),#唯一
       CHECK(gender='男' OR gender='女'),#检查  
       FOREIGN KEY(majorid) REFERENCES major(id)#外键
);
SHOW INDEX FROM stuinfo;
#通用写法
CREATE TABLE IF EXISTS stuinfo(
       id INT PRIMARY KEY,
       stuName VARCHAR(20) NOT NULL,
       sex CHAR(1),
       age INT DEFAULT 18,
       SET INT UNIQUE,
       majorid INT,
       CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
);
#主键组合,unique也能组合
CREATE TABLE stu(
       id INT,
       stuName VARCHAR(20),
       PRIMARY KEY(id,stuName)
);

二:修改表时添加约束

CREATE TABLE stuinfo(
       id INT,
       stuname VARCHAR(20),
       gender CHAR(1),
       seat INT,
       age INT,
       majorid INT
);
#1.添加约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
#2.添加默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
#3.添加主键
ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
#4.添加唯一键
ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;
#5.添加外键
ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_maojor FOREIGN KEY(majorid) REFERENCES major(id);

三:删除约束

#1.删除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
#2.删除主键
ALTER TABLE stuinfo MODIFY COLUMN id INT;#使用modify删除主键无效,但可以修改约束类型
ALTER TABLE stuinfo DROP PRIMARY KEY;#使用drop才能删除主键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值