1. 程式人生 > >MySQL資料庫(二)__2018.11.03

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