DQL语言(数据库查询语言)

 一、基础查询

语法:

select 查询列表 from 表名;

   

特点:
列表可以是:表中的字段、常量值、表达式、函数

查询的结果是一个虚拟的表格

1、查询单个字段

select last_name from employees;

2、查询表中的多个字段

select last_name,salary,email from employees;

3、查询所有数据

select * from employees;

4、查询常量、表达式、函数

select 常量;

select 100*98;

select version();

5、起别名

  1. 方式一: 使用as 作为关键字

    select last_name as ,first_name as from employees;

  2. 方式二:使用空格

    select last_name ,first_name from employees;

  3. 当关键字作为别名时要添加单引号或者是双引号

    select salary as 'out put' from employees;

6、去重

#案例 查询所有部门的编号

select DISTINCT department_id from employees;

7+号的作用

mysql中加号只有一个作用那就是运算符

#案例

select 100+90; 只要两个都为数值型者可以进行加法运算

select '123'+90; 如果其中一方是字符类型的则试图将字符类型的转换成数值类型,

如果转换成功就继续进行加法运算

select 'json'+90; 如果失败则将字符类型的赋值为0,并进行加法运算

select null+90; 只要一方为null那么结果为null

8、拼接

select CONCAT(last_name,first_name) as 姓名;

#如果拼接的字段为null,那么都会为null

   

9、如果为空

select ifnull(commission_pct,0) as 奖金率 commission_pct from employees;

#案例 语句的嵌套使用

select CONCAT(last_name,first_name,'job_id',ifnull(commission_pct,0)) as out_put from employees;

二、条件查询

1、语法规则

select 查询列表 from 表名 where 查询条件;

2、分类

#按照条件表达式筛选

简单条件运算符:>,<,<>,=,!=,>=,<=(其中<>!=相等)

#按照逻辑表达式筛选

#使用and连接两个条件

三、模糊查询

1、like

特点可以搭配任意通配符使用

通配符:

% 任意多个字符,包含0个字符

_ 任意单个字符

#案例查找名字中包含a的人;

select * from employees where last_name like '%a%';

#案例 查询第三个字有o的名字

select * from employees where last_name like '__o%';

#案例 查询名字中包含下划线的名字;

select * from employees where last_name like '_\_%';

select * from employees where last_name like '_$_%' escape '$';// escape将$变成转义符

2between and

  • 使用between and 可以提高代码简洁度
  • 包含临界点
  • 临界点不能调换顺序

3、in

判断某字段的值是否属于in列表中的某一列

含义:

  • 使用in比使用or提高
  • in列表中的值必须与in类型保持一致

#案例

查询工种为 IT_PROT,AD_VP的人

   

select * from employees where last_name like '_$_%' escape '$';

4is null

判断是否为空

#案例 判断是否奖金为空

select last_name,salary,commission_pct from employees where commission_pct is null;

#案例 判断工资是12000的员工

select last_name,salary,commission_pct from employees where salary <=> 12000;

is null 比较 <=>

Is null 只能就比较null值 可读性较高 建议使用

<=> 可以比较不同的值,不只限于null 可读性较差

4、排序查询

语法:

select 查询列表

from 表名

where 筛选条件】

order by 排序列表 asc|desc

   

#1、按单个字段排序

SELECT * FROM employees ORDER BY salary DESC;

   

#2、添加筛选条件再排序

   

#案例:查询部门编号>=90的员工信息,并按员工编号降序

   

SELECT *

FROM employees

WHERE department_id>=90

ORDER BY employee_id DESC;

   

   

#3、按表达式排序

#案例:查询员工信息 按年薪降序

   

   

SELECT *,salary*12*(1+IFNULL(commission_pct,0))

FROM employees

ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

   

   

#4、按别名排序

#案例:查询员工信息 按年薪升序

   

SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪

FROM employees

ORDER BY 年薪 ASC;

   

#5、按函数排序

#案例:查询员工名,并且按名字的长度降序

   

SELECT LENGTH(last_name),last_name

FROM employees

ORDER BY LENGTH(last_name) DESC;

   

#6、按多个字段排序

   

#案例:查询员工信息,要求先按工资降序,再按employee_id升序

SELECT *

FROM employees

ORDER BY salary DESC,employee_id ASC;

  

猜你喜欢

转载自www.cnblogs.com/yuknight/p/12744617.html