SQL 語言概述
SQL (Structured Query Language)結構化査詢語言
1. 關系型數據庫的常見組件
- 數據庫: database 表的集合,物理上表現為一個目錄
- 表: table,行: row 列: column
- 索引: index
- 視圖: view,虛擬的表
- 存儲過程: procedure
- 存儲函數: function
- 觸發器: trigger
- 事件調度器: event scheduler,任務計劃
- 用戶: user
- 權限: privilege
2. SQL 語言規范
- 在數據庫系統中,SOL 語句不區分大小寫,建議用大寫
- SQL 語句可單行或多行書寫,默認以";"結尾
- 關鍵詞不能跨多行或簡寫
- 用空格和 TAB 縮進來提高語句的可讀性
- 子句通常位于獨立行,便于編輯,提高可讀性
3. 注釋
SQL標準# 單行注釋,注意有空格
-- 注釋內容# 多行注釋/*注釋內容注釋內容注釋內容*/MySQL注釋
# 注釋內容
4. 數據庫對象和命名
數據庫的組件(對象):
數據庫、表、索引、視圖、用戶、存儲過程、函數、觸發器、事件調度器等
命名規則:
- 必須以字母開頭,后續可以包括字母,數字和三個特殊字符(#_$)
- 不要使用MySOL的保留字
5. SQL語句分類
-
DDL: Data Defination Language 數據定義語言
CREATE, DROP,ALTER
-
DML: Data Manipulation Language 數據操縱語言
INSERT, DELETE,UPDATE
軟件開發:CRUD
-
DQL:Data Query Language 數據查詢語言
SELECT
-
DCL:Data Control Language 數據控制語言
GRANT,REVOKE
-
TCL:Transaction Control Language 事務控制語言
COMMIT,ROLLBACK,SAVEPOINT
6. SQL語句構成
關健字Keyword組成子句clause,多條clause組成語句
示例:
SELECT * # SELECT子句
FROM products # FROM子句
WHERE price>666 # WHERE子句說明:一組SQL語句由三個子句構成,SELECT,FROM和WHERE是關鍵字
7. 查看SQL幫助
https://dev.mysql.com/doc/refman/5.7/en/sql-statements.html
mysql> help contentsmysql> help Data Typesmysql> help BIT
8. 字符集和排序
早期MySQL版本默認為 latin1,從MySQL8.0開始默認字符集已經為 utf8mb4
# 查看支持所有字符集:
mysql> show character set;
mysql> show charset;# 查看當前默認字符集
mysql> show variables like 'character%';# 查看支持所有排序規則
mysql> show collation;# 查看當前使用的排序規則
mysql> show variables like 'collation%';# 設置服務器默認的字符集
vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4# 設置mysql客戶端默認的字符集
vim /etc/my.cnf針對mysql客戶端
[mysql]
default-character-set=utf8mb4針對所有MySQL客戶端
[client]
default-character-set=utf8mb4