mysql建表約束

在這裏插入圖片描述

mysql建表約束

mysql的約束主要有主鍵約束,外鍵約束,唯一約束,非空約束,默認約束;

主鍵約束

它能夠唯一確定一張表中的一條記錄.也就是我們通過給某個字段添加約束,就使得該字段不重複且不爲空;

mysql> create table texts(
    -> 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;
唯一約束
-- 建表時創建唯一主鍵
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;
非空約束

就是修飾的字段不能爲空 null;

-- 建表時添加非空約束
-- 約束某個字段不能爲空
CREATE TABLE user (
    id INT,
    name VARCHAR(20) NOT NULL
);

-- 移除非空約束
ALTER TABLE user MODIFY name VARCHAR(20);
默認約束

就是當我們插入字段的時候,如果沒有傳值,就會使用默認值;

-- 建表時添加默認約束
-- 約束某個字段的默認值
CREATE TABLE user2 (
    id INT,
    name VARCHAR(20),
    age INT DEFAULT 10
);

-- 移除非空約束
ALTER TABLE user MODIFY age INT;
外鍵約束

涉及到兩個表 :父表,子表;

-- 班級
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 中沒有的數據值,在副表(子
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章