当前位置:   article > 正文

MySQL——SELECT语句(基础查询,条件查询)_mysql 对 select 筛选

mysql 对 select 筛选

SELECT语句(检索数据)

  • 查询结果只是一个虚拟的表格
  • 查询前建议先用use表明使用的库
  • `不是单引号,是着重号可以与关键字区别

基础查询

SELECT 查询列表 FROM 表名;
  • 1
  • 查询列表处可以是:列名,表中字段,常量值,表达式,函数
  • 当检索多个列时,在SELECT关键字后给出多个列名,并将列名以逗号分隔
  • 在查询处使用*则代表检索所有列
  • DESC+表名 可以显示该表结构
SELECT 列名 FROM 表名 LIMIT m,n;
  • 1
  • 为了返回第一行或前几行,可使用LIMIT子句。
    LIMIT m,n代表从第m行开始,返回n行;如果只有一个数字,则默认从第0行开始返回

去重-DISTINCT

  • 每次检索列时会自动返回该列所有行,如果想要去重可以使用DISTINCT关键字:
    注意:如果给出SELECT DISTINCT后接多个列名,除非指定的几个列都不同,否则所有行都将被检索出来。
SELECT DISTINCT 列名 FROM 表名;
  • 1

起别名-AS

  • 当查询字段有重名,可以用别名进行区分;
  • 当别名有特殊符号如#或空格,可以用双引号避免误会
#方式一
SELECT “last#name” AS 姓,first_name AS 名 FROM + 表名
#方式二
SELECT last_name 姓,first_name 名 FROM + 表名
  • 1
  • 2
  • 3
  • 4

拼接-CONCAT

  • 将两个字段拼接成一个字段
#案例:查询员工姓名,将姓和名拼接成一个字段
SELECT 
  CONCAT(last_name, first_name) AS 姓名 
FROM
  employees ;
  • 1
  • 2
  • 3
  • 4
  • 5

条件查询(WHERE)

select 查询列表 
from 表名
where 筛选条件;
  • 1
  • 2
  • 3
  1. 按条件表达式筛选
    条件运算符:>, <, =, !=, <>, >=, <=
    (!=和<>均为不等于,建议使用后者)
  2. 按逻辑表达式筛选
    逻辑运算符:&&,||,!或and, or, not
  3. 模糊查询
    like:一般和通配符搭配使用
    between and:范围是闭区间(可以写not between…and…)
    in:in列表的值类型必须一致或兼容
    is null:is null只能判断null值;=不能判断null值安全等于(<=>)可以判断null值也可以判断数值。
  4. 使用说明
    通配符:%表示任意多个字符,包含0个字符;_表示任意单个字符
    转义:若出现已有含义的字符在字段中,可通过转义从而正常查询,如例三所示,\就是一个转义符,此外还可通过ESCAPE子句自定义转义符。
#例1:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT 
  * 
FROM
  employees 
WHERE department_id < 90 
  OR department_id > 110 
  OR salary > 15000 ;
 
#例2:查询员工名第二个字符为a的员工信息
SELECT * FROM employees WHERE last_name LIKE '_a%';
#字符型要加单引号,%代表充沛符,代表任意一个字符,即任意位置有a均算在内

#例3:查询员工中第二个字符为_的员工名
#方案一:
SELECT last_name FROM employees WHERE last_name LIKE '_\_%';
#方案二:
SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';

#例4:查询员工工种编号是IT_FROG,AD_VP,AD_PRES中的一个的员工名和工种编号
SELECT last_name,job_id FROM employees WHERE job_id IN ('IT_FROG','AD_VP','AD_PRES');

#例5:查询无奖金的员工名
SELECT last_name FROM employees WHERE commission_pct IS NULL;
#类似的有奖金的则改成IS NOT NULL
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

IF NULL子句

当表中有null值,无法进行数值运算,可以利用IF NULL为空值赋值

#例:查询员工号为AD_VP的员工名,员工号和年薪
SELECT 
  last_name,
  job_id,
  salary * 12 * (1+ IFNULL(commission_pct, 0)) AS 年薪 
FROM
  employees
WHERE 
  job_id='AD_VP';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

排序查询(ORDER BY)

  • ORDER BY子句取一个或多个列的名字,据此对输出进行排序
  • ORDER BY子句一般放在查询语句最后,LIMIT子句除外
  • #默认升序排序
#语法:
SELECT 查询列表
FROM 表
【WHERE 筛选条件】
ORDER BY 排序列 【ASC或DESC】
  • 1
  • 2
  • 3
  • 4
  • 5
  1. 可以按照表达式,别名,函数等排序:如之前所说的年薪,LENGTH函数等。
#例:按年薪高低显示信息
SELECT 
  *,
  salary * 12 * (1+ IFNULL(commission_pct, 0)) 年薪 
FROM
  employees 
ORDER BY 年薪 DESC ;

#例:按姓名长度显示员工姓名和工资
SELECT 
  LENGTH(last_name) AS 字节长度,last_name,salary 
FROM 
  employees 
ORDER BY 
  LENGTH(last_name) DESC;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  1. 可以填入多个列名,在按多个列排序时,排序完全按所规定的顺序进行。例如age, name这样的顺序下,先按age排序,如果有相同年龄者再在其中按姓名排序。
#例:先按工资升序,再按员工编号降序
SELECT *
FROM employees
ORDER BY salary ASC, employee_id DESC;
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/189189
推荐阅读
相关标签
  

闽ICP备14008679号