MySQL基础学习(二)——基础查询、条件查询(if、casewhen子句)和排序查询

本文详细介绍了DQL(数据库查询语言)的基础使用,包括单字段和多字段查询、常量与表达式、函数应用、别名设置、去重、运算符及模糊查询。此外,深入讲解了条件查询的逻辑表达式和模糊匹配,以及如何结合排序进行数据展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DQL语言使用总结

前言

该篇介绍了DQL语言的使用,DQL:数据库查询语言。关键字:SELECT … FROM … WHERE。

1、基础查询

语法:select 查询的东西 from 表名;

  • 查询的列表可以是:表中的字段、常量值、表达式、函数
  • 查询的结果是一个虚拟的表格
  • 查询前最好加上所使用的的库USE 库名;
  • 用着重号来区分字段和关键字,加着重号的就是字段
    USE myemployees;
(1)查询表中的单个字段
SELECT last_name FROM employees;
(2)查询表中的多个字段
SELCET last_name,salary,email FROM employees;
(3)查询表中的所有字段
SELECT * FROM employees;
(4)查询常量值
SELECT 100;
SELECT 'Joln';
(5)查询表达式
SELECT 100*98;
(6)查询函数
SELECT VERSION();
(7)起别名:便于理解、易区分
#方式一
SELECT 100*98 AS 结果;
SELECT last_name AS,first_name AS, FROM employees;
#方式二
SELECT last_name 姓 ,first_name 名, FROM employees;
#别名中有特殊符号则需要双引号
SELECT salary AS "out put" FROM employees;
(8)去重
#查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees;
(9)加号的作用:在mysql中只有运算符的作用
#两个操作数都为数值型,则做加法运算
SELECT 100+90;
#其中一方为字符型,则将其转换为数值型,转换成功继续做加法运算,转换失败则字符型值转换成0
SELECT '123'+90;
SELECT 'you'+90;
#只要一方为null,则结果肯定为null;
SELECT null+2;
(10)连接符号
SELECT CONCAT (last_name,frist_name) AS 姓名 FROM employees;

2、条件查询

语法:select 查询列表 from 表名 where 筛选条件

  • 按条件表达式筛选:>、 < 、= 、<>、 >=、 <=
  • 按逻辑表达式筛选:and、or、not
  • 模糊查询:like、between and、in、is null
(1)按条件表达式查询
#查询工资>12000的员工信息
SELECT * FROM employees WHERE salary>12000;
#查询部门编号不等于90号的员工名和部门编号
SELECT last_name,department_id FROM employees WHERE department<>90;
(2)按逻辑表达式筛选:用于连接条件表达式
  • and:两个条件都为true,结果为true,反之为false
  • or:只要有一个条件为true,结果为true,反之为false
  • not:如果连接的条件本身为false,结果为true,反之为false
#查询工资在10000-20000之间的员工名和工资以及奖金
SELECT last_name,salary,commission_pct 
FROM   employees
WHERE  salary>=10000
AND    salary<=20000;
#查询部门编号不是在90到100之间,或者工资高于15000的员工信息
SELECT * FROM employees
WHERE NOT(department_id>=90 AND department_id<=100) OR salary>15000;

(3)模糊查询——特殊的条件运算符
  • like:与通配符搭配使用,如%任意多个字符(包含0个字符)、_ 任意单个字符
#查询员工名中包含字符a的员工信息
SELECT * FROM employee
WHERE last_name LIKE '%a%';   #字符串必须用单引号
#查询员工名中第三个字符为e,第五个字符为a的员工信息
SELECT * FROM employee
WHERE last_name LIKE '__e_a%';
#查询出员工名中第二个字符为_的员工名
SELECT * FROM employee
WHERE last_name LIKE '_\_%';  #\为转译符
#------------------------------------------
SELECT * FROM employee
WHERE last_name LIKE '_$_%' ESCAPE '$';  #指定某一字符为转译字符
  • between and:包含临界值,临界值不能颠倒顺序
#查询员工编号在100-120之间的员工信息
SELECT * FROM employee
WHERE  employee_id >= 100 AND employee_id <=120;
#--------------------------------------------------
SELECT * FROM employee
WHERE  employee_id BETWEEN 100 AND 120;
  • in:用于去判断某字段的值是否属于in列表中的某一项,使用in提高语句简洁度,in列表的值类型必须统一或者兼容,不可以用通配符
#查询员工的工种编号是a,b,c,d中的一个的员工名和工种编号
SELECT last_name,job_id
FROM employees
WHERE  job_id=a or job_id=b or job_id=c or job_id=d;
#-----------------------------------------------------
SELECT last_name,job_id
FROM employees
WHERE  job_id IN ('a','b','c','d');
  • is null:=或<>不能用于判断null值,用is null和is not 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;
  • 安全等于 <=> :用的比较少,既可以判断null也可以判断普通数值
#查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees
WHERE  commission_pct <=> NULL;
#查询工资为12000的员工信息
SELECT * FROM employees WHERE salary <=> 12000;
  • ifnull : 两个参数ifnull(a,123)表示如果a为null则转为123。
#查询员工号为176的员工的名字工号和年薪
SELECT last_name,
       department_id,
       salary*12*(1+ifnull(commssion_pct,0))
FROM employees
WHERE job_id=176;

案例面试题

试问 select * from employees; 和  select * from employees; where commission_pct like '%%' and last_name like '%%'结果是否一样?并说明原因

答:不一样!如果判断的字段有null则会不一样,因为奖金里有null值。

3、排序查询

语法:select 查询列表 from 表 where 筛选条件 order by 排序列表【asc/desc】

  • asc代表升序,desc代表降序,默认升序
#查询员工信息,要求工资从高到低排序
SELECT * FROM employees ORDER BY salary DESC;
#查询部门编号>=90的员工信息,按入职时间的先后进行排序
SELECT * FROM employees
WHERE department_id>=90
ORDER BY hiredate ASC;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值