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

基本查询

1,语句:mysql

SELECT 查询列表 FROM 表名

二、特色
1)查询列表能够是:表中字段、常量值、表达式、函数。
2)查询结果是一个虚拟表格。web

  • 查询表中单个字段
SELECT last_name FROM employees;
  • 查询表中多个字段
SELECT last_name, email FROM employees;
  • 查询表中全部字段
SELECT * FROM employees;
  • 起别名
  1. 使用AS
SELECT last_name ASFROM employees;
  1. 使用空格
SELECT last_name 名 FROM employees;
  • 去重
SELECT DISTINCT department_id FROM employees;
  • mysql中+号仅仅只有一个功能:运算符。

select 100+90; 两个操做数都为数值型,则作加法运算
select ‘123’+90;只要其中一方为字符型,试图将字符型数值转换成数值型
若是转换成功,则继续作加法运算
select ‘john’+90; 若是转换失败,则将字符型数值转换成0
select null+10; 只要其中一方为null,则结果确定为nullsql

而mysql中拼接使用CONCAT:svg

SELECT CONCAT(字段) FROM employees;

案例:查询员工名和姓链接成一个字段,并显示为 姓名函数

SELECT 
	CONCAT(last_name,first_name) AS 姓名
FROM
	employees;

条件查询

语句:spa

SELECT 查询列表 FROM 表名 WHERE 筛选条件;

分类:code

  1. 按条件表达式筛选
    简单条件运算符:> < = != <> >= <=
    != 与<>相同 但mysql推荐用<>
  2. 按逻辑表达式筛选
    逻辑运算符:&& || !
    and or not
  3. 模糊查询
    like
    特色:通常和通配符搭配使用
    通配符:
    % 任意多个字符,包含0个字符
    _ 任意单个字符
    between and
    ①使用between and 能够提升语句的简洁度
    ②包含临界值
    ③两个临界值不要调换顺序
    in
    含义:判断某字段的值是否属于in列表中的某一项
    特色:
    ①使用in提升语句简洁度
    ②in列表的值类型必须一致或兼容
    ③in列表中不支持通配符
    is null
    =或<>不能用于判断null值
    is null或is not null 能够判断null值

like
#案例1:查询员工名中包含字符a的员工信息xml

select 
	*
from
	employees
where
	last_name like '%a%';

#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资排序

select
	last_name,
	salary
FROM
	employees
WHERE
	last_name LIKE '__n_l%';

#案例3:查询员工名中第二个字符为_的员工名token

SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_$_%' ESCAPE '$';

使用 ESCAPE 关键字定义转义符。在模式中,当转义符置于通配符以前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串 5% 的字符串,请使用:
WHERE ColumnA LIKE ‘%5/%%’ ESCAPE ‘/’

between and
#案例1:查询员工编号在100到120之间的员工信息

SELECT
	*
FROM
	employees
WHERE
	employee_id >= 120 AND employee_id<=100;
#----------------------
SELECT
	*
FROM
	employees
WHERE
	employee_id BETWEEN 120 AND 100;

in
案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号

SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';

#------------------

SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');

is null
#案例1:查询没有奖金的员工名和奖金率

SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;

排序查询

语句:

select 查询列表

fromorder by 排序列表【asc|desc

asc 升序 desc降序 若是不写默认升序

按单个字段排序

SELECT * FROM employees ORDER BY salary DESC;

查询员工信息 按年薪降序

SELECT *,salary*12*(1+IFNULL(commission_pct,0))
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

查询员工信息 按年薪升序

SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 ASC;

查询员工信息,要求先按工资降序,再按employee_id升序

SELECT *
FROM employees
ORDER BY salary DESC,employee_id ASC;