MySQL資料庫常見資訊種類及約束條件
阿新 • • 發佈:2019-01-04
數值型:體重,身高,成績,工資等
型別 | 大小 | 範圍(有符號) | 範圍(無符號) | 用途 |
---|---|---|---|---|
tinyint | 1位元組 | -128~127 | 0~255 | 微小整數 |
smallint | 2位元組 | -32768~32767 | 0~65535 | 小整數 |
mediumint | 3位元組 | -2^23~2^23-1 | 0~2^24-1 | 中整數 |
int | 4位元組 | -2^31~2^31-1 | 0~2^32-1 | 大整數 |
bigint | 8位元組 | -2^63~263-1 | 0~2^64-1 | 極大整數 |
float | 4位元組 | 單精度浮點 | ||
double | 8位元組 | 雙精度 | ||
decimal | decimal(M,D),其中M為有效數位,D為小數位,M>D,佔用M+2位元組 | |||
unsigned | 無符號儲存範圍 |
mysql>create table db1.t1(id int unsigned,pay float(7,2));
#建立表t1,欄位為id 型別為int 無符號,欄位pay 型別為浮點 數位為7,整數位5,小數位2
字元型:姓名,工作單位,通訊住址
定長:char(字元數) | 變長:varchar(字元數) | 大文字型別:text/blob |
---|---|---|
最大長度255字元 | 根據實際分配儲存空間 | 字元數大於65535時使用 |
不夠時在右邊空格補齊 | 字元超出,不能寫入 | |
字元超出無法寫入資料 |
mysql>create table db1.t2(name char(50));
列舉型:興趣愛好,性別
給定集合選擇單個值,enum | 給定值選擇多個值,set |
格式:enum(值1,值2,值N...) | 格式:set(值1,值2,值N) |
mysql>create table db3.t3(
-> sex enum("male","female"),
-> interest set("book","film","music","football","running")
-> );
日期時間型:出生日期,註冊時間
datatime | timestamp | date | year | time |
---|---|---|---|---|
8位元組 | 4位元組 | 4位元組 | 1位元組 | 3位元組 |
1000-01-01 00:00:00.000000~ 9999-12-31 00:00:00.000000 |
1970-01-01 00:00:00.000000~ 2038-01-19 03:14:07.999999 |
0001.01.01~9999.12.31 | 1901~2155 | hh:mm:ss |
預設值為NULL | 未賦值,以當前系統時間賦值 | 預設4位數,如果兩位,01~69 2001~2069,70~99 1970,1999 |
型別 | 用途 | 型別 | 用途 |
---|---|---|---|
now() | 當前日期和時間 | curdate() | 獲取當前日期 |
year() | 指定時間中的年份 | curtime() | 獲取當前的時刻 |
day() | 指定時間中的日期 | month() | 獲取指定時間的月份 |
sleep(N) | 休眠N秒 | date() | 日期 |
time() | 時刻 |
mysql>select date(now()),curdate();
約束條件
null | 允許為空,預設設定 |
not null | 不允許為空 |
key | 索引型別 |
default | 設定預設值,預設為null |
mysql>create table db1.t5(id char(6) not null,name varchar(5) not null,index(id),index(name));
index 普通索引 | 可以有多個欄位,欄位值允許重複,把經常查詢欄位設定為索引,key標誌是mul |
unique唯一索引 | |
fulltext全文索引 | |
primary key主鍵 | 只能有一個欄位/表,不允許重複和空值,複合主鍵需一起建立,標誌是pri,與auto_increment連用,把唯一標識的欄位設定為主鍵【記錄編號欄位】 |
foreign key外來鍵 | 儲存引擎必須為innodb,欄位型別一致,被參照欄位必須為索引型別的一種(pri) |