數據類型
整形
數據類型 | 存儲範圍 |
---|---|
TINYINT(1個字節) | 有符號值:-128到127(-2^7到2^7-1);無符號值:0到255(0到2^8-1) |
SMALLINT(2個字節) | 有符號值:-32768到32767(-2^15到2^15-1);無符號值:0到65535(0到2^16-1) |
MEDIUMINT(3個字節) | 有符號值:-8388608到8388607(-2^23到2^23-1);無符號值:0到16777215(0到2^24-1) |
INT(4個字節) | 有符號值:-2147483648到2147483647(-2^31到2^31-1);無符號值:0到4294967295(0到2^32-1) |
BIGINT(8個字節) | more large |
數據優化時選擇最合理的數據類型
浮點型
數據類型 | 存儲範圍 |
---|---|
FLOAT[(M,D)] | -3.4*10(-38)~3.4*10(38) ,M是數字總位數,D是小數點後面的位數,如果M和D被省略,根據硬件允許的限制來保存值,單精度浮點數精確到大約7位小數位,佔4個字節 |
DOUBLE[(M,D)] | -1.7*10(-308)~1.7*10(308) ,雙精度,有效位是16位,佔8個字節 |
日期時間型
日期類型 | 存儲空間 | 日期格式 | 日期範圍 |
---|---|---|---|
datetime | 8 bytes | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |
timestamp | 4 bytes | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:01 ~ 2038 |
date | 3 bytes | YYYY-MM-DD | 1000-01-01~ 9999-12-31 |
year | 1 bytes | YYYY | 1901~ 2155 |
在 MySQL 中創建表時,對照上面的表格,很容易就能選擇到合適自己的數據類型,不過到底是選擇 datetime 還是 timestamp,可能會有點犯難,這兩個日期時間類型各有優點:
datetime 的日期範圍比較大;,timestamp 所佔存儲空間比較小,只是 datetime 的一半
字符型
|列類型|存儲需求|
|CHAR(M)|M個字節,0<=M<=255|
|VARCHAR(M)|L+1個字節其中L<=M,且0<=M<=65535|
|TINYTEXT|L+1個字節,其中L<2^8|
|TEXT|L+2個字節,其中L<2^16|
|MEDIUMTEXT|L+3個字節,其中L<2^24|
|LONGTEXT|L+4個字節,其中L<2^32|
|ENUM(‘value1’,’value2’,…)|1或2個字節,取決於枚舉值的個數(最多65536個值)|
|SET(‘value1’,’value2’,…)|1,2,3,4或8個字節,取決於set成員的數目(最多64個成員)|
char的長度是固定的,varchar的長度是可變的,因爲char的長度固定,方便查找,所以存取速度char比varchar要高一些,char相當於用空間換效率
數據表
打開數據庫
命令:USE 數據庫名稱
查看當前打開的數據庫:SELECT DATABASE()
創建數據表
命令:
CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type,
......)
查看數據表列表: SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]
查看數據表結構: SHOW COLUMNS FROM db_name
插入記錄
命令: INSERT[INTO] tbl_name[(col_name,...)]VALUES(val,...)
如果沒有選擇列名,插入的值必須要對應,多了或少了都會發生錯誤
記錄查找
命令:SELECT expr,... FROM tbl_name
此處省略了SELECT的部分語句,以後會深入學習SELECT
空值與非空
- NULL:字段值可以爲空
- NOT NULL:字段值禁止爲空
自動編號
命令:AUTO_INCREMENT
自動編號,且必須與主鍵組合使用
默認情況下,起始值爲1,每次的增量爲1
約束
主鍵約束(PRIMARY KEY 或 KEY)
- 每張數據表只能存在一個主鍵
- 主鍵保證記錄的唯一性
- 主鍵自動爲NOT NULL
唯一約束(UNIQUE KEY)
- 唯一約束可以保證記錄的唯一性
- 唯一約束的字段可以爲空值(NULL)
- 每張數據表可以存在多個唯一約束
默認約束(DEFAULT)
- 當插入記錄時,如果沒有明確爲字段賦值,則自動賦予默認值