目录
基础查询
语法
select 查询列表 from 表名;
特点:
1、查询列表可以使:表中的字段、常量值、表达式、函数
2、查询的结果是一个虚拟的表格
USE myemployees;
1.查询表中的单个字段
SELECT last_name FROM employees;
2.查询表中多个字段
SELECT last_name,salary,email FROM employees;
3.查询表中的所有字段
SELECT * FROM employees;
4.查询常量值
SELECT 100;
SELECT 'Tom';
5.查询表达式
SELECT 100%98;
6.查询函数
SELECT VERSION();
7.起别名
①便于理解
②如果要查询的字段有重名的情况,使用别名可以区分开
方式一:使用as
SELECT 100%98 AS 结果;
SELECT last_name AS 姓,first_name AS 名 FROM employees;
方式二:使用空格
SELECT last_name 姓,first_name 名FROM employees;
案例:查询salary,显示结果为out put
SELECT salary AS "out put" FROM employees;
8.去重
案例:查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees;
9.+的作用
java中的+号:
①运算符:两个操作数都为数值型
②连接符:只要有一个操作数为字符串
mysql中的+号:
仅仅只有一个功能:运算符
案例:查询员工名和姓连接成一个字段,并显示为 姓名
SELECT CONCAT('a','b','c') AS 结果;
SELECT CONCAT(last_name,first_name) AS 姓名 FROM employees;
显示出表employees的全部列,各个列之间用逗号连接,列头显示成out_put
SELECT CONCAT(`first_name`,',',`last_name`,',',`email`,',',`phone_number`,',',`job_id`,',',`salary`,',',IFNULL(commission_pct,0),',',`manager_id`,',',`department_id`,',',`hiredate`) AS out_put
FROM employees;
条件查询
语法:
select
查询列表
from
表名
where
筛选条件;
分类:
一、按条件表达式筛选
条件运算符:> < = != <> >= <=
二、按逻辑表达式筛选
逻辑运算符:
&& || !
and or not
三、模糊查询
like
between and
in
is null
一、按条件表达式筛选
案例1:查询工资>12000的员工信息
SELECT
*
FROM
employees
WHERE
salary>12000;
案例2:查询部门编号不等于90号的员工名和部门编号
SELECT
employee_id,department_id
FROM
employees
WHERE
department_id!=90;
二、按逻辑表达式筛选
案例1:查询工资在10000到20000之间的员工名、工资以及奖金
SELECT
last_name,salary,commission_pct
FROM
employees
WHERE
salary>=10000 AND salary<=20000;
三、模糊查询
like
特点:一般和通配符搭配使用
通配符:
% 任意多个字符
_ 任意单个字符
between and
in
is null is not null
1.like
案例1:查询员工名中包含字符a的员工信息
SELECT
*
FROM
employees
WHERE
last_name LIKE '%a%';
案例2:查询员工名中第二个字符为_的员工名
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_$_%'ESCAPE'$';
2.between and
①使用between and可以提高语句的简洁度
②包含临界值
③两个临界值不要颠倒顺序
案例1:查询员工编号在100到120之间的员工信息
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 100 AND 120;
3.in
含义:判断某字段的值是否属于in列表中的某一项
特点:
①使用in提高语句简洁度
②in列表的值类型必须统一或兼容
案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工号和工种编号
SELECT
last_name,job_id
FROM
employees
WHERE
job_id IN('IT_PROG','AD_VP','AD_PRES');
4.is null
=或<>不能用于判断null值
is null或is not null可以判断null值
案例1:查询没有奖金的员工名和奖金率
SELECT
last_name,commission_pct
FROM
employees
WHERE
commission_pct IS NULL;
安全等于 <=>
案例1:查询没有奖金的员工名和奖金率
SELECT
last_name,commission_pct
FROM
employees
WHERE
commission_pct <=> NULL;
案例2:查询工资为12000的员工信息
SELECT
*
FROM
employees
WHERE
salary<=>12000;
is null pk <=>
is null:仅仅可以判断NULL值,可读性较高,建议使用
<=>:即可以判断NULL值,又可以判断普通的数值,可读性较低