結構化查詢語言 5.7 以后符合SQL92嚴格模式(常用標准為SQL92和SQL99) 通過sql_mode參數來控制
DDL:數據定義語言
DCL:數據控制語言
DML:數據操作語言
DQL:數據的查詢語言
1、數據類型
作用:保證數據的准確性和標准性。
2、種類
數值類型
常用的數值類型為:
tinyint : -128~127 int :-2^31~2^31-1 說明:手機號是無法存儲到int的。一般是使用char類型來存儲收集號
常用的字符類型
char(11) : 定長 的字符串類型,在存儲字符串時,最大字符長度11個,立即分配11個字符長度的存儲空間,如果存不滿,空格填充。 varchar(11): 變長的字符串類型看,最大字符長度11個。在存儲字符串時,自動判斷字符長度,按需分配存儲空間。 enum('bj','tj','sh'): 枚舉類型,比較適合於將來此列的值是固定范圍內的特點(該列的取值只能為括號內定義的值),可以使用enum,可以很大程度的優化我們的索引結構。
常用的時間類型為
DATETIME 范圍為從 1000-01-01 00:00:00.000000 至 9999-12-31 23:59:59.999999。 TIMESTAMP 1970-01-01 00:00:00.000000 至 2038-01-19 03:14:07.999999。 timestamp會受到時區的影響
存放圖片和音視頻文件,這些文件一般不存放在數據庫中。
3、表的屬性
列屬性
約束(一般建表時添加): **primary key** :主鍵約束 設置為主鍵的列,此列的值必須非空且唯一,主鍵在一個表中只能有一個,但是可以有多個列一起構成。 **not null** :非空約束 列值不能為空,也是表設計的規范,盡可能將所有的列設置為非空。可以設置默認值為0 **unique key** :唯一鍵 列值不能重復 **unsigned** :無符號 針對數字列,非負數。 其他屬性: **key** :索引 可以在某列上建立索引,來優化查詢,一般是根據需要后添加 **default** :默認值 列中,沒有錄入值時,會自動使用default的值填充 **auto_increment**:自增長 針對數字列,順序的自動填充數據(默認是從1開始,將來可以設定起始點和偏移量) **comment ** : 注釋
存儲引擎:
InnoDB(默認的)
字符集和排序規則:
utf8
utf8mb4
4、字符集和校對規則
一般建議使用的字符集為
utf8 (3個字符)
utf8mb4 (4個字符,支持表情包)
校對規則(排序規則)
大小寫是否敏感,默認為大小寫不敏感;如有特殊字符時,需要改為大小敏感。比如:ü(默認下該字符會被保存為u)