MySQL——SELECT语句(基础查询,条件查询)

SELECT语句(检索数据)

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

基础查询

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

去重-DISTINCT

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

起别名-AS

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

拼接-CONCAT

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

条件查询(WHERE)

select 查询列表 
from 表名
where 筛选条件;
  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

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';

排序查询(ORDER BY)

  • ORDER BY子句取一个或多个列的名字,据此对输出进行排序
  • ORDER BY子句一般放在查询语句最后,LIMIT子句除外
  • #默认升序排序
#语法:
SELECT 查询列表
FROM 表
【WHERE 筛选条件】
ORDER BY 排序列 【ASC或DESC】
  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. 可以填入多个列名,在按多个列排序时,排序完全按所规定的顺序进行。例如age, name这样的顺序下,先按age排序,如果有相同年龄者再在其中按姓名排序。
#例:先按工资升序,再按员工编号降序
SELECT *
FROM employees
ORDER BY salary ASC, employee_id DESC;
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL条件查询语句的基本语法是使用SELECT语句查询指定的字段,并通过WHERE子句来添加多个条件进行筛选。 通用语法如下: SELECT 字段1, 字段2, ... FROM 表名1, 表名2... WHERE 条件1 AND 条件2... 其中,字段1, 字段2,...表示需要查询的字段,可以是一个或多个字段。表名1, 表名2...表示需要查询的表名,可以是一个或多个表。条件1, 条件2...表示多个筛选条件,可以使用AND或OR进行连接。 如果希望查询所有字段,可以使用通配符*代替字段名,例如:SELECT * FROM 表名。 总结来说,在编写多条件查询语句时,需要使用SELECT语句来指定查询的字段,通过WHERE子句来添加多个条件进行筛选。在实际应用中,建议明确写出需要查询的字段,这样可以提高SQL语句的可读性和可维护性。123 #### 引用[.reference_title] - *1* *2* [mysql数据库表的多条件查询](https://blog.csdn.net/zhongjianboy/article/details/129223518)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [MySQL数据库详解——常用命令及查询](https://blog.csdn.net/q872792748/article/details/108979428)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值