目录
基础查询
条件查询
基础查询
语法:
select 查询列表 from 表名;
特点:1、查询列表可以是:表中的字段、常量值、表达式、函数
2、查询的结果是一个虚拟的表格
打开指定的库:USE 库名;
1. 查询表中的单个字段:SELECT 字段名 FROM 表名;
2. 查询表中的多个字段:SELECT 字段名,字段名,字段名 FROM 表名;
3. 查询表中的所有字段:SELECT * FROM 表名;
4. 查询常量值: SELECT 100;
SELECT 'abc'; (字符型用单引号' ')
5. 查询表达式: SELECT 100%98;
6. 查询函数:SELECT VERSION();
7. 起别名: 别名含有有特殊符号时,例如 空格 last name 需要加上双引号 "last name "
方式一:(使用as)SELECT 查询列表 AS 别名;
方式二:(使用空格)SELECT 查询列表 别名 FROM 表名;
8. DISTINCT 去重:SELECT DISTINCT 查询列表 FROM 表名;
9. CONCAT()连接:SELECT CONCAT(字段名,字段名) AS 别名 FROM 表名;
/*
mysql中的+号: 仅仅只有一个功能:运算符
SELECT 100+70; 两个操作数都为数值型,则做加法运算
SELECT '123'+7; 只要其中一方为字符型,试图将字符型数值转换成数值型
如果转换成功,则继续做加法运算
SELECT 'abc'+7; 如果转换失败,则将字符型数值转换成0继续做加法运算
SELECT null+10; 只要其中一方为null,则结果肯定为null
*/
10. IFNULL(): 判断是否为空
SELECT IFNULL(参数1,参数2) FROM 表名;
//如果不为NULL,则返回参数1。 否则,IFNULL函数返回参数2。
条件查询
语法:
SELECT 查询列表 FROM 表名 WHERE 筛选条件;
分类:
一、按条件表达式筛选
条件运算符:> < = != <> >= <=
二、按逻辑表达式筛选
逻辑运算符:用于连接条件表达式
&& || !
and or not
&&和and:两个条件都为true,结果为true,反之为false
||或or: 只要有一个条件为true,结果为true,反之为false
!或not: 如果连接的条件本身为false,结果为true,反之为false
三、模糊查询
like
between and
in
is null
一、按条件表达式筛选
例1:查询年龄>25的员工信息
SELECT * FROM 表名 WHERE age>25;
例2:查询年龄不等于20的员工名和年龄
SELECT last_name,age FROM 表名 WHERE age<>20;
二、按逻辑表达式筛选
例1:查询年龄在20到35之间的员工名、年龄
SELECT last_name,age FROM 表名 WHERE age>=20 AND age<=35;
例2:查询年龄不是在20到35之间,或者年龄高于35的员工信息
SELECT * FROM 表名 WHERE NOT(age>=20 AND age<=35) OR age>35;
三、模糊查询
1. LIKE
① 一般和通配符搭配使用
通配符:
% 任意多个字符,包含0个字符
_ 任意单个字符
例1:查询员工名中包含字符a的员工信息
SELECT * FROM 表名 WHERE last_name LIKE '%a%';
例2:查询员工名中第三个字符为e,第五个字符为a的员工名和年龄
SELECT last_name,age FROM 表名 WHERE last_name LIKE '__e_a%';
例3:查询员工名中第二个字符为_的员工名 \ 转义字符 ESCAPE 定义转义符
SELECT last_name FROM 表名 WHERE last_name LIKE '_\_%';
SELECT last_name FROM 表名 WHERE last_name LIKE '_$_%' ESCAPE '$';
2. BETWEEN AND
① 使用 BETWEEN AND 可以提高语句的简洁度
② 包含临界值
③ 两个临界值不可以调换顺序
例1:查询员工年龄在20到30之间的员工信息
SELECT * FROM 表名 WHERE age BETWEEN 20 AND 30;
3. IN
含义:判断某字段的值是否属于 IN 列表中的某一项
特点:
① 使用 IN 提高语句简洁度
② IN 列表的值类型必须一致或兼容
③ IN 列表中不支持通配符
例1:查询员工的员工名是 MARRY_HE、AMY_LU、JACK_Q 中的一个员工名
SELECT last_name FROM 表名 WHERE last_name IN ( 'MARRY_HE' , 'AMY_LU' , 'JACK_Q' );
4. IS NULL
= 或 <> 不能用于判断null值
IS NULL 或 IS NOT NULL 可以判断null值
例1:查询没有邮箱的员工名和年龄
SELECT last_name,age FROM 表名 WHERE email IS NULL;
例1:查询有邮箱的员工名和年龄
SELECT last_name,age FROM 表名 WHERE email IS NOT NULL;
5. 安全等于 <=>
例1:查询没有邮箱的员工名和年龄
SELECT last_name,age FROM 表名 WHERE email <=> Null;
例2:查询年龄为27的员工信息
SELECT * FROM 表名 WHERE age <=> 27;
IS NULL 和 <=> 的区别:
IS NULL:只能判断NULL值
<=> :既可以判断NULL值,也可以判断普通的数值