前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL约束

SQL约束

作者头像
zy010101
发布2020-12-25 11:23:53
5660
发布2020-12-25 11:23:53
举报
文章被收录于专栏:程序员程序员

约束

约束是对表中的数据进行限定,从而保证数据的有效性,正确性,完整性。

在MySQL中有四类约束。分别是:主键约束(primary key),非空约束(not null),唯一约束(unique),外键约束(foreign key)。

非空约束

  • 在创建表的时候,加入非空约束。
代码语言:javascript
复制
CREATE TABLE stu(id INT,VARCHAR(100) NOT NULL);

现在,指定name不能为空,下面来试试,插入一个没有名字的记录到表中。

MySQL报错,告诉我们name不能是NULL。

如果你想删除表中的非空约束,那么你可以使用修改表的语句,例如,我们来删除name字段的非空约束。

代码语言:javascript
复制
ALTER TABLE stu MODIFY name VARCHAR(100);

删除该约束以后,我们就可以把一个没有名字的记录插入进去了。

  • 在创建表完成之后,加入非空约束。

注意,在创建完成表之后,你如果想加入非空约束,那么就必须保证你更改的字段没有NULL值。否则必须先删除含有NULL的记录,才能加入非空约束。加入非空约束的办法依旧是使用修改表的语句(ALTER TABLE)。

唯一约束

唯一约束表示值不能重复。现在我们来创建一张表,来约束某个字段不能重复。

代码语言:javascript
复制
CREATE TABLE phone_number(id BIGINT NOT NULL,number INT(11) NOT NULL UNIQUE);

现在,我们来进行插入操作。

注意,在MySQL里NULL是表示不确定,因此,唯一约束限定的值不包括NULL。也就是说即使你进行了唯一约束,出现多个NULL是合法的。

  • 删除唯一约束:
代码语言:javascript
复制
ALTER TABLE phone_number DROP INDEX number;

下面删除唯一约束之后,插入同样的number是可以的。

  • 添加唯一约束:
代码语言:javascript
复制
ALTER TABLE phone_number MODIFY number INT(11) UNIQUE;

注意,在添加唯一之前,应该删除某个字段中重复的值,否则无法添加唯一约束。

主键约束

主键约束表示的是非空并且唯一。

一张表只能有一个字段为主键。

主键是表的唯一标识。

下面有一张表,并且设置主键。其中主键是自动增长的。

代码语言:javascript
复制
CREATE TABLE login(
    id BIGINT NOT NULL ,                        -- ID
    account VARCHAR(100) NOT NULL,              -- 账户
    password TEXT NOT NULL,                     -- 密码
    type VARCHAR(30),                           -- 账户类型
    PRIMARY KEY(id)                             -- 设主键
)
  • 删除主键
代码语言:javascript
复制
ALTER TABLE login DROP PRIMARY KEY;
  • 添加主键
代码语言:javascript
复制
ALTER TABLE login MODIFY id BIGINT PRIMARY KEY;
  • 自动增长

如果某一列是自动增长的,可以使用AUTO_INCREMENT来实现自动增长。

现在,我们先删除刚才那张表,然后重新创建它,这次让他的主键来自动增长。

代码语言:javascript
复制
CREATE TABLE login(
    id BIGINT NOT NULL AUTO_INCREMENT,          -- ID
    account VARCHAR(100) NOT NULL UNIQUE,       -- 账户
    password TEXT NOT NULL,                     -- 密码
    type VARCHAR(30),                           -- 账户类型
    PRIMARY KEY(id)                             -- 设主键
)

删除自动增长:

代码语言:javascript
复制
ALTER TABLE login MODIFY id INT;

添加自动增长:

代码语言:javascript
复制
ALTER TABLE login MODIFY id BIGINT AUTO_INCREMENT;

一般而言,自动增长只需要一个字段就足够了,因为两个字段的字段增长没有意义。所以,我们在使用的时候几乎都是一个字段的自动增长。另外,MySQL里自动增长的字段必须被设为主键,否则报错。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 约束
    • 非空约束
      • 唯一约束
        • 主键约束
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档