一、数据库测试表

首先这里给出需要使用到的数据库表:

链接: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;

最新文章

  1. MacOS下Express安装过程中遇到的问题
  2. 大毕设-matlab-AM调制解调
  3. maven 环境的配置 JAVA_HOME not found in your envirnment
  4. input:focus
  5. python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换
  6. Linux usb子系统(三):通过usbfs操作设备的用户空间驱动
  7. UVA 10142 Australian Voting(模拟)
  8. 每日一练之自适应中值滤波器(基于OpenCV实现)
  9. 模板C++ 03图论算法 1最短路之单源最短路(SPFA)
  10. TensorFlow实现分布式计算
  11. 图解CSS3-flex布局
  12. Windows XP Services
  13. 007-chrome插件系列
  14. idea去掉无效引用
  15. mysql explain预估剖析
  16. 初识C语言中的函数(男神翁凯老师MOOC)
  17. my97date 时间范围限制
  18. ldap快速配置
  19. Python--001
  20. 剑指offer四十七之求1+2+3+...+n

热门文章

  1. Java安全之Fastjson内网利用
  2. ECMAScript 2021 正式确认
  3. Unity VideoPlayer视频模糊
  4. 收集雪花(map)
  5. flex发生错误积累。每次遇到错误记录一点点
  6. 关于asp.net中Repeater控件的一些应用
  7. ftp错误&amp;&amp;详解方案
  8. B站蹦了,关我A站什么事?
  9. 解决 .net core 中 nuget 包版本冲突问题[转载]
  10. kong配置upstream实现简单的负载均衡