基本查詢 條件查詢 排序查詢

基本查詢

1,語句:

SELECT 查詢列表 FROM 表名

2、特點
1)查詢列表可以是:表中字段、常量值、表達式、函數。
2)查詢結果是一個虛擬表格。

  • 查詢表中單個字段
SELECT last_name FROM employees;
  • 查詢表中多個字段
SELECT last_name, email FROM employees;
  • 查詢表中所有字段
SELECT * FROM employees;
  • 起別名
  1. 使用AS
SELECT last_name ASFROM employees;
  1. 使用空格
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 篩選條件;

分類:

  1. 按條件表達式篩選
    簡單條件運算符:> < = != <> >= <=
    != 與<>相同 但mysql推薦用<>
  2. 按邏輯表達式篩選
    邏輯運算符:&& || !
    and or not
  3. 模糊查詢
    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 查詢列表

fromorder 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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章