基础查询、条件查询
基础查询
语法
select 查找列表、字段、常量、函数、表达式 from 表名;
查询出来的是一个虚拟的表格
- 查询单个字段
SELECT first_name FROM actor;
- 查询多个字段
SELECT address,district FROM address;
- 查询全部数据
SELECT * FROM actor;
- 查询常量值
SELECT 200;
SELECT 'NICK';
- 查询表达式
SELECT 100/2;
- 查询函数
SELECT VERSION();
别名
优点
- 便于理解
- 便于区分重名
- 当别名中有关键字时,别名加引号
SELECT address 地址a, district 'out put' FROM address ;
用法
- SELECT 查询内容 AS 别名 FROM 表名;
SELECT 100/2 as 结果;
SELECT address AS 地址a, district as dis FROM address ;
- SELECT 查询内容 别名 FROM 表名;
SELECT 100/2 结果;
SELECT address 地址a, district dis FROM address ;
去除重复数据
distinct 去除重复数据
SELECT DISTINCT 100/2 结果;
加号+运算符
- 都是数值型,则相加;
SELECT 100+20;
- 字符型和数值型,会尝试将字符型转换为数值型相加
SELECT '110'+22;
- 如果转换失败,则默认字符型的数值为0
SELECT 'nick'+33;
- 其中一方为null,结果也为null
SELECT NULL+11;
连接多个字段
concat(str1,str2,…)多个字段链接成一个字段
SELECT CONCAT(first_name,' ',last_name) as 'name' FROM actor;
如果拼接数据有NULL,拼接后为NULL
判断是否为NULL
ifnull(判断字段,字段a)判断字段数据是否为null,如果是则返回字段a
SELECT IFNULL(address2,0) as dizhi FROM address;
条件查询
语法
select 查找列表、字段、常量、函数、表达式 from 表名 where 筛选条件;
分类
按条件表达式筛选
条件运算符 > < = != >= <= <>
SELECT title from film WHERE length > 20;
逻辑运算符&& || !and or NOT
SELECT title from film WHERE length > 110 AND length <=150;
模糊查询
like
like 字符; 包含字符,一般和通配符搭配使用
通配符:
-
% 任意多个字符,包含0个字符
-
_ 任意单个字符
SELECT title FROM film WHERE rating LIKE '_C%';
指定转义字符 ESCAPE
转义字符默认为’\‘,也可以自己指定
如:ESCAPE ‘$’
SELECT title FROM film WHERE rating LIKE '_$_%' ESCAPE '$';
BETWEEN and
BETWEEN 数值1 and 数值2; 在1和2之间
-
两个值不能换顺序
-
左右都是闭区间
SELECT title from film WHERE length BETWEEN 110 AND 160;
IN
(NOT)IN (存在某数据)
- in列表的值必须兼容统一
- 不支持通配符
SELECT rating FROM film WHERE rating in ('NC-17','R');
is NULL/is NOT NULL
- is 不能用来判断其他的
SELECT original_language_id FROM film WHERE original_language_id is NULL;
SELECT original_language_id FROM film WHERE original_language_id is NOT NULL;
安全等于<=>
可以判断其他的值,但是可读性较低
SELECT original_language_id FROM film WHERE original_language_id <=> NULL;
SELECT rating FROM film WHERE rating <=> 'R';