一、数据库测试表

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

链接:https://pan.baidu.com/s/17woahG6lupK9FYb3vFNJAg

提取码:gbb4

里面是一个.sql文件,直接运行即可得到如下几个测试表:

二、基础查询

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

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

  1. #单个字段查询
  2. SELECT last_name
  3. FROM employees;

  1. #多个字段
  2. SELECT last_name, salary, email
  3. FROM employees;

  1. #所有字段
  2. SELECT *
  3. FROM employees;

2. 查询常量值

  1. #查询常量值
  2. SELECT 100;
  3. SELECT "john";

3. 查询表达式

例:

  1. SELECT 100%98;

4. 查询函数

例:

  1. SELECT VERSION();

5. 起别名

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

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

或者省略AS

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

例:

  1. SELECT last_name AS 姓, first_name AS
  2. FROM employees;
  3. SELECT last_name 姓, first_name
  4. FROM employees;

6. 去重

  1. SELECT DISTINCT 字段名
  2. FROM 表名;

实际过程:

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

例:

  1. SELECT DISTINCT department_id
  2. FROM employees;

7. CONCAT函数的简单使用

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

实际过程:

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

运行结果:

三、过滤数据

主要语法:

  1. SELECT 查询列表
  2. FROM 表名
  3. WHERE 条件;

大纲

  • 按条件表达式筛选:

    • 简单条件运算符: > < = != <> >= <=
  • 逻辑表达式:
    • && || !
    • AND OR NOT
  • 模糊查询:
    • LIKE

      • 一般和通配符搭配使用
      • 通配符:
        • % 任意多个字符,包含0个字符
        • _ 任意单个字符
    • BETWEEN AND
      • 简洁
      • 闭区间
      • 不可调换顺序
    • IN
      • 简洁
      • IN列表的值类型必须统一或兼容
    • IS NULL
      • 可用IS NULLIS NOT NULL来判断是否为空

1. 按条件表达式筛选

查询工资>12000的员工信息

  1. SELECT *
  2. FROM employees
  3. WHERE salary > 12000;

查询部门编号不等于90号的员工名和部门编号

  1. SELECT last_name, department_id
  2. FROM employees
  3. WHERE department_id <> 90
  4. ORDER BY department_id; #排序

2. 使用逻辑表达式

查询工资在10000~20000之间的员工的员工名,工资及奖金

  1. SELECT last_name, salary, commission_pct
  2. FROM employees
  3. WHERE salary>=10000 AND salary<=20000;

部门编号不在90到110之间,或者工资高于15000的员工信息:

  1. SELECT *
  2. FROM employees
  3. WHERE department_id<90
  4. OR department_id>110
  5. OR salary>15000

  1. SELECT *
  2. FROM employees
  3. WHERE NOT(department_id>=90 AND department_id<=110)
  4. OR salary>15000

3. 模糊查询

LIKE

员工名中包含字符a的员工信息:

  1. SELECT last_name
  2. FROM employees
  3. WHERE last_name LIKE '%a%';



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

  1. SELECT last_name, salary
  2. FROM employees
  3. WHERE last_name LIKE '__n_t%';



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

  1. SELECT last_name
  2. FROM employees
  3. WHERE last_name LIKE '_$_%' ESCAPE '$';# 转义

BETWEEN AND

员工编号在100到120之间的员工信息

  1. SELECT *
  2. FROM employees
  3. WHERE employee_id >= 100 AND employee_id <= 120;
  4. #================使用BETWEEN AND================
  5. SELECT *
  6. FROM employees
  7. WHERE employee_id BETWEEN 100 AND 120;

IN

查询员工的工种编号是IT_PROGAD_VPAD_PRES中的一个的员工名和工种编号

  1. SELECT last_name, job_id
  2. FROM employees
  3. WHERE job_id IN ('IT_PROG','AD_VP','AD_PRES');

IS NULL

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

  1. SELECT last_name, commission_pct
  2. FROM employees
  3. WHERE commission_pct IS NULL;

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

  1. SELECT last_name, commission_pct
  2. FROM employees
  3. WHERE commission_pct IS NOT NULL;

安全等于 <=>

  1. SELECT last_name, commission_pct
  2. FROM employees
  3. WHERE commission_pct <=> NULL;

SQL语句(一)基础查询与过滤数据的更多相关文章

  1. sql语句复习(基础-提升-技巧-经典数据开发案例-sql server配置)

    1 基础 1.说明:创建数据库 CREATE DATABASE database-name charset=utf8 2.说明:删除数据库 drop database dbname 3.说明:备份sq ...

  2. [转]在Excel中使用SQL语句实现精确查询

    本文转自:http://blog.sina.com.cn/s/blog_5fc375650102e1g5.html 今天在微博上看到@数据分析精选 分享的一篇文章,是关于<在Excel中使用SQ ...

  3. 使用SQL语句清空数据库所有表的数据

    使用SQL语句清空数据库所有表的数据 近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进 ...

  4. 使用传入的总记录数实现一条sql语句完成分页查询

    使用传入的总记录数实现一条sql语句完成分页查询     问题:在传统的分页查询的实现中不可避免的需要两条sql语句,一条用于查询数据一条用于查询总记录数.如下面的实际代码所示: Img1 当然如果使 ...

  5. mongodb 跟踪SQL语句及慢查询收集

    有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行  ./mongostat -port 端口号  ...

  6. 【hibernate spring data jpa】执行了save()方法 sql语句也执行了,但是数据并未插入数据库中

    执行了save()方法  sql语句也执行了,但是数据并未插入数据库中 解决方法: 是因为执行了save()方法,也执行了sql语句,但是因为使用的是 @Transactional 注解,不是手动去提 ...

  7. 在JDBC中实现SQL语句的模糊查询

    在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...

  8. oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by

    select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...

  9. 使用SQL语句的子查询批量复制表数据

    批量复制表数据这里有两种方法,下面分别来介绍这两种方法: 一.手动创建新表,然后复制数据 如果是要复制整个表的话,可以使用SQL SERVER自动生成CREATE脚本: 然后在脚本中改改表名就可以了, ...

随机推荐

  1. vue 快速入门 系列 —— vue loader 上

    其他章节请看: vue 快速入门 系列 vue loader 上 通过前面"webpack 系列"的学习,我们知道如何用 webpack 实现一个不成熟的脚手架,比如提供开发环境和 ...

  2. (Element UI 组件 Table)去除单元格底部的横线

    Element UI 组件 Table 有一个属性 border,添加它可以增加纵向边框,但是无法控制横线边框,因此即使是最简单的 el-table,也会包含一个底部横线. 这个底部横线其实是一个 b ...

  3. C++中运算符的重载

    运算符重载相当于运算符的函数重载,用于对已有的运算符进行重新定义,赋予其另一种功能,以适应不同的数据类型.我们之前提到过C++中的函数重载,可以根据形参的不同调用不同的函数,那么运算符重载跟函数重载的 ...

  4. 7、linux防火墙的使用(iptables)

    7.1.说明: CentOS 7 系统默认的防火墙是 Filewalld.不过,现在应该还有很多用户习惯使用 iptables.本文以 CentOS 7 为例, 说明在 CentOS 7 中如何安装并 ...

  5. 22、正则表达式(用于三剑客grep,awk,sed,内容中包含空行)

    简单的说就是为处理大量的字符串而定义的一套规则和方法,通过定义特殊符号的辅助,系统管理员就可以快速过滤,替换城输出需要的字符串 : ^:^word 表示匹配以什么字符开头的内容: $:word$表示匹 ...

  6. CentOS-Docker搭建Kafka(单点,含:zookeeper、kafka-manager)

    Docker搭建Kafka(单点,含:zookeeper.kafka-manager) 下载相关容器 $ docker pull wurstmeister/zookeeper $ docker pul ...

  7. Linux使用shell脚本监控

    (1)性能监控脚本 performance.sh #!/bin/bash #-------------------------------------------------------------- ...

  8. ExtJs4学习(九)读写器reader、writer

    Ext.data.reader.Json JSON Reader是用一个代理来读取服务端响应的JSON格式的返回值. 一般用于将结果加载成一个存储集-例如我们将创建一些如下东西: Ext.define ...

  9. NetCore微服务简单流程审批数据库设计及后台服务开发

    1.数据库设计 -- ---------------------------- -- Table structure for TBase_Flow -- ----------------------- ...

  10. ESP32-mqtt笔记

    基于ESP-IDF4.1 #include <stdio.h> #include <stdint.h> #include <stddef.h> #include & ...