文章目錄
- 前言
- 進階一、基礎查詢 select
- 1.查詢表中的單個欄位
- 2.查詢表中的兩個欄位
- 3.查詢表中的多個欄位
- 4.查詢表中的所有欄位
- 5.查詢常量值
- 6.查詢運算式
- 7.查詢函式運算式
- 8.起別名
- 9.去重
- 10.+的作用
- 11.拼接(concat())
- 12.ifnull()的使用
- 進階二、where(條件查詢)
- 相關知識介紹
- 1.語法
- 2.分類:
- 3.模糊查詢
- 一、按條件運算式篩選
- 二、按邏輯運算式篩選
- 三、模糊查詢
- 相關知識
- 1.like
- 2.between and
- 3.in
- 4.is
- 5.安全等于 <=>
前言
首先寫此博客肯定會有案例的舉出,所以就必須要有資料,在這里我就用我自己擁有的資料進行舉例,在這里我給出了我使用的資料,需要的話可以自己自行的下載使用(在這里使用的是myemployees.sql)
鏈接: https://pan.baidu.com/s/1a_wstxPVhxeliZkt6-BTiw
提取碼: gaj8
進階一、基礎查詢 select
1.查詢表中的單個欄位
SELECT employee_id FROM employees;
2.查詢表中的兩個欄位
SELECT last_name,employee_id FROM employees;
3.查詢表中的多個欄位
SELECT
`employee_id`,
`first_name`,
`last_name`,
`email`
FROM
employees;
4.查詢表中的所有欄位
SELECT * FROM employees;
5.查詢常量值
SELECT 100;
6.查詢運算式
SELECT 100*3;
7.查詢函式運算式
SELECT VERSION();
8.起別名
SELECT last_name AS 姓 FROM employees;#方式一(用AS)
SELECT last_name 姓 FROM employees;#方式二(用空格)
SELECT last_name "out poot" FROM employees;#特殊的(別名里面有關鍵字的時候)
| 起別名的好處: ①便于觀看理解 ②如果查詢的欄位有重名的情況可以使用別名區分開來 |
9.去重
SELECT DISTINCT department_id FROM employees;
10.+的作用
| 在JAVA中的作用: |
①做運算子,如果兩個為數值的話
②做連接符,如果有一個運算元為字串的話
| 在MySQL中的作用: |
select 100+20 # 兩個都為數值的話則做加法的運算
select ‘100’+20 #如果有一個為字符型,則嘗試將字符型轉換為整數型,如果轉換成功的話
select ‘join’+20 #如果轉換失敗的話,則將字符型變為0
select null+20 #只要有null,其結果肯定為null
11.拼接(concat())
SELECT CONCAT(`first_name`,':',`last_name`) 姓名 FROM employees;
12.ifnull()的使用
SELECT IFNULL(`commission_pct`,0) 結果 , `commission_pct` FROM employees;
進階二、where(條件查詢)
相關知識介紹
1.語法
select
查詢串列
from
表名
where
篩選條件
(執行順序是先是去找表名,然后再經過篩選條件,再進入到查詢串列)
2.分類:
一、按條件運算式篩選
< = >= <= != <>
二、按邏輯運算式篩選
邏輯運算子:用于連接條件運算式的,
&& || !
and or not
&&和and:如果兩個為true就為true,反之為false,
||和or:如果有一個為false就為false,反之為true,
!和not:如果為true則結果為false,反之為true,
3.模糊查詢
like
between and
in
is null/is not null
一、按條件運算式篩選
##案例一,選取工資大于12000的員工
SELECT * FROM employees WHERE salary>12000;
#案例二,選取部門編號不等于90的部門編號和員工名
SELECT
CONCAT(`first_name`,':',`last_name`) AS 姓名,`department_id` AS 部門
FROM
`employees`
WHERE
`department_id`<>60;
二、按邏輯運算式篩選
#案例一、工資在1萬-2萬之間的員工的員工名,工資以及獎金
SELECT
CONCAT(`first_name`,':',`last_name`) 姓名,
salary AS 工資,
commission_pct 獎金
FROM
`employees`
WHERE
salary>10000 AND salary<20000;
#案例二、查詢部門編號不在90-110之間,或者工資高于15000的所有的員工的資訊
SELECT
*
FROM
employees
WHERE
NOT(`department_id`>=90 AND `department_id`<=110) OR salary > 15000;
三、模糊查詢
相關知識
like
特點
①一般和通配符搭配使用
通配符:
%:表示任意多個字符,包含0個字符
_: 表示任意單個字符
between and
in
is null/is not null
1.like
#案例一、查詢員工中包含字母b的員工名資訊
SELECT
CONCAT(`first_name`,':',`last_name`) AS 姓名
FROM
employees
WHERE
last_name LIKE '%b%';
#案例二、查詢員工中第一個b第三個為i的員工名資訊
SELECT
CONCAT(`first_name`,':',`last_name`) AS 姓名
FROM
employees
WHERE
last_name LIKE 'b_i%';
#案例三、查詢第三個為_的員工名(特殊的情況,因為_為關鍵字,所以需要用到轉義符(ESCAPE))
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_@_%' ESCAPE '@';
2.between and
| 需要注意的是: |
①可以提高陳述句的簡潔度
②包含臨界值
③臨界值的數值順序不能調換
#案例一,查詢運功編號在90-120之間的所有員工的姓名
SELECT
`last_name` 姓名,
`employee_id` ID
FROM
employees
WHERE
`employee_id` BETWEEN 90 AND 120;
3.in
含義:判斷某欄位的值是否屬于in串列中的某一項
特點:
①:提高陳述句陳述句的簡潔度
②:in串列的值必須一致或者兼容
#案例,查詢查詢員工的工種編號是IT_PROG、AD_VP、AD_PRES的員工名和工種編號
SELECT
`last_name`,
`job_id`
FROM
`employees`
WHERE
`job_id` IN ('IT_PROT','AD_VP','AD_PRES');
4.is
| 需要注意的點: |
=或<>不能判斷null值
is null或is not null可以判斷null值
#案例一、查詢沒有獎金的員工名和獎金率
SELECT
`last_name`,
`commission_pct`
FROM
`employees`
WHERE
`commission_pct` IS NULL;
#案例二、查詢有獎金的員工名和獎金率
SELECT
`last_name`,
`commission_pct`
FROM
`employees`
WHERE
`commission_pct` IS NOT NULL;
5.安全等于 <=>
| 需要注意的點: |
is null 僅僅判斷null值的,可讀性較高,推薦使用
<=> 不僅可以判斷null值,還可以判斷普通的數值,可讀性較低
#案例一、查詢沒有獎金的員工名和獎金率
SELECT
`last_name`,
`commission_pct`
FROM
`employees`
WHERE
`commission_pct` <=> NULL;
#案例二、查詢工資為12000的員工名和工資
SELECT
`last_name`,
`salary`
FROM
`employees`
WHERE
`salary` <=> 12000;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/342258.html
標籤:其他
