MySQL基礎教程:SELECT語句詳解
- 一、SQL概述
- 1.1 SQL背景知識
- 1.2 SQL語言排行榜
- 1.3 SQL分類
- 二、SQL語言的規則與規范
- 2.1 基本規則
- 2.2 大小寫規范
- 2.3 注釋
- 2.4 命名規則
- 2.5 數據導入
- 三、基本的SELECT語句
- 3.0 最簡單的SELECT
- 3.1 SELECT...FROM
- 3.2 列的別名
- 3.3 去除重復行
- 3.4 空值處理
- 3.5 著重號
- 3.6 查詢常數
- 四、顯示表結構
- 五、過濾數據
- 六、最佳實踐建議
- 總結
🌺The Begin🌺點點關注,收藏不迷路🌺 |
一、SQL概述
1.1 SQL背景知識
SQL(Structured Query Language,結構化查詢語言)是使用關系模型的數據庫應用語言,由IBM在上世紀70年代開發出來。作為一門已經存在45年的語言,SQL展現了驚人的生命力:
- 1974年:IBM研究員發布《SEQUEL:一門結構化的英語查詢語言》論文
- 標準化歷程:SQL-86 → SQL-89 → SQL-92 → SQL-99
- 兩個重要標準:SQL92和SQL99,至今仍被廣泛遵循
SQL之所以經久不衰,是因為它作為數據處理的通用語言,幾乎被所有關系型數據庫系統支持,包括MySQL、Oracle、SQL Server等。
1.2 SQL語言排行榜
在TIOBE編程語言排行榜中,SQL長期保持Top 10的位置,這證明了它在實際開發中的重要性。
1.3 SQL分類
SQL語言按功能主要分為三大類:
-
DDL(數據定義語言):用于定義數據庫對象
- 關鍵字:CREATE、DROP、ALTER等
-
DML(數據操作語言):用于數據操作
- 關鍵字:INSERT、DELETE、UPDATE、SELECT等
- 其中SELECT是最基礎且最重要的語句
-
DCL(數據控制語言):用于權限控制
- 關鍵字:GRANT、REVOKE等
此外,還有:
- DQL(數據查詢語言):專指SELECT查詢
- TCL(事務控制語言):COMMIT、ROLLBACK等
二、SQL語言的規則與規范
2.1 基本規則
-
書寫格式:
- 可以單行或多行書寫
- 建議子句分行寫并使用縮進
- 每條命令以
;
、\g
或\G
結束
-
關鍵字:
- 不能縮寫或分行
-
標點符號:
- 括號、引號必須成對出現
- 使用英文半角輸入
- 字符串和日期用單引號
- 列別名建議用雙引號
2.2 大小寫規范
- Windows:大小寫不敏感
- Linux:大小寫敏感
- 推薦規范:
- 數據庫名、表名、字段名等用小寫
- SQL關鍵字、函數名用大寫
2.3 注釋
MySQL支持三種注釋方式:
# 單行注釋(MySQL特有)
-- 單行注釋(--后必須有空格)
/* 多行注釋 */
2.4 命名規則
-
長度限制:
- 數據庫/表名≤30字符
- 變量名≤29字符
-
合法字符:A-Z、a-z、0-9、_
-
禁止事項:
- 名稱中包含空格
- 使用保留字(如必須使用,用``包圍)
2.5 數據導入
在命令行中使用source
指令導入SQL文件:
mysql> source d:/mysqldb.sql
三、基本的SELECT語句
3.0 最簡單的SELECT
SELECT 1; -- 返回常數1
SELECT 9/2; -- 返回計算結果4.5
3.1 SELECT…FROM
基本語法:
SELECT 列名1, 列名2
FROM 表名;
查詢所有列(不推薦生產環境使用):
SELECT * FROM departments;
查詢特定列:
SELECT department_id, location_id
FROM departments;
3.2 列的別名
為列指定別名的三種方式:
-- 方式1:使用AS關鍵字
SELECT last_name AS name FROM employees;-- 方式2:省略AS
SELECT last_name name FROM employees;-- 方式3:別名包含空格時用雙引號
SELECT salary*12 "Annual Salary" FROM employees;
3.3 去除重復行
使用DISTINCT
關鍵字:
-- 單列去重
SELECT DISTINCT department_id FROM employees;-- 多列組合去重
SELECT DISTINCT department_id, salary FROM employees;
注意:
- DISTINCT必須放在所有列名前
- DISTINCT對后面所有列的組合進行去重
3.4 空值處理
- 任何與NULL的運算結果都是NULL
- NULL ≠ 空字符串(NULL占用空間但長度為空)
示例:
SELECT employee_id, salary, commission_pct,12 * salary * (1 + commission_pct) "annual_sal"
FROM employees;
-- 當commission_pct為NULL時,計算結果為NULL
3.5 著重號
當標識符與關鍵字沖突時,使用``包圍:
-- 錯誤寫法
SELECT * FROM ORDER;-- 正確寫法
SELECT * FROM `order`;
3.6 查詢常數
可以在結果集中添加常數列:
SELECT '部門' AS corporation, last_name
FROM employees;
四、顯示表結構
使用DESCRIBE
或DESC
命令:
DESCRIBE employees;
-- 或
DESC employees;
輸出結果包含:
- Field:字段名
- Type:字段類型
- Null:是否允許NULL
- Key:索引類型(PRI/UNI/MUL)
- Default:默認值
- Extra:附加信息(如AUTO_INCREMENT)
五、過濾數據
使用WHERE子句進行條件過濾:
SELECT 字段1, 字段2
FROM 表名
WHERE 條件;
示例:
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90;
六、最佳實踐建議
- 避免使用SELECT *:只查詢需要的列
- 一致的命名規范:團隊統一大小寫規則
- 處理NULL值:使用IFNULL或COALESCE函數
- 注釋:復雜SQL添加必要注釋
- 格式化:保持SQL語句良好的可讀性
總結
SELECT語句作為SQL中最基礎也最重要的語句,掌握其各種用法是數據庫操作的基石。從簡單的數據查詢到條件過濾,SELECT語句提供了豐富靈活的數據檢索能力。理解并遵循SQL的書寫規范和最佳實踐,能夠幫助我們編寫出高效、可維護的數據庫查詢語句。
🌺The End🌺點點關注,收藏不迷路🌺 |