1:基礎查詢
/*
語法:
select 查詢列表 from 表名;
類似於:System.out.println(打印東西);
特點:
1、查詢列表可以是:表中的字段、常量值、表達式、函數
2、查詢的結果是一個虛擬的表格
*/
USE myemployees;
#1.查詢表中的單個字段
SELECT last_name FROM employees;
#2.查詢表中的多個字段
SELECT last_name,salary,email FROM employees;
#3.查詢表中的所有字段
#方式一:
SELECT
`employee_id`,
`first_name`,
`last_name`,
`phone_number`,
`last_name`,
`job_id`,
`phone_number`,
`job_id`,
`salary`,
`commission_pct`,
`manager_id`,
`department_id`,
`hiredate`
FROM
employees ;
#方式二:
SELECT * FROM employees;
#4.查詢常量值
SELECT 100;
SELECT 'john';
#5.查詢表達式
SELECT 100%98;
#6.查詢函數
SELECT VERSION();
#7.起別名
/*
①便於理解
②如果要查詢的字段有重名的情況,使用別名可以區分開來
*/
#方式一:使用as
SELECT 100%98 AS 結果;
SELECT last_name AS 姓,first_name AS 名 FROM employees;
#方式二:使用空格
SELECT last_name 姓,first_name 名 FROM employees;
#案例:查詢salary,顯示結果爲 out put
SELECT salary AS "out put" FROM employees;
#8.去重
#案例:查詢員工表中涉及到的所有的部門編號
SELECT DISTINCT department_id FROM employees;
#9.+號的作用
/*
java中的+號:
①運算符,兩個操作數都爲數值型
②連接符,只要有一個操作數爲字符串
mysql中的+號:
僅僅只有一個功能:運算符
select 100+90; 兩個操作數都爲數值型,則做加法運算
select '123'+90;只要其中一方爲字符型,試圖將字符型數值轉換成數值型
如果轉換成功,則繼續做加法運算
select 'john'+90; 如果轉換失敗,則將字符型數值轉換成0
select null+10; 只要其中一方爲null,則結果肯定爲null
*/
#案例:查詢員工名和姓連接成一個字段,並顯示爲 姓名
SELECT CONCAT('a','b','c') AS 結果;
SELECT
CONCAT(last_name,first_name) AS 姓名
FROM
employees;
2:條件查詢
/*
語法:
select
查詢列表
from
表名
where
篩選條件;
分類:
一、按條件表達式篩選
簡單條件運算符:> < = != <> >= <=
二、按邏輯表達式篩選
邏輯運算符:
作用:用於連接條件表達式
&& || !
and or not
&&和and:兩個條件都爲true,結果爲true,反之爲false
||或or: 只要有一個條件爲true,結果爲true,反之爲false
!或not: 如果連接的條件本身爲false,結果爲true,反之爲false
三、模糊查詢
like
between and
in
is null
*/
#一、按條件表達式篩選
#案例1:查詢工資>12000的員工信息
SELECT
*
FROM
employees
WHERE
salary>12000;
#案例2:查詢部門編號不等於90號的員工名和部門編號
SELECT
last_name,
department_id
FROM
employees
WHERE
department_id<>90;
#二、按邏輯表達式篩選
#案例1:查詢工資z在10000到20000之間的員工名、工資以及獎金
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE
salary>=10000 AND salary<=20000;
#案例2:查詢部門編號不是在90到110之間,或者工資高於15000的員工信息
SELECT
*
FROM
employees
WHERE
NOT(department_id>=90 AND department_id<=110) OR salary>15000;
#三、模糊查詢
/*
like
between and
in
is null|is not null
*/
#1.like
/*
特點:
①一般和通配符搭配使用
通配符:
% 任意多個字符,包含0個字符
_ 任意單個字符
*、
#案例1:查詢員工名中包含字符a的員工信息
select
*
from
employees
where
last_name like '%a%';#abc
#案例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 '$';
#2.between and
/*
①使用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;
#3.in
/*
含義:判斷某字段的值是否屬於in列表中的某一項
特點:
①使用in提高語句簡潔度
②in列表的值類型必須一致或兼容
③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');
#4、is null
/*
=或<>不能用於判斷null值
is null或is not null 可以判斷null值
*/
#案例1:查詢沒有獎金的員工名和獎金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NULL;
#案例1:查詢有獎金的員工名和獎金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NOT NULL;
#----------以下爲×
SELECT
last_name,
commission_pct
FROM
employees
WHERE
salary IS 12000;
#安全等於 <=>
#案例1:查詢沒有獎金的員工名和獎金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct <=>NULL;
#案例2:查詢工資爲12000的員工信息
SELECT
last_name,
salary
FROM
employees
WHERE
salary <=> 12000;
#is null pk <=>
IS NULL:僅僅可以判斷NULL值,可讀性較高,建議使用
<=> :既可以判斷NULL值,又可以判斷普通的數值,可讀性較低