文章目录

  • 一、数据库测试表
  • 二、基础查询
  • 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文件,直接运行即可得到如下几个测试表:

sql server 过滤本季度 数据 sql语句过滤查询_数据库


sql server 过滤本季度 数据 sql语句过滤查询_数据库_02

二、基础查询

1. 获得需要的记录的特定字段

语法:SELECT后加上需要的结果映射到的字段,若为*则为选取所有字段。

#单个字段查询
SELECT
	last_name 
FROM
	employees;

sql server 过滤本季度 数据 sql语句过滤查询_字段_03

#多个字段
SELECT
	last_name,
	salary,
	email 
FROM
	employees;

sql server 过滤本季度 数据 sql语句过滤查询_字段_04

#所有字段
SELECT
	* 
FROM
	employees;

2. 查询常量值

#查询常量值
SELECT 100;
SELECT "john";

3. 查询表达式

例:

SELECT 100%98;

4. 查询函数

例:

SELECT VERSION();

sql server 过滤本季度 数据 sql语句过滤查询_数据库_05

5. 起别名

为查询结果的列起一个新的名字,语法:

SELECT 表中的列名 AS 自己起的新名字
FROM 表名;

或者省略AS

SELECT 表中的列名 自己起的新名字
FROM 表名;

例:

SELECT last_name AS 姓, first_name AS 名 
FROM employees;

SELECT last_name 姓, first_name 名 
FROM employees;

sql server 过滤本季度 数据 sql语句过滤查询_字段_06

6. 去重

SELECT DISTINCT 字段名
FROM 表名;

实际过程:

  1. 查询到对应的记录
  2. 映射到对应的字段
  3. 最终结果去重

例:

SELECT DISTINCT department_id 
FROM employees;

sql server 过滤本季度 数据 sql语句过滤查询_表名_07

7. CONCAT函数的简单使用

SELECT
	CONCAT( last_name, first_name ) AS 姓名 
FROM
	employees;

实际过程:

  1. 到表中没有这个字段,然后为所有的记录添加这个新字段,内容为last_name字段和first_name字段的链接
  2. 查出相应的记录
  3. 将所有记录映射到姓名字段中

运行结果:

sql server 过滤本季度 数据 sql语句过滤查询_字段_08

三、过滤数据

主要语法:

SELECT		查询列表
FROM 		表名
WHERE		条件;

大纲

  • 按条件表达式筛选:
  • 简单条件运算符: > < = != <> >= <=
  • 逻辑表达式:
  • && || !
  • AND OR NOT
  • 模糊查询:
  • LIKE
  • 一般和通配符搭配使用
  • 通配符:
  • % 任意多个字符,包含0个字符
  • _ 任意单个字符
  • BETWEEN AND
  • 简洁
  • 闭区间
  • 不可调换顺序
  • IN
  • 简洁
  • IN列表的值类型必须统一或兼容
  • IS NULL
  • 可用IS NULLIS 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; #排序

sql server 过滤本季度 数据 sql语句过滤查询_mysql_09

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%';

sql server 过滤本季度 数据 sql语句过滤查询_表名_10


员工名中第三个字符为n,第五个字符为t的员工名和工资:

SELECT 	last_name, salary
FROM  	employees
WHERE 	last_name LIKE '__n_t%';

sql server 过滤本季度 数据 sql语句过滤查询_字段_11


员工名中第二个字符为_的员工名:

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_PROGAD_VPAD_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;

sql server 过滤本季度 数据 sql语句过滤查询_数据库_12


查询有奖金的员工名和奖金律

SELECT 	last_name, commission_pct
FROM 	employees
WHERE 	commission_pct IS NOT NULL;

sql server 过滤本季度 数据 sql语句过滤查询_sql server 过滤本季度 数据_13

安全等于 <=>

SELECT 	last_name, commission_pct
FROM 	employees
WHERE 	commission_pct <=> NULL;