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 AS 名
FROM 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查询(简单查询,条件查询,排序查询)的主要内容,如果未能解决你的问题,请参考以下文章