Loading

SQL语句(一)基础查询与过滤数据

一、数据库测试表

首先这里给出需要使用到的数据库表:
链接: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 	表名;

实际过程:

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

例:

SELECT 	DISTINCT department_id 
FROM 	employees;

7. CONCAT函数的简单使用

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

实际过程:

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

运行结果:

三、过滤数据

主要语法:

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; #排序

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

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

SELECT 	last_name, commission_pct
FROM 	employees
WHERE 	commission_pct IS NOT NULL;
在这里插入图片描述

安全等于 <=>

SELECT 	last_name, commission_pct
FROM 	employees
WHERE 	commission_pct <=> NULL;
posted @ 2021-08-04 09:15  CodeReaper  阅读(663)  评论(0编辑  收藏  举报