使用Mysql 的基礎查詢語句
``名稱等東西可以加上這個
1. show
use 數據庫名; #進入數據庫
show database; #顯示數據庫
show table; # 顯示所有表
show COLUMNS FROM 表名# 顯示錶列
SHOW STATUS,用於顯示廣泛的服務器狀態信息;
SHOW GRANTS; #顯示授予用戶的權限
SHOW ERRORS和SHOW WARNINGS; #用來顯示服務器錯誤或警告消息。
desc 表名; #查詢表結構
2. SELECT
SELECT 列名1,列名2 from 表名; # 查看錶中多個列的元素
SELECT * FROM 表名; # *通配符 所有列
SELECT DISTINCT id FROM TABL_E; #去重放在列名前面
# distinct
SELECT ID FROM TABL_E LIMIT 5; #前5個行
SELECT ID FROM TABL_E LIMIT 5, 5; #從第5行開始的後5個行,行是從0開始的
SELECT ID FROM TABL_E LIMIT 5 OFFSET 1; #從第1行開始的後5個行,行是從0開始的
SELECT TABL_E.ID FROM TABL_E; #完全限定列名
# 查詢常量值
SELECT 100;
SELECT 'ssa';
# 查詢表達式
SELECT 100%98;
# 查詢函數
SELECT VERSION();
# 起別名
/*
便於理解
如果查詢字段有重名的情況,使用別名可區分
也可以只加空格
加雙引號可以區分
*/
SELECT 100%98 AS 結果;
SELECT last_name AS 姓, first_name AS 名 FROM emp;
SELECT last_name "姓", first_name 名 FROM emp;
SELECT DISTINCT last_name "姓", first_name 名 FROM emp; 去重
SELECT CONCAT('a','b','c') AS 結果; # 如果有null就會自動顯示null
# 連接
/*
結果
abc
*/
SELECT
IFNULL(sid, 0) AS id, # 如果爲空換成什麼值
CONCAT(sid,',', cid) #其實就像c++中的 cout << 一樣;
FROM
sc ;
不能部分使用DISTINCT, DISTINCT關鍵字應用於所有列而 不僅是前置它的列。如果給出SELECT DISTINCT vend_id, prod_price,除非指定的兩個列都不同,否則所有行都將被 檢索出來。
3. 排序數據
sql語句是由子句構成的 通常一個人關鍵字和所提供數據組成
SELECT ID FROM TABL_E ORDER BY ID;
# order這條語句除了指示MySQL對prod_name列以字母順序排序數據的ORDER BY子句外,與前面的語句相同
3.1 多級排序
就連着在後面寫就行了
SELECT ID, Iv, Ix FROM TABL_E ORDER BY ID, Iv, Ix; #會先按ID在按Iv在按Ix排序
- 排序方向:
SELECT ID,Iv FROM TABL_E ORDER BY ID DESC; #降序desc 降序關鍵字只需要放在需要對應的列後面
SELECT ID,Iv FROM TABL_E ORDER BY ID DESC, Iv;
# ID 降序 Iv沒有
#ASC升序 默認升序
-
組合找最值
SELECT ID,Iv FROM TABL_E ORDER BY ID DESC LIMIT 1; # 最高的以此可以知道如何找最低的 limit 必須放在orderby 之後
3.2 條件查詢
/*
語法:
select
查詢列表 3
form
表名 1
where #r如同if 表達的結果不是true就是false
篩選條件; 2
*/
/*
一按條件表達式篩選
條件運算符: >< = != <= >=
二邏輯表達式
&& || !
and or not
模糊表達式
like
between and
in
is null
*/
# 查詢大於12000的信息
SELECT
*
FROM
emp
WHILE
salary > 12000 ;
# 查看不等於90的
SELECT
*
FROM
emp
WHERE
dep_id!=90; 或者 dep_id<>90;
- 按邏輯表達式
- 用於連接條件表達式的
# 90到100之間
SELECT
*
FROM
emp
WHERE
dep_id >= 90 AND dep_id <= 100;
# id 不是在90到100之間的,或者工資高於 cs 不等於90的
SELECT
*
FROM
emp
WHERE
NOT(90 <= dep_id AND dep_id <= 100) OR cs != 90;
-
模糊查詢
like between and in is null | is not null # like 一般跟通配符一起用 % 任意多個字符 包含0, not null _ 任意單個字符 \ 如果要轉義就用 也可以自己設置 ESCAPE '$' # 查詢包含字母c的信息 SELECT * FROM emp WHERE name_s LIKE '%c%'; # %->是通配符 # 查第二個字符是c的 SELECT * FROM emp WHERE name_s LIKE '_c%'; # %->是通配符
# between and # 90-100 # 包含臨界值 # 必須從左到右 SELECT * FROM emp WHERE dep_id BETWEEN 90 AND 100; # in SELECT * FROM emp WHERE dep_id = 90 OR dep_id = 100 OR dep_id = 110; # -------------------------------------------------------- # 判斷是否屬於in內的值 SELECT * FROM emp WHERE dep_id IN(90, 100, 110);
-
is null | is not null
等於和普通的運算符不能判斷null值
-
SELECT
*
FROM
emp
WHERE
cs is null;
-
安全等於
<=>
: 這個可以用null和普通值
SELECT * FROM emp WHERE cs <=> null;