**

基础查询

**

```sql


#1.显示常量

SELECT 100;

SELECT 'john';

 

#2.显示表达式

SELECT 98*23;

 

#3.显示函数(方法)

SELECT LENGTH('john');

SELECT VERSION();

 

#4.显示表中的字段

SELECT last_name FROM employees;

 

#5.显示表中的多个字段

SELECT `last_name`,`phone_number`,`first_name`,`salary`,`commission_pct`,`manager_id`

FROM `employees`;

 

#6.显示表中所有字段

SELECT * FROM employees;

 

#7.起别名

#方式一:

SELECT last_name AS 姓,first_name AS 名 FROM employees;

 

#方式二:

SELECT last_name 姓,first_name  名 FROM employees;

 

#示例:别名:out name

SELECT last_name 
"out name" FROM employees;

 

#8.如何去重

#查询employees表中的所有部门编号

-- distinct

SELECT DISTINCT department_id FROM employees;
**

## 条件查询

**

```sql


#条件查询

/*

概念:根据指定的条件过滤出数据

语法:

select 字段 from 表名

where 条件;

 

分类:

1、按条件表达式查询

条件运算符:

> 、< 、>=、 <=、 =、 !=、 <>、 ,<=>安全等于,用于判断是否为null

 

2、按逻辑表达式查询

逻辑运算符:

and、&&  两个条件都为true,结果为true,反之为false

or、||  两个条件只要有一个为true,结果为true,反之为false

not、!   如果连接的条件本身为false,结果为true,反之为false

 

//优先级

not > and > or

 

3、模糊查询:

*/

 

#一、按条件表达式查询

 

#案例1:查询月薪>5000的员工信息

SELECT * FROM employees WHERE salary>5000;

 

#案例2:查询月薪=12000的员工信息

SELECT * FROM employees WHERE salary=12000;

 

#案例  查询月薪不等于12000的员工信息

SELECT * FROM employees WHERE salary<>12000;

 

#案例3:查询没有奖金的员工名

SELECT last_name,commission_pct FROM employees

 WHERE
commission_pct<=>NULL;

 

 

#二、按逻辑表达式查询

 

#案例1:查询月薪在5000到12000的员工工资和姓名

SELECT salary,last_name FROM employees WHERE
salary>= 5000 AND
salary<=12000;

 

#案例2:查询月薪不在5000到12000的员工工资和姓名

SELECT salary,last_name FROM employees WHERE NOT(salary>= 5000 AND
salary<=12000);

 

#案例3:查询部门编号=90 或 月薪>10000并且月薪<15000的员工信息

SELECT * FROM employees WHERE department_id = 90 OR (salary>10000 AND salary<15000);

 

-- 随机数

SELECT CEIL(RAND()*30);

**

模糊查询

**

#模糊查询

/*

1.like

一般搭配着通配符使用,用作字符型的判断

通配符:

% 任意多个字符

_ 任意单个字符 
1  

 

2.between
and

特点:在...之间

①等价于 使用  字段>=值1 and 字段<=值2

②两个临界值是包含的 
[1,10]  

③两个临界值不能颠倒顺序

 

3.in            

特点:判断某个字段的值是否在某个列表内

in(值1,值2,...)

 

等价于 
or 

 

 

4.is null/is not null

*/

 

 

#1.like

 

#案例1:查询姓名中包含字符 e的员工信息

SELECT * FROM employees

WHERE last_name LIKE '%e%';

 

#案例2:查询姓名中第二个字符为e,第四个字符为a的员工信息

SELECT * FROM employees

WHERE last_name LIKE '_e_a%';

 

#案例3:查询姓名中第三个字符为_的员工信息

SELECT * FROM employees

WHERE last_name LIKE '__\_%';

 

// 斜线                         \  ->  
window  斜线

                                /  ->   
Linux 斜线

// 反斜线 

 

 

#ESCAPE 自定义 转移符

SELECT * FROM employees

WHERE last_name LIKE '__$_%' ESCAPE '$';

 

// ESCAPE '$';  这句话是 让$ 拥有转义字符的形式和功能

 

UPDATE employees SET last_name='' '' WHERE
employee_id=100;

 

 

 

#2.between and

 

#案例1:显示出表employees部门编号在80-100之间 的姓名、职位

SELECT last_name,job_id,department_id

FROM employees

WHERE department_id BETWEEN
80 AND 100;

 

WHERE department_id BETWEEN
100 AND 80;  ×

 

 

#等价于

SELECT last_name,job_id,department_id

FROM employees

WHERE department_id<=100 AND department_id>=80;

 

 

#3.in

#案例1:显示出表employees的manager_id
是 100,101,110 的员工姓名、职位

 

SELECT last_name,job_id,manager_id

FROM employees

WHERE manager_id IN(100,101,110);

 

#等价于

SELECT last_name,job_id,manager_id

FROM employees

WHERE manager_id=100 OR manager_id=101 OR manager_id = 110;

 

#案例2:查询
job_id 为AD_VP或ST_MAN或SA_MAN

SELECT last_name,job_id,manager_id

FROM employees

WHERE job_id IN('AD_VP','S_\_MAN');# ×

 

#4.is null / is not null

 

#案例1:查询没有奖金的员工

SELECT * FROM employees

WHERE commission_pct IS NULL;

 

 

#案例2:查询有奖金的员工

SELECT * FROM employees

WHERE commission_pct  IS
NOT  NULL;

 

SELECT * FROM employees

WHERE NOT(commission_pct  IS   NULL);

 

SELECT * FROM employees WHERE last_name IS NULL;

排序查询

#排序查询

/*

语法:

select 字段|表达式|常量

from 表

【where 条件】

order by 排序的字段;

 

1. 升序 asc

  降序 desc

  默认是 升序asc

  

2.可以按表达式、函数、别名、多个字段进行排序

3.一般来讲order by放到查询的语句的最后,在不使用分页的情况下

*/

 

#一、按单个字段进行排序

SELECT * FROM employees ORDER BY salary ;

SELECT * FROM employees ORDER BY salary DESC;

 

 

#二、按多个字段进行排序

SELECT * FROM employees

ORDER BY salary DESC,employee_id ASC;

 

 

#三、按表达式排序

#案例:按年薪降序

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 年薪 DESC;

 

 

#五、按函数排序

#案例:按姓名中的字节长度大小降序

SELECT last_name,LENGTH(last_name)

FROM employees

ORDER BY LENGTH(last_name) DESC;