MySQL查询(简单查询,条件查询,排序查询)

Posted 364.99°

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL查询(简单查询,条件查询,排序查询)相关的知识,希望对你有一定的参考价值。

1.基础查询

/*------------------------------------基础查询-----------------------------------------*/
/*
语法:select 查询列表 
      from 表名;

类似于println()

特点:
1.查询表中的字段、常量、表达式、函数
2.查询的结果是一个虚拟的表格
*/

#使用指定的库,
USE myemployees;

#查询表结构,并查询其中的全部数据
DESC departments;

#1.查询单个字段
SELECT last_name 
FROM employees;

#2.查询多个字段
SELECT last_name,salary 
FROM employees;

#3.查询所有
SELECT * 
FROM departments;

#4.查询常量值
SELECT 100;
SELECT 'tom';

#5.查询表达式
SELECT 100/1;

#6.查询函数
SELECT VERSION();

#7.起别名
/*
起别名
  ①方便理解
  ②如果查询的字段有重名的情况,使用别名可以区分开来
  
  注意:当别名中有关键字的时候,得加上引号(单双都可)
*/

#方式1,使用as
SELECT 100%99 AS 结果;
SELECT last_name AS, first_name ASFROM employees;

#方式2,使用空格
SELECT last_name 姓,first_name 名 
FROM employees;

#8.去重,关键字distinct
SELECT DISTINCT department_id 
FROM employees;

#9.mysql中 特殊字符 + 的作用
/*
  只有一个作用:做运算符
    select 1 + 2;两个操作数都是数值型,做加法运算
    select '1' + 2;其中一个为字符型,试图将字符型数值转换成数值型,
                   成功,做加法运算
    select 'na' + 1;失败,将字符型转换为0
    select null+1;  其中有一个null,则结果为null
*/

#10.连接,关键词:concat
SELECT CONCAT(last_name,first_name) AS 姓名
FROM employees;

#11.判断是否为空,关键字:ifnull
/*
  当时用concat拼接查询,其中某字段为空,则此行查询结果为空,如下
*/
SELECT CONCAT(last_name,first_name,commission_pct) AS out_put
FROM employees;
/*
  为了避免上述情况,使用关键字:ifnull
*/

SELECT  CONCAT(last_name , ',' , first_name , ',' , IFNULL (commission_pct,0) ) AS out_put
FROM employees;

2.条件查询

/*------------------------------------条件查询-----------------------------------------*/
/*
  语法:select 查询列表
        from 表名
        where 筛选条件;
        
  分类:
        ①按条件表达式筛选
		条件运算符:> < = != <> >= <=
	②逻辑表达式筛选
		逻辑运算符:&& || !
			    and or not
	③模糊查询
		like   between and    in    is null
*/

#1.按条件表达式筛选
SELECT *
FROM employees
WHERE salary >= 10000;

SELECT CONCAT(last_name,first_name) AS 姓名 , salary
FROM employees
WHERE salary >= 12000;

#2.按逻辑表达式筛选
/*
  注意:and优先级高于or
*/

SELECT CONCAT(last_name,first_name) AS 姓名 , salary  
FROM employees
WHERE salary >= 12000 AND salary <= 20000 OR salary <= 5000;

#3.模糊查询
/*
like

  ①搭配通配符
	通配符:
	  % 任意多个字符,包含0个
	  _ 任意单个字符
  
*/
SELECT *
FROM employees
WHERE last_name LIKE 'c%';

SELECT *
FROM employees
WHERE last_name LIKE 'c%e_';

SELECT last_name
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$'; #等同于'_/_%',ESCAPE:指定转义字符(随意指定)

/*
between  and
  
  注意:两个临界值不能调换顺序,运行不会报错,但会导致结果出错
*/
SELECT * 
FROM employees
WHERE employee_id BETWEEN 99 AND 113; #等同于 >= 99 and <= 113

/*
in
  
  判断某字段的值是否属于in列表中的一项
  
  特点:
	①提高语句简洁度
	②in列表的值类型必须一致或兼容
	③列表值要加引号
*/

SELECT CONCAT(last_name,first_name) AS 姓名
FROM employees
WHERE job_id IN ('AD_PRES','IT_PROG','AD_VP');

/*
is null
  
  =不能判断null,得用 is null 或 is not null 判断 null
*/
SELECT CONCAT(last_name , ',' , first_name) 姓名
FROM employees
WHERE commission_pct IS NULL;

#4.安全等于 <=>
/*
  既可以判断null值,又可以判断普通数值
  可读性没有 is null 高
*/
SELECT CONCAT(last_name , ',' , first_name) 姓名
FROM employees
WHERE commission_pct <=> NULL;

SELECT CONCAT(last_name , ',' , first_name) 姓名
FROM employees
WHERE salary <=> 10000;

3.排序查询

/*------------------------------------排序查询-----------------------------------------*/
#1.ORDER BY ASC|DESC
/*
  ASD:升序查询,默认升序查询
  DESC:降序查询
  
  格式:
	select 查询列表
	from 表
	[where 筛选条件]
	order by 查询列表 [asc|desc]
*/
SELECT * 
FROM employees
WHERE commission_pct IS NULL
ORDER BY salary DESC;

SELECT *,salary*12*(1 + IFNULL(commission_pct,0)) AS 年薪 #表达式查询
FROM employees
ORDER BY salary*12*(1 + IFNULL(commission_pct,0)) DESC;

SELECT *,salary*12*(1 + IFNULL(commission_pct,0)) AS 年薪  
FROM employees
ORDER BY 年薪 DESC;                                       #别名查询

/*
length: 字节长度
*/
SELECT LENGTH(last_name) 字节长度,last_name 姓,salary 薪水
FROM employees
ORDER BY 字节长度 DESC;

SELECT * 
FROM employees
ORDER BY salary DESC,employee_id ASC;                     #多条件排序

以上是关于MySQL查询(简单查询,条件查询,排序查询)的主要内容,如果未能解决你的问题,请参考以下文章

条件查询+排序查询操作(MySQL)

MySql 01(安装,删除,简介,常用命令,简单查询,条件查询,排序,单行处理函数多行处理函数分组查询)

MySql操作「数据查询条件20211223

MySQL基础篇之基础查询条件查询模糊查询排序查询

MySQL单表查询

MySQL-基本查询条件查询排序查询