第四章 SQL 基礎
1. SQL介紹
1.1 簡介 結構化查詢語言.
1.2 SQL标準
SQL89 SQL92 SQL99 SQL03 SQL05
1.3 SQL_MODE
除數為零
日期
mysql> select @@sql_mode;
1.4 SQL 類型
DDL : 資料定義語言 : 庫名,庫屬性,表名,表屬性,列(列名,列屬性)
DCL : 資料控制語言 : 權限
DML : 資料操作語言 : 資料行
DQL : 資料查詢語言 : 資料行
1.5 SQL功能
-
管理,操作資料庫對象:
庫: 庫名,庫屬性
表: 表名,表屬性,列(列名,列屬性),資料行
2. MySQL規範性存儲限制
2.1 字元集Charset
utf8 : 最大位元組長度3個.
utf8mb4 : 最大位元組長度4個. 可以存儲emoji表情字元.
mysql> show charset;
2.2 排序規則 (校對規則)
show collation;
預設是大小寫不敏感.
utf8mb4_general_ci
utf8mb4_bin
2.3 資料類型
-
2.3.1 數字類型
tinyint 1位元組長度數字 ===> 11111111 ===> 0-2^8-1 ===> -27-27-1 (3位)
int 4位元組長度 ====> 0-2^32-1 ====> -2^31 - 2^31-1 (10位數)
bigint 8位元組長度 ====> 0-2^64-1 ====> -2^63 - 2^63-1 (20位數)
- 2.3.2 字元串
-
char(10) :
定長類型,最多10個字元,占用存儲空間一定.最多存儲255個字元.
-
varchar(10):
變長類型,最多10個字元,按需配置設定存儲空間.
需要額外1個字元或2個字元存儲字元長度
-
因素: 變長的字元串列,90%幾率都是varchar
具體原因是什麼? 節省空間,還有沒有别的原因? 遺留的問題…
enum('m','f')
1 2
2.3.3 時間類型
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會受到時區的影響
2.3.4 二進制類型
2.3.5 JSON(8.0)