一文掌握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!