一、基础查询
语法:select 查询列表 from 表名;
特点:
(1)查询列表可以是:表中的字段、常量值、表达式、函数
(2)查询的结果是一个虚拟的表格
1、查询表中的单个字段
select 列名 from 表名;
2、查询表中的多个字段
select 列名1,列名2,列名2 from 表名;
3、查询表中所有字段
select * from 表名;
使用某一个库 use 库名;
4、查询常量值
select 100;
select 'john';
5、查询表达式
select 100*99;
6、查询函数
select VERSION();
7、为字段起别名
select 100*99 as 别名;
select last_name 姓;
8、去重
select distinct 列名 from 表名;
9、+号的作用
仅有一个功能:运算符
(两个操作数都为数值型,则做加法运算;其中一方为字符型,试图将字符型数值转换为数值型;如果转换成功,则继续做加法运算;如果转换失败,则将字符型数值转换为0;只要其中一方为null 则结果一定是null)
select concat(‘a’,'b','c') as 别名 from 表名;
10、判断是否为null 为null时显示指定值
select ifnull(列名,为null时显示的值) from 表名;
<注> ` `为着重号
二、条件查询
语法:select 查询列表 from 表名 where 筛选条件 ;
分类:
(1)按条件表达式筛选
条件运算符:> < = != <> >= <=
(2)按逻辑表达式查询
逻辑运算符:&& || ! and or not
(3)模糊查询
like、between and、in、 is null
1、按条件表达式筛选
eg.查询工资>12000的员工
SELECT * FROM employees WHERE salary>12000;
2、按逻辑表达式筛选
eg. 查询工资在1w~2w之间的员工的工资及姓名
SELECT last_name,first_name,salary
FROM employees
WHERE salary>=10000 AND salary<=20000;
eg.查询部门编号不是在90-110之间,或者工资高于15000的员工姓名
SELECT CONCAT(last_name,' ',first_name) AS 姓名
FROM employees
WHERE salary>=15000 OR department_id<90 OR department_id>110;
3、模糊查询
1、like
eg1. 查询员工名中包含字符z的员工信息
SELECT CONCAT(last_name,' ',first_name) AS 姓名
FROM employees
WHERE last_name LIKE '%z%';
特点:(1)通常与通配符搭配:
%代表多个任意字符(包括0)
_代表任意一个字符(仅一个)
eg2.查询员工中第二个字符为_的员工名
使用转义字符\_
SELECT CONCAT(last_name,' ',first_name) AS 姓名
FROM employees
WHERE last_name LIKE '_\_%';
或自定义转义字符 escape 字符:
SELECT CONCAT(last_name,' ',first_name) AS 姓名
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$';
<注>字符型必须包含‘ ’
2、between and
eg1.查询员工编号在100到120之间的员工信息
SELECT CONCAT(last_name,'',first_name) AS 姓名,employee_id AS 序号
FROM employees
WHERE employee_id BETWEEN 100 AND 120;
特点:
(1)between and包含临界值,等价于闭区间
(2)数值不可以颠倒调换顺序
3、in
eg1.查询员工的公众编号是IT_PROT、AD_VP、AD_PRES的员工
SELECT last_name,job_id
FROM employees
WHERE job_id IN ('IT_PROT','AD_VP','AD_PRES');
特点:
(1)提高语句简洁度
(2)in列表的值类型必须统一或兼容
(3)不能使用通配符,等价于等于“=”
3、is null / is not null
eg1.查询没有/有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct IS NULL;
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
特点:
(1)=或<>不能用于判断null值
(2)is null / is not null 可以判断null值
3、安全等于 <=>
eg1.查询没有/有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct<=>NULL;
eg1.查询工资为12000的员工姓名和工资
SELECT last_name,salary
FROM employees
WHERE salary<=>12000;
特点:
(1)is null仅仅可以判断NULL值,安全等于<=>既可以判断NULL又可以判断普通数值。
(2)安全等于<=>可读性较差,建议使用is null