基本查詢
1,語句:
SELECT 查詢列表 FROM 表名
2、特點
1)查詢列表可以是:表中字段、常量值、表達式、函數。
2)查詢結果是一個虛擬表格。
- 查詢表中單個字段
SELECT last_name FROM employees;
- 查詢表中多個字段
SELECT last_name, email FROM employees;
- 查詢表中所有字段
SELECT * FROM employees;
- 起別名
- 使用AS
SELECT last_name AS 名 FROM employees;
- 使用空格
SELECT last_name 名 FROM employees;
- 去重
SELECT DISTINCT department_id FROM employees;
- mysql中+號僅僅只有一個功能:運算符。
select 100+90; 兩個操作數都爲數值型,則做加法運算
select ‘123’+90;只要其中一方爲字符型,試圖將字符型數值轉換成數值型
如果轉換成功,則繼續做加法運算
select ‘john’+90; 如果轉換失敗,則將字符型數值轉換成0
select null+10; 只要其中一方爲null,則結果肯定爲null
而mysql中拼接使用CONCAT:
SELECT CONCAT(字段) FROM employees;
案例:查詢員工名和姓連接成一個字段,並顯示爲 姓名
SELECT
CONCAT(last_name,first_name) AS 姓名
FROM
employees;
條件查詢
語句:
SELECT 查詢列表 FROM 表名 WHERE 篩選條件;
分類:
- 按條件表達式篩選
簡單條件運算符:> < = != <> >= <=
!= 與<>相同 但mysql推薦用<> - 按邏輯表達式篩選
邏輯運算符:&& || !
and or not - 模糊查詢
like
特點:一般和通配符搭配使用
通配符:
% 任意多個字符,包含0個字符
_ 任意單個字符
between and
①使用between and 可以提高語句的簡潔度
②包含臨界值
③兩個臨界值不要調換順序
in
含義:判斷某字段的值是否屬於in列表中的某一項
特點:
①使用in提高語句簡潔度
②in列表的值類型必須一致或兼容
③in列表中不支持通配符
is null
=或<>不能用於判斷null值
is null或is not null 可以判斷null值
like
#案例1:查詢員工名中包含字符a的員工信息
select
*
from
employees
where
last_name like '%a%';
#案例2:查詢員工名中第三個字符爲e,第五個字符爲a的員工名和工資
select
last_name,
salary
FROM
employees
WHERE
last_name LIKE '__n_l%';
#案例3:查詢員工名中第二個字符爲_的員工名
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_$_%' ESCAPE '$';
使用 ESCAPE 關鍵字定義轉義符。在模式中,當轉義符置於通配符之前時,該通配符就解釋爲普通字符。例如,要搜索在任意位置包含字符串 5% 的字符串,請使用:
WHERE ColumnA LIKE ‘%5/%%’ ESCAPE ‘/’
between and
#案例1:查詢員工編號在100到120之間的員工信息
SELECT
*
FROM
employees
WHERE
employee_id >= 120 AND employee_id<=100;
#----------------------
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 120 AND 100;
in
案例:查詢員工的工種編號是 IT_PROG、AD_VP、AD_PRES中的一個員工名和工種編號
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';
#------------------
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');
is null
#案例1:查詢沒有獎金的員工名和獎金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NULL;
排序查詢
語句:
select 查詢列表
from 表
order by 排序列表【asc|desc】
asc 升序 desc降序 如果不寫默認升序
按單個字段排序
SELECT * FROM employees ORDER BY salary DESC;
查詢員工信息 按年薪降序
SELECT *,salary*12*(1+IFNULL(commission_pct,0))
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
查詢員工信息 按年薪升序
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 ASC;
查詢員工信息,要求先按工資降序,再按employee_id升序
SELECT *
FROM employees
ORDER BY salary DESC,employee_id ASC;