MySQL資料庫(二)__2018.11.03
唯一性索引,一個表中可以有多個欄位時唯一性的(unique)。
一個表只能有一個主鍵,且不能為空。
外來鍵約束。
完整性約束條件。保證資料的完整性和一致性。
顯示寬度
如果資料大於該欄位資料型別所能表示的最大範圍則發生截斷。
顯示寬度只有配合上零填充才能顯示出效果。
--零填充測試
CREATE TABLE test_int1( a TINYINT ZEROFILL, b SMALLINT ZEROFILL, c MEDIUMINT ZEROFILL, d INT ZEROFILL, e BIGINT ZEROFILL );
查看錶結構
有了零填充,欄位會自動加上無符號的屬性。
浮點數(小數):float(M,D)M代表總長度,D代表浮點數佔用的位數。
double(M,D)
decimal[(M,D)]內部以字串形式儲存資料的。
float、doubles在發生輸入資料浮點數位數超過D時,自動進行四捨五入,但是decimal會產生警告。
CREATE TABLE test_float1(
a FLOAT,
b DOUBLE,
c DECIMAL
);
不指定小數的位數,預設對小數部分進行四捨五入。
decimal精度高,適合處理精度高的。
char時定長0-255
varchar變長0-65535
char比較浪費空間。
char型別的檢索速度比varchar快。以時間換空間
varchar裡有一個位元組記錄存了多長的字串。
CREATE TABLE test_str(
a CHAR(5),
b VARCHAR(5)
);
可以在當前會話中設定sql模式(暫時),修改配置檔案(永久有效)。
select concat()
char型別的效率要高於varchar。char相當於那空間換時間,varchar是那時間換空間。char預設儲存時,後面會用空格填充到指定的長度,而在檢索的時候會去掉後面的空格,varchar在儲存的時候不進行填充,尾部的空格會留下。
儲存的長度大於255只能選擇varchar或text。
text特殊的字串型別。
text列不能有預設值。
--測試text不能有預設值。
CREATE TABLE test_str1(
content TEXT DEFAULT 'THIS IS A TEST'
);
檢索過程中不存在大小寫轉換(區分大小寫)
ENUM:列出值,有序號按序號存,儲存的編號,不是值。
列舉出來的值。
--測試列舉型別
可以為空。
只能從列舉出來的值中選擇。
列舉型別會自動去除列舉值中的空格。
集合型別,
列舉型別只能從列表中的值中選一個,集合可選多個。
--測試集合set
CREATE TABLE test_set(
a SET('A','B','C','D','E','F')
);
INSERT test_set(a)VALUES('A');
INSERT test_set(a)VALUES('C');
INSERT test_set(a)VALUES('C,D,E');
INSERT test_set(a)VALUES('C,F,A');
會自動進行排序。
--HH:MM:SS[D HH:MM:SS](TIME時間型別)D表示天數0~34
CREATE TABLE test_time(
a TIME
);
data型別用3位元組表示。
--測試data型別(YYYY-MM-DD YYYYMMDD)
CREATE TABLE test_date(
a DATE
);
可以任意指定分隔符
--79~99轉換成1970~1999 00~69轉換成2000~2069