一文掌握MySQL表的創建和約束

一、數據庫的建立和銷毀

建立數據庫:

create database [if not exists] 數據庫名 [default charset 字符集]

tips: 中括號[]裡面的內容可以省略不寫

加上if not exists的含義是:如果不存在此數據庫就會創建

default charset 字符集是創建數據庫的時候設置字符集

銷毀數據庫:

drop database [if exists] 數據庫名

tips: 可省略部分的含義同上

二、表的建立和銷毀

1、表的建立

語法:

create table [if not exists] 表名(
    字段名  數據類型  [約束],
    字段名  數據類型  [約束],
    …(最後一個字段不能加逗號)
)

1.1、命名規則

表名通常以t_開頭

關鍵字段通常以表名縮寫_開頭

MySQL不區分大小寫,不能使用關鍵字命名,多個部分之間用下劃線連接

1.2、數據類型

需要掌握的數據類型:

1.整數:int、integer、bigint

2.小數:decimal

3.字符串:varchar

4.枚舉:enum

5.日期:datatime

使用建議:

當字段數字一定大於0並且不會進行減運算時可以使用無符號數unsigned,通常不建議

float和double存在精度問題,後續mysql將不再支持

char和verchar在保存多個字符時底層實現是一致的,隻是占用空間的模式不同,不建議使用char,因為有可能浪費空間

timestamp上限太低,date和time不實用,所以日期建議使用datetime

2、表約束概念

2.1、約束預覽

約束 解釋 說明
primary key 主鍵 用來標志一列為主鍵列
not null 非空 約束該列值不允許為空
unique 唯一 約束該列值不允許重復
default 默認 給該列設置默認值
foreign key 外鍵 標志一列為外鍵值
check 檢查約束 MySQL不支持

2.2、特點及作用

主鍵

作用:可以作為唯一標識具體鎖定某行數據

特點:非空且唯一

一張表至多有一個主鍵列

非空

特點:值不能為null,必須設定

唯一

特點:值可以為null,並且可以存在多個null,該約束隻對已經存在的值有效

非空約束+唯一約束 不等同於 主鍵約束

默認

特點:如果該列未顯式賦值,則使用默認值存放

語法: default(值)

外鍵的使用放在下面具體講解

3、表約束具體使用

3.1、列級約束

直接將約束定義到在列的聲明裡

使用示例:

-- id、姓名、年齡、性別、身高、生日
create table if not exists t_person(
        p_id int primary key,-- 主鍵
        p_name varchar(50) unique not null,-- 唯一+非空
        age tinyint unsigned not null,-- 非空 無符號數  0-255
        sex enum('男','女','奧特曼') default '奧特曼',-- 默認
        height decimal(4,1), -- 總共有4位,小數點占1位:000.0
        birthday datetime
)

3.2、表級約束

將約束單獨定義在所有列的下方,not null和default沒有表級約束

語法:[constraint 自定義約束名] 約束類型(字段名)

使用示例:

create table if not exists t_person(
        p_id int,-- 主鍵
        p_name varchar(50) not null,-- 唯一+非空
        age tinyint unsigned not null,-- 非空 無符號數  0-255
        sex enum('男','女','奧特曼') default '奧特曼',-- 默認
        height decimal(4,1), -- 總共有4位,小數點占1位:000.0
        birthday datetime,
        -- 表級約束
        primary key(p_id),-- 給p_id添加主鍵約束
        constraint un_name unique(p_name)-- 給p_name添加唯一約束
)

3.3、外鍵約束

作用:用來表示兩張表之間的聯系,必須結合另一張表使用

特點:

  • 連接的必須是另一張表的主鍵或者唯一列
  • 外鍵列的值不可自定義,必須來自另一張表與之關聯的列中已經存在的值
  • 值可以為null,不唯一
  • 必須用表級約束創建

語法:

foreign key(字段名) references 其他表名(其他表的連接字段名)

使用:

  • 建表順序:先建沒有外鍵的表,再建有外鍵的表
  • 刪表順序:先刪有外鍵的,再刪沒外鍵的
  • 外鍵列的數據類型必須與所連接的列一致

使用示例:

-- 班級表:id,班級名
create table t_class(
    c_id  int PRIMARY KEY,
    c_name varchar(20) not null
)
-- 學生表:id,姓名,所屬班級id
create table t_student(
    s_id int PRIMARY KEY,
    s_name varchar(20) not null,
    c_id int not null ,
    -- 表級約束
    FOREIGN KEY(c_id) REFERENCES t_class(c_id)
)

4、表的銷毀

語法:

drop table [if exists] 表名

註意事項:

在3.3外鍵約束具體使用中對於有外鍵的表,要先刪除有外鍵的表,再刪除沒有外鍵的表

drop table t_student – 先刪學生表

drop table t_class – 才能刪班級表

到此這篇關於一文掌握MySQL表的創建和約束的文章就介紹到這瞭,更多相關MySQL表 創建 約束內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: