006.MySQL_查询数据

|------------------------------------------------------------------------------------------------------------------|
| 课 程 推 荐 |
| 我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 |
| 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 |
| 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 |
| PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈 |
| Oracle数据库教程:👉👉 Oracle数据库教程合集 👈👈 |
| MySQL数据库教程:👉👉 MySQL数据库教程合集 👈👈 |
| 优 质 资 源 下 载 :👉👉 资源下载合集 👈👈 |
| 优 质 教 程 推 荐:👉👉 Python爬虫从入门到入狱系列 合集 👈👈 |
| . |


MySQL数据库教程目录

查询数据

创建数据
  • 创建测试数据库表t_student

    sql 复制代码
    CREATE TABLE t_student (
    	id INT,
    	stuName VARCHAR (60),
    	age INT,
    	sex VARCHAR (30),
    	gradeName VARCHAR (60)
    ); 
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('1','张三','23','男','一年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('2','张三丰','25','男','二年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('3','李四','23','男','一年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('4','王五','22','男','三年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('5','珍妮','21','女','一年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('6','李娜','26','女','二年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('7','王峰','20','男','三年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('8','梦娜','21','女','二年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('9','小黑','22','男','一年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('10','追风','25','男','二年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('11','小小张三','21',NULL,'二年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('12','小张三','23','男','二年级');
    INSERT INTO t_student (id, stuName, age, sex, gradeName) VALUES('13','张三锋小','24',NULL,'二年级');

查询关键字
功能 关键字 语法
查询所有数据 select * from 表名
查询指定字段 select 指定字段名 from 表名
条件查询 Where select * from 表名 where 条件表达式
关键字查询 [not] in select * from 表名 where 字段名 [not] in (元素1,元素2,...)
范围查询 [not] between and select * from 表名 where 字段 [not] between 值1 and 值2
模糊查询 [not] like select * from 表名 字段 [not] like '%元素%' select * from 表名 字段 [not] like '元素'
空值查询 is [not] null select * from 表名 where 字段 is [not] null
且多条件查询 and select * from 表名 where 条件表达式1 and 条件表达式2
或多条件查询 or select * from 表名 where 条件表达式1 or 条件表达式2
去重复查询 distinct select distinct 字段 from 表名
对结果排序 order by select * from 表名 order by 排序字段 [asc/desc]
分组查询 group by select 分组字段,count(字段) from 表名 group by 分组字段
分页查询 limit select * from 表名 limit 初始位置,每页记录数

语法
不带查询条件
  • 查询所有数据

    sql 复制代码
    SELECT * FROM 表名;
    SELECT 字段1,字段2,字段3,... FROM 表名;
  • 查询指定字段

    sql 复制代码
    SELECT 字段1,字段2,...FROM 表名;
带查询条件
  • Where条件查询

    sql 复制代码
    SELECT 字段1,字段2,字段3,... FROM 表名 WHERE 条件表达式;
  • IN关键字查询(包含)

    sql 复制代码
    SELECT 字段1,字段2,字段3,... FROM 表名 WHERE 字段 [NOT]IN (元素1,元素2,元素3,....);
  • 带BETWEEN AND的范围查询

    sql 复制代码
    SELECT 字段1,字段2,字段3,... FROM 表名 WHERE 字段 BETWEEN 值1 AND 值2;
  • 带 LIKE 的模糊查询

    sql 复制代码
    SELECT 字段1,字段2,字段3,... FROM 表名 WHERE 字段 LIKE '字符串';
    
    %:代表任意字符串
    _:代表单个字符串
  • 空值查询

    sql 复制代码
    SELECT 字段1,字段2,字段3,... FROM 表名 WHERE 字段 IS [NOT] NULL;
多条件查询
  • AND 多条件查询[且]

    sql 复制代码
    SELECT 字段1,字段2,字段3,... FROM 表名 WHERE 条件表达式1 AND 条件表达式2 [AND 条件表达式n];
  • OR 多条件查询[或]

    sql 复制代码
    SELECT 字段 1,字段 2...FROM 表名 WHERE 条件表达式1 OR 条件表达式2 [OR 条件表达式n];
去重
  • DISTINCT 去重复查询

    sql 复制代码
    SELECT DISTINCT 字段名 FROM 表名;
排序
  • ORDER BY 对查询结果排序

    sql 复制代码
    SELECT 字段 1,字段 2...FROM 表名 ORDER BY 属性名 [ASC|DESC]
    
    ASC:升序(默认)
    DESC:降序
分组
  • GROUP BY 分组查询

    sql 复制代码
    SELECT 字段1,字段2,字段3,... FROM 表名 GROUP BY 字段名 [HAVING 条件表达式][WITH ROLLUP]
  • GROUP BY单独使用毫无意义

    • 与 GROUP_CONCAT()函数一起使用(按分组将数据合并在一行,并用","分隔);
    • 与聚合函数一起使用(SUM、COUNT、AVG、MAX、MIN);
    • 与 HAVING 一起使用(HAVING对结果进行筛选);
    • 与 WITH ROLLUP 一起使用(最后加入一个汇总行);
  • GROUP BY示例

    • GROUP_CONCAT示例

      sql 复制代码
      SELECT gradeName,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName;
    • 与聚合函数一起使用 示例

      sql 复制代码
      1、计数 COUNT
      SELECT gradeName,COUNT(stuName) AS "人数" FROM t_student GROUP BY gradeName;
      
      2、求和 SUM
      SELECT gradeName,SUM(age) AS "总年龄" FROM t_student GROUP BY gradeName;
      
      3、平均值 AVG
      SELECT gradeName,AVG(AGE) AS "总年龄" FROM t_student GROUP BY gradeName;
    • 与HAVING一起使用(对查询结果进行筛选)

      sql 复制代码
      SELECT gradeName,AVG(AGE) AS "总年龄" FROM t_student GROUP BY gradeName HAVING AVG(AGE)>22;
    • 与 WITH ROLLUP 一起使用

      sql 复制代码
      SELECT gradeName,AVG(AGE) AS "总年龄" FROM t_student GROUP BY gradeName WITH ROLLUP;
      
      SELECT gradeName,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName WITH ROLLUP;
    • 如果分组项为数值,则求和。如果分组项为文本,则合并

    • WITH ROLLUP可以配合COALESCE使用

      sql 复制代码
      SELECT COALESCE(gradeName,'合计'),AVG(AGE) AS "总年龄" FROM t_student GROUP BY gradeName WITH ROLLUP;
      
      SELECT COALESCE(gradeName,'汇总'),GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName WITH ROLLUP;
    • COALESCE 说明

      sql 复制代码
      select coalesce(表达式,'指定值') from 表名		
      >> 当表达式的值为null时,返回指定值,否则返回表达式的值
      
      
      select coalesce(表达式1,表达式2,'指定值') from 表名		
      >> 当表达式1不为null,返回表达式1的值。
      >> 当表达式1为null,而表达式2不为null的时候,返回表达式2的值。
      >> 只有当表达式1和表达式2均为null的时候,将返回指定值
分页查询
  • LIMIT 分页查询

    sql 复制代码
    SELECT 字段1,字段2,...FROM 表名 LIMIT 初始位置,每页记录数;
  • 注意:LIMIT的初始位置是从0开始(第一条数据)

  • LIMIT 示例

    sql 复制代码
    SELECT * FROM t_student LIMIT 0,5; -- 取第1-第5条数据
    SELECT * FROM t_student LIMIT 5,5; -- 取第6-第10条数据
    SELECT * FROM t_student LIMIT 10,5; -- 取第11-最后一条数据
相关推荐
TDengine (老段)17 分钟前
TDengine 的 AI 应用实战——运维异常检测
大数据·数据库·人工智能·物联网·时序数据库·tdengine·涛思数据
Le_ee28 分钟前
dvwa7——SQL Injection
数据库·sql·网络安全·靶场·token·dvwa
依稀i1231 小时前
MySQL连接报SSL错误
数据库·mysql·ssl
kaede1 小时前
MySQL权限详解!
数据库·mysql
学海无涯,行者无疆1 小时前
深入浅出:Oracle 数据库 SQL 执行计划查看详解(1)——基础概念与查看方式
数据库·sql·oracle·执行计划·sql执行计划·查看执行计划·sql性能优化
多多*1 小时前
蓝桥杯国赛训练 day1
java·开发语言·数据库·redis·缓存·职场和发展·蓝桥杯
可观测性用观测云2 小时前
HikariCP 可观测性最佳实践
数据库
望获linux2 小时前
【Linux基础知识系列】第八篇-基本网络配置
linux·数据库·postgresql·操作系统·php·开源软件·rtos
小菜刀刀2 小时前
WAF绕过,网络层面后门分析,Windows/linux/数据库提权实验
数据库·windows
萝卜白菜。2 小时前
关于TongWeb数据源兼容mysql驱动的注意事项
java·mysql