美文网首页
MySQL的基本查询和条件查询

MySQL的基本查询和条件查询

作者: 程序员汪汪 | 来源:发表于2021-03-12 03:33 被阅读0次

使用的数据,请前往公众号【程序员汪汪】回复dump,即可获取sql文件。后面的文章会一直使用这些数据。

获取sql文件后,可以使用图形界面工具(如:Navicat),创建一个空的数据库后,执行sql文件中的sql语句。

也可以创建好一个空的数据库后,在系统命令行(不是mysql的shell环境)中使用下面的命令将数据导入数据库:

# 例如:
# root换成自己的mysql用户名,123456换成自己的mysql密码
# demo是我新建的空的数据库, D:\dump.sql 换成自己下载的dump.sql文件所在路径即可。
mysql -u root -p 123456 demo < D:\dump.sql

SELECT语句

SELECT *|{[DISTINCT] column|expression [alias],...} FROM 表名
  • SELECT 标识选择哪些列
  • FROM 标识从哪个表中选

语法:

SELECT 查询列表 FROM 表名;

特点:

  1. 查询列表可以是:表中的字段、常量值、表达式、函数
  2. 查询的结果是一个虚拟的表格

查询全部列

SELECT * FROM 表名;

查询特定的列

SELECT id, name FROM student;

查询表达式

SELECT 100%98;

查询函数

SELECT NOW();

查询时给列取别名

在别名中包含空格或特殊的字符时,使用英文双引号包裹别名

使用别名的好处:

  1. 便于理解
  2. 如果要查询的字段有重名的情况,使用别名可以区分开来

使用as

SELECT 列名1 AS "列名1别名", 列名2 as "列名2别名" FROM 表名;

案例:

SELECT 100%98 as "结果";
SELECT last_name AS "姓", first_name AS "名" FROM employees;

使用空格

SELECT 列名1 "列名1别名", 列名2 "列名2别名" FROM 表名; 

案例:

#查询salary,显示结果为 out_put
SELECT salary "out_put" FROM employees;

查询去重

SELECT DISTINCT 字段名 FROM 表名;

案例:

#查询员工表中涉及到的所有部门编号
SELECT DISTINCT department_id FROM employees;

加号(+)的作用

Java中的 + 号:

  1. 运算符,两个操作数都为数值型
  2. 连接符,只要有一个操作数为字符串,就会被当做连接符使用

MySQL中的 + 号:仅仅只有一个功能,用作运算,即运算符

# 直接运算
SELECT 数值 + 数值;

# 先试图将字符转换成数值,如果转换成功,则继续运算,否则转换成0,在做运算
SELECT 字符 + 数值;

# 结果都为null
SELECT NULL + 值;

CONCAT函数

功能:拼接字符,相当于java中的 "1" + "23" = "123";

SELECT CONCAT(字符1, 字符2, 字符3,...);

IFNULL函数

功能:判断某字段或者表达式是否为null,如果为null返回指定的值,否则返回原本的值

# 如果commission_pct列为null则返回0
SELECT IFNULL(commission_pct, 0) FROM employees;

ISNULL函数

功能:判断某字段或表达式是否为null,如果是则返回1,否则返回0

条件查询

过滤:使用 WHERE 子句,将不满足条件的行(记录)过滤掉

语法:

SELECT 查询列表 FROM 表名 WHERE 筛选条件;
运算符 符号 描述
比较(条件)运算符 >、<、>=、<=、=、<>(!=) 大于、小于、大于等于、小于等于、等于、不等于
BETWEEN...AND... 显示在某一区间的值(包含头尾)
IN(可能的值的集合) 显示在in列表中的值,例如:IN(100, 200, 300)
LIKE 通配符 模糊查询,Like语句中有两个通配符:%用来匹配多个字符;例如first_name like 'a%'; 用来匹配一个字符。例如first_name like 'a';
IS NULL 判断是否为空;IS NULL判断为空; IS NOT NULL判断不为空
逻辑运算符 AND(&&) 多个条件同时成立
逻辑运算符 OR(||) 多个条件任一成立
逻辑运算符 NOT(!) 不成立或者说去反,例:WHERE NOT(salary > 100)

注意:为了方便建表,将between...and.. 、in、like、is null归为运算符,可能不是很准确

按条件表达式筛选

  1. 查询工资>12000的员工信息
SELECT
    * 
FROM
    employees 
WHERE
    salary > 12000;
  1. 查询部门编号不等于90的员工名和部门编号
SELECT
    last_name,
    department_id 
FROM
    employees 
WHERE
    department_id <> 90;

按逻辑表达式筛选

  1. 查询工资在10000到20000之间的员工名、工资以及奖金率(commission_pct)
SELECT
    last_name,
    salary,
    commission_pct 
FROM
    employees 
WHERE
    salary >= 10000 AND salary <= 20000;

或者

SELECT
    last_name,
    salary,
    commission_pct 
FROM
    employees 
WHERE
    salary BETWEEN 10000 AND 20000;
  1. 查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT 
    * 
FROM 
    employees 
WHERE 
    NOT ( department_id >= 90 AND department_id <= 110 ) 
    OR salary > 15000;

或者

SELECT 
    * 
FROM 
    employees 
WHERE 
    NOT ( department_id BETWEEN 90 AND 110) 
    OR salary > 15000;

模糊查询

关键字:LIKE

特点:

  1. 一般和通配符搭配使用

    通配符:

    %:任意多个字符,包含0个字符

    _ :任意单个字符

案例:

  1. 查询员工名中包含字符a的员工信息
SELECT
    *
FROM
    employees
WHERE
    last_name LIKE '%a%';
  1. 查询员工名中第三个字符为m,第五个字符为n的员工名和工资
SELECT
    last_name,
    salary
FROM
    employees
WHERE
    last_name LIKE '__m_n%';
  1. 查询员工名中第二个字符为_的员工名

    如果查询的字符为_,这时就需要转义,可以使用\,可以使用ESCAPE,定义一个转义标识

    ESCAPE:定义转义标识

SELECT
    last_name
FROM
    employees
WHERE
    last_name LIKE '_$_%' ESCAPE '$';

IN

含义:判断某字段的值是否属于IN列表中的某一项

特点:

  1. 使用IN提高语句简洁度
  2. 列表的值类型必须一致或兼容
  3. 列表中不支持通配符

查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个的员工名和工种编号

SELECT
    last_name,
    job_id
FROM
    employees
WHERE 
    job_id IN('IT_PROG', 'AD_VP', 'AD_PRES');

或者

SELECT
    last_name,
    job_id
FROM
    employees
WHERE
    job_id = 'IT_PROG' OR job_id = 'AD_VP' OR job_id = 'AD_PRES';

IS NULL

=或<>不能用于判断null值;IS NULL 或 IS NOT NULL可以判断null值

  1. 查询没有奖金的员工名和奖金率
SELECT
    last_name,
    commission_pct
FROM
    employees
WHERE
    commission_pct IS NULL;
  1. 查询有奖金的员工名和奖金率
SELECT
    last_name,
    commission_pct
FROM
    employees
WHERE
    commission_pct IS NOT NULL;

安全等于<=>

  1. 查询没有奖金的员工名和奖金率
SELECT
    last_name,
    commission_pct
FROM
    employees
WHERE
    commission_pct <=> NULL;
  1. 查询工资为12000的员工信息
SELECT
    *
FROM
    employees
WHERE
    salary <=> 12000;

注意:

IS NULL:仅仅可以判断NULL值,可读性比较高,建议使用

<=>:既可以判断NULL值,又可以判断普通的数据,可读性比较低,不推荐使用

相关文章

  • MySQL的基本查询和条件查询

    使用的数据,请前往公众号【程序员汪汪】回复dump,即可获取sql文件。后面的文章会一直使用这些数据。 获取sql...

  • MySql的查询总结

    Num01-->mysql基本查询 Num02-->mysql条件查询 Num03-->mysql聚合函数 Num...

  • 2021-11-02 RD4 review SQL

    安装 服务mysql 可视化软件 navicat 关系模型 主键 外键 索引 查询数据 基本查询 条件查询 投影查...

  • mysql 查询

    mysql的查询、子查询及连接查询 一、mysql查询的五种子句 where(条件查询)、having(筛选)、g...

  • MySql查询-条件查询

    使用where子句对表中的数据筛选,结果为true的行会出现在结果集中 语法如下: where后面支持多种运算符,...

  • MySQL--基础二

    本节总结MySQL的筛选条件,聚合与分组,子查询,连接查询。 MySQL的筛选条件 MySQL中的比较运算符: 比...

  • 11django模型[条件查询]

    字段查询查询mysql数据库日志条件查询1) 查询等2) 模糊查询3) 空查询4) 范围查询5) 比较查询6) 日...

  • 面试总结

    1.Java编程 2. Mysql添加索引后查询速度没有变化 mysql查询语句的where条件字段和select...

  • 03-MongoDB-读取文档

    查询文档 1.查询文档 db. .find( ​ , ​ ) query: 查询条件, 相当于MySQL中...

  • sql学习笔记

    sql教程 1基本查询 基本查询 SELECT * FROM <表名>以查询到一张表的所有记录 2条件查询 条件查...

网友评论

      本文标题:MySQL的基本查询和条件查询

      本文链接:https://www.haomeiwen.com/subject/cieaqltx.html