mysql回顾之:2、 mysql查询指令集

DQL语言(查询)

简单基础查询

#建议语法格式

SELECT
	属性及条件
FROM
	表名;  

以下为方便集中显示,避免占行太多,未进行语法格式化

PS:如果使用的为navicat工具,可在新建查询中,选择美化SQL进行语法格式化(SQL命令界面无法进行美化操作)。

#1、模糊查询表中所有内容
#语法
select * from 表;
#例
select * from zp;

#2、查询表中的单个字段
#语法
select 字段名 from 表;
#例
select name from zp;

#3、查询多个字段
#语法
select 字段名1,字段名2 from 表;
#例
select name,id from zp;

#4、查询表达式
#语法
select 表达式;
#例
select 100%99;

#5、查询函数
#语法
select 函数名;
#例
select version();

#6、起别名
#语法
select 属性 as 别名;
#例
select last_name as 姓,first_name as 名 from employees;

#7、去重
#关键字distinct
#例
select distinct department_id from employees;

#8、拼接查询
#语法
select concat(’a’.’b’) as 姓名 from employees;  #a与b为字段,employees为表,姓名为新表的名字,返回的结果
#例
select concat(last_name,first_name) as 姓名 from employees;

#9、去null值
#例(如果其中一个为null,则此行字段均为null,使用ifnull,可以拟定返回结果)
select
	ifnull(commission_pct,0) as 奖金率,commission_pct
from
	employees;

条件查询

语法

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

按条件表达式筛选

/*条件表达式
>	<	=	!=	<>	>=	<=
*/

#例1(查询工资大于12000的员工)
select
	*
from
	employees
where
	salary>12000;

#例2(查询部门编号大于90的员工)
select
	last_name,
	department_id
from
	employees
where
	department_id >=90;

按逻辑表达式筛选

/*逻辑表达式
&&	||	!
and	or	not
&&和and:两个条件均为true,结果为true,反之则为false
||或or:只要有一个条件为true,结果为true,反之则为false
*/

#例1(查询工资在10000-20000之间的员工姓名、工资及奖金)
SELECT
	last_name,
	salary,
	commission_pct
FROM
	employees
WHERE
	salary >=10000
AND
	salary <=20000;
	
#例2(查询部门编号不是在90到110之间的,或者工资高于15000的员工信息)
SELECT
	*
FROM
	employees
WHERE
	department_id < 90 OR department_id > 110 OR salary >= 15000;

#同
SELECT
	*
FROM
	employees
WHERE
	NOT(department_id >= 90 AND department_id <= 110) OR salary >= 15000;

模糊查询

/*逻辑表达式
like
between and
in
is null
*/

#1、like
-- 例:查询员工名中包含字符a的员工信息(%为通配符)
SELECT
	*
FROM
	employees
WHERE
	last_name LIKE '%a%';

-- 例:查询员工名中第三个字母为n,第5个字母为l的员工信息
SELECT
	last_name,
	salary
FROM
	employees
WHERE
	last_name LIKE '__n_l%';

-- 同(其中a为替换值,并不唯一)
SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_a_%' ESCAPE "a";
	#2、between and(between and包含临界值即取等号)
-- 例:查询员工编号在100到120之间的员工信息 
 SELECT
 	*
 FROM
	employees
 WHERE
	employee_id >= 100 AND employee_id <=120;

-- 同
SELECT
	*
FROM
	employees
WHERE
	employee_id  BETWEEN 100 AND 120;

#3、in
	
-- 例:查询员工的工种编号是IT_PROG,AD_VP,AD_PRES中的一个员工名和员工种编号

 SELECT
 	last_name,
 	job_id
 FROM
 	employees
 WHERE
 	job_id = "IT_PROG" OR job_id = "AD_VP" OR job_id = "AD_PRES";

-- 同
SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id IN ("IT_PROG" , "AD_VP" , "AD_PRES");

#3、is null
-- 例:查询没有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;
	
-- 例:查询有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NOT NULL;


#4、安全等于<=>
-- 例:查询工资为12000的员工信息
SELECT
	last_name,
	salary
FROM
	employees
WHERE
	salary <=> 12000;
	
is null :仅仅只能判断null值,可读性较高
<=>		:即可以判断null值,又可以判断普通的数值,可读性较低

排序查询

语法

select 
	查询列表
from
	表名
where
	筛选条件
order by 排序列表 asc|desc;#asc表示升序,desc表示降序

排序查询

-- 1、案例:查询员工信息,要求工资从高到低排序
SELECT
	*
FROM
	employees
ORDER BY
	salary DESC;

-- 2、案例:查询部门编号大于等于90的员工信息,按入职先后时间进行排序
SELECT
	*
FROM
	employees
WHERE
	department_id >= 90
ORDER BY
	hiredate DESC;

-- 3、案例:按年薪的高低显示员工的信息年薪(按表达式排序)
SELECT
	*,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
	employees
ORDER BY
	salary*12*(1+IFNULL(commission_pct,0)) DESC;

-- 4、案例:按年薪的高低显示员工的信息年薪(按别名排序)
SELECT
	*,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
	employees
ORDER BY
	年薪 DESC;

-- 5、案例:按姓名的长度显示员工的姓名和工资(按函数排序)
SELECT 
	LENGTH(last_name) AS 字节长度,last_name,salary
FROM
	employees
ORDER BY
	LENGTH(last_name) DESC;

-- 6、案例:查询员工信息,要求先按工资排序,再按员工编号排序(按多个字段排序)
SELECT 
	*
FROM
	employees
ORDER BY
	salary ASC,employee_id DESC;

PS:以上回顾为尚硅谷mysql视频所得,数据库资源为以下脚本导入,后续有关DQL语言持续更新!

链接:https://pan.baidu.com/s/1phXCZ7eaMiuwNjCaHXnwXg
提取码:dq98

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值