• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

风子sama

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

MySql建表约束

建表约束

### 主键约束

```mysql
-- 主键约束
-- 使某个字段不重复且不得为空,确保表内所有数据的唯一性。

CREATE TABLE user (
  id INT PRIMARY KEY,
  name VARCHAR(20)
);

-- 联合主键
-- 联合主键中的每个字段都不能为空,并且加起来不能和已设置的联合主键重复。

CREATE TABLE user (
  id INT,
  name VARCHAR(20),
  password VARCHAR(20),
  PRIMARY KEY(id, name)
);

-- 自增约束
-- 自增约束的主键由系统自动递增分配。

CREATE TABLE user (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20)
);

-- 添加主键约束
-- 如果忘记设置主键,还可以通过SQL语句设置(两种方式):

ALTER TABLE user ADD PRIMARY KEY(id);
ALTER TABLE user MODIFY id INT PRIMARY KEY;

-- 删除主键

ALTER TABLE user drop PRIMARY KEY;

### 唯一主键

```mysql
-- 建表时创建唯一主键

CREATE TABLE user (
  id INT,
  name VARCHAR(20),
  UNIQUE(name)
);

-- 添加唯一主键
-- 如果建表时没有设置唯一建,还可以通过SQL语句设置(两种方式):

ALTER TABLE user ADD UNIQUE(name);
ALTER TABLE user MODIFY name VARCHAR(20) UNIQUE;

-- 删除唯一主键

ALTER TABLE user DROP INDEX name;

### 非空约束

```mysql
-- 建表时添加非空约束
-- 约束某个字段不能为空

CREATE TABLE user (
  id INT,
  name VARCHAR(20) NOT NULL
);

-- 移除非空约束

ALTER TABLE user MODIFY name VARCHAR(20);

### 默认约束

```mysql
-- 建表时添加默认约束
-- 约束某个字段的默认值

CREATE TABLE user2 (
  id INT,
  name VARCHAR(20),
  age INT DEFAULT 10
);

-- 移除非空约束

ALTER TABLE user MODIFY age INT;

### 外键约束

mysql
-- 班级

CREATE TABLE classes (
  id INT PRIMARY KEY,
  name VARCHAR(20)
);

-- 学生表

CREATE TABLE students (
  id INT PRIMARY KEY,
  name VARCHAR(20),
  -- 这里的 class_id 要和 classes 中的 id 字段相关联
  class_id INT,
  -- 表示 class_id 的值必须来自于 classes 中的 id 字段值
  FOREIGN KEY(class_id) REFERENCES classes(id)
);

-- 1. 主表(父表)classes 中没有的数据值,在副表(子表)students 中,是不可以使用的;
-- 2. 主表中的记录被副表引用时,主表不可以被删除。
```

posted on 2021-09-29 10:40  风子sama  阅读(113)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3