mysql基礎知識(三)

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值,又可以判斷普通的數值,可讀性較低

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章