文章目录
- 一、数据库测试表
- 二、基础查询
- 1. 获得需要的记录的特定字段
- 2. 查询常量值
- 3. 查询表达式
- 4. 查询函数
- 5. 起别名
- 6. 去重
- 7. CONCAT函数的简单使用
- 三、过滤数据
- 大纲
- 1. 按条件表达式筛选
- 2. 使用逻辑表达式
- 3. 模糊查询
- LIKE
- BETWEEN AND
- IN
- IS NULL
- 安全等于 <=>
一、数据库测试表
首先这里给出需要使用到的数据库表:
链接:https://pan.baidu.com/s/17woahG6lupK9FYb3vFNJAg 提取码:gbb4
里面是一个.sql
文件,直接运行即可得到如下几个测试表:
二、基础查询
1. 获得需要的记录的特定字段
语法:SELECT
后加上需要的结果映射到的字段,若为*
则为选取所有字段。
#单个字段查询
SELECT
last_name
FROM
employees;
#多个字段
SELECT
last_name,
salary,
email
FROM
employees;
#所有字段
SELECT
*
FROM
employees;
2. 查询常量值
#查询常量值
SELECT 100;
SELECT "john";
3. 查询表达式
例:
SELECT 100%98;
4. 查询函数
例:
SELECT VERSION();
5. 起别名
为查询结果的列起一个新的名字,语法:
SELECT 表中的列名 AS 自己起的新名字
FROM 表名;
或者省略AS
:
SELECT 表中的列名 自己起的新名字
FROM 表名;
例:
SELECT last_name AS 姓, first_name AS 名
FROM employees;
SELECT last_name 姓, first_name 名
FROM employees;
6. 去重
SELECT DISTINCT 字段名
FROM 表名;
实际过程:
- 查询到对应的记录
- 映射到对应的字段
- 最终结果去重
例:
SELECT DISTINCT department_id
FROM employees;
7. CONCAT函数的简单使用
SELECT
CONCAT( last_name, first_name ) AS 姓名
FROM
employees;
实际过程:
- 到表中没有这个字段,然后为所有的记录添加这个新字段,内容为last_name字段和first_name字段的链接
- 查出相应的记录
- 将所有记录映射到姓名字段中
运行结果:
三、过滤数据
主要语法:
SELECT 查询列表
FROM 表名
WHERE 条件;
大纲
- 按条件表达式筛选:
- 简单条件运算符:
> < = != <> >= <=
- 逻辑表达式:
&& || !
AND OR NOT
- 模糊查询:
LIKE
- 一般和通配符搭配使用
- 通配符:
-
%
任意多个字符,包含0个字符 -
_
任意单个字符
BETWEEN AND
- 简洁
- 闭区间
- 不可调换顺序
IN
- 简洁
-
IN
列表的值类型必须统一或兼容
IS NULL
- 可用
IS NULL
和IS NOT NULL
来判断是否为空
1. 按条件表达式筛选
查询工资>12000的员工信息:
SELECT *
FROM employees
WHERE salary > 12000;
查询部门编号不等于90号的员工名和部门编号
SELECT last_name, department_id
FROM employees
WHERE department_id <> 90
ORDER BY department_id; #排序
2. 使用逻辑表达式
查询工资在10000~20000之间的员工的员工名,工资及奖金
SELECT last_name, salary, commission_pct
FROM employees
WHERE salary>=10000 AND salary<=20000;
部门编号不在90到110之间,或者工资高于15000的员工信息:
SELECT *
FROM employees
WHERE department_id<90
OR department_id>110
OR salary>15000
或
SELECT *
FROM employees
WHERE NOT(department_id>=90 AND department_id<=110)
OR salary>15000
3. 模糊查询
LIKE
员工名中包含字符a的员工信息:
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%';
员工名中第三个字符为n
,第五个字符为t
的员工名和工资:
SELECT last_name, salary
FROM employees
WHERE last_name LIKE '__n_t%';
员工名中第二个字符为_的员工名:
SELECT last_name
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$';# 转义
BETWEEN AND
员工编号在100到120之间的员工信息
SELECT *
FROM employees
WHERE employee_id >= 100 AND employee_id <= 120;
#================使用BETWEEN AND================
SELECT *
FROM employees
WHERE employee_id BETWEEN 100 AND 120;
IN
查询员工的工种编号是IT_PROG
、AD_VP
、AD_PRES
中的一个的员工名和工种编号
SELECT last_name, job_id
FROM employees
WHERE job_id IN ('IT_PROG','AD_VP','AD_PRES');
IS NULL
查询没有奖金的员工名和奖金律
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;
安全等于 <=>
SELECT last_name, commission_pct
FROM employees
WHERE commission_pct <=> NULL;