文章目录

  • 一、 基本查询
    • 1.1 查询所有数据
    • 1.2 查询指定列的信息
    • 1.3 条件查询
    • 1.4 运算符查询
  • 二、模糊查询 、滤重和别名
    • 2.1 模糊查询
    • 2.2 滤重、别名以及列运算
  • 三、排序查询及聚合函数
    • 3.1 排序查询
    • 3.2 聚合函数
    • 3.3 保留小数点数
    • 3.4 其他聚合函数
  • 四、分组查询及查询语句的执行顺序
    • 4.1 分组查询
    • 4.2查询语句的执行顺序
    • 4.3 where和having的区别

一、 基本查询

1.1 查询所有数据

格式为:select * from 表名,意为查询表的所有数据。

1.2 查询指定列的信息

格式为:select+列名1+列名…+from+表名

1.3 条件查询

格式为:select * from 表名 where 指定条件

1.4 运算符查询

  • 查询成绩不及格的同学:select * from stu where score<60;
  • 查询成绩不为90的同学:
    (1)select * from stu where not score=90;
    (2)select * from stu where !=90;
    (3)select * from stu where <>90;
  • 查询成绩在80和90之间的同学:
    (1)select * from stu where score between 80 and 90;
    (2)select * from stu where score score >=80 and score <=90;
  • 查询成绩为88,95,100的同学:
    (1)select * from stu where score=88 or score=95 or score=100;
    (2)select * from stu where score in(88,95,100);

二、模糊查询 、滤重和别名

2.1 模糊查询

  • like用来模糊查询,查询所有姓刘的学生的信息:
    (1)select * from stu where name like ‘刘%’;
    (2)select * from stu where name like ‘刘_’;
    其中第一个只要是以刘开头的就可以被搜索到,第二个必须是以刘开头的两个字才可以被搜索到。

  • 查询成绩不为null的学生:select * from stu where score is not null;

  • 查询成绩为null的学生:select * from stu where score is null;

2.2 滤重、别名以及列运算

  • 过滤掉重复的数据,如过滤掉重复的性别:select distinct gender from stu;
  • 给列名起别名,如将字段英文换成中文:select name as 姓名,gender as 性别 from stu;
    格式为:select 列名 as 别名+from+表名,就算取别名了,数据库里的列名是没有发生变化的,只是那么显示,as后边接的字符串也不用加引号。
  • 列运算,如给所有的同学分数+10分:select name,score+10 from stu;
  • 关于null的处理,如:select name,ifnull(score,0) from stu; 这个的意思是如果列名为空,就给它一个默认值,这样也方便参与一些运算。

三、排序查询及聚合函数

3.1 排序查询

  • 根据score降序查询:select * from stu order by score desc;
    desc为降序,asc为升序,如果不做要求默认为升序。

  • 根据指定条件排序,现在想对所有的男生的成绩升序查询为:select * from stu where gender=‘男’ order by score;

  • 多重排序,如根据age升序,如果age一样,根据score降序:select * from stu order by age asc,score desc;

3.2 聚合函数

  • 统计数量:
    (1)select count(*) from stu; 统计数据总量
    (2)select count(score) from stu; 统计分数不为空的数量
  • 统计和,如统计班上的总分:select sum(score) from stu;
  • 统计平均分,如统计班上的平均分:
    (1)select avg(score) from stu;
    (2)select sum(score)/count(*) from stu;
    这两种的区别是第一种如果数据为null就不参与运算了,第二种为null的数据也加入运算了。

3.3 保留小数点数

round(avg(score),2)即表示将求出来的分数平均分保留两位小数。

3.4 其他聚合函数

  • max(score):求分数这一列的最大值
  • min(score):求分数这一列的最小值

注意点:在聚合函数里,null是不参与运算的;如果想让null参与运算,可以使用ifnull(列名,默认值)给null设定一个默认值。

四、分组查询及查询语句的执行顺序

4.1 分组查询

  • 分组查询平均分,如根据性别分组查询,格式为:select+列名+from+group by+列名,SQL语句为:select gender,arg(score) as 平均分 from stu group gender;

  • 根据特定条件分组查询平均分大于60分的:select gender,arg(score) as 平均分 from stu group gender having 平均分>60;
    where后边是专门是接查询条件的,但是在分组查询中一般用having代替,放在group by 后边。

4.2查询语句的执行顺序


(1)第一步为from+表名,查询表中的所有数据
(2)第二步为where+指定条件,查询出指定条件的数据,其中起别名:as+别名是第2.5步,所以where后边不能接别名,因为别名都还没有执行。
(3)第三步为group by+列名,按照指定列名分组,其中聚合函数avg(列名)是3.5步,所以分组后边不能接聚合函数。
(4)第四步为having+条件,这个时候having后的查询条件既可以有别名,也可以有聚合函数。
(5)第五步为order by+列名+desc/asc,排序语句是最后执行的,所以后边也可以接别名。

where先执行可以先将数据筛选减少计算量以提高查询效率。

4.3 where和having的区别

(1)having通常与group by结合使用。
(2)where是在分组之前进行过滤的,having是在分组之后过滤的。
(3)having可以接聚合函数和别名,where都不可以,所以having的查询范围更广。

数据库之查询数据记录相关推荐

  1. php 查看mysql连接数据库_php基础之连接mysql数据库和查询数据

    php基础之连接mysql数据库和查询数据 文章主要介绍了php连接mysql数据库和查询数据的方法和示例,需要的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕 ...

  2. flask查询mysql数据展示_flask再学习-思考之怎么从数据库中查询数据在页面展示!...

    看别人视频觉得很简单,要自己做蒙蔽了!这样子.NO! 1. 流程: 首先要有和数据库连接的驱动!一般有PYMySQL mysqlclient 等 使用扩展Flask-SQLAlchemy 获得orm对 ...

  3. java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码

    jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...

  4. 直接从数据库中查询数据生成email附件(excel)

    算是自己做一个记录和备份吧 直接上代码,生成Excel的. 1.ExcelUtil4 package com.vstrong.utils;import java.io.IOException; imp ...

  5. php连接基础方法怎么查询数据库,php基础之连接mysql数据库和查询数据

    连接数据库,有三种方法 1. 常规方式: ?1234567891011121314$con=mysql_connect($dbhostip,$username,$userpassword)or die ...

  6. 02-JDBC连接MySQL数据库【查询数据】

    JDBC自学教程–终篇总结: 地址:http://blog.csdn.net/baidu_37107022/article/details/72600018 1.实现查询步骤 1)实现注册的两种方式 ...

  7. PHP笔记-连接MySQL数据库及查询数据

    程序运行截图: 数据库内容: 要配置.我这是Windows的机器,修改php.ini 将此处放开即可. 程序结构: list.html <!DOCTYPE html> <html l ...

  8. 破解微信数据库 并查询数据上传服务器

    由于工作需求破解了微信的数据库 并获取想要的信息上传服务器 都是内部手机 网上大神反编译了微信 发现微信的数据库是通过 手机的IMEI(唯一识别码) + UIN 大写的IMEI + UIN 进行MD5 ...

  9. 【java 操作mysql】java连接mysql数据库并查询数据

    做java开发不可避免要处理数据库,所以这里写篇用jdbc来连接mysql的文章,java是一种高性能,通用的语言 .这使得它适合于编写高效的ETL生产代码和计算密集型的机器学习算法. 主要内容包括: ...

最新文章

  1. Mybatis 工作总结 持续更新
  2. 关于NandFlash在实际产品使用上的一些经验
  3. Smartform中如何设置背景阴影色(Shading)
  4. C++实现huffman哈夫曼编码的算法(附完整源码)
  5. Intellij启动界面导入maven工程,且该maven工程不具备intellij配置文件
  6. pdmreader读写注册表失败_用PDMreader
  7. 【Transformer】Deformable DETR: deformable transformers for end-to-end object detection
  8. 服务器mysql如何添加数据库文件,如何在使用MySQL作为嵌入式服务器时创建数据库文件...
  9. “秃如其来”的90后,造就了一个蒸蒸日上的产业
  10. Nginx 负载均衡 配置全过程
  11. 2021年甘肃省中职生高考成绩查询,甘肃2021年中专生怎么参加普通高考
  12. 995. K 连续位的最小翻转次数
  13. 数据告诉你,抖音凭什么逆袭?
  14. DPDK报文分类与访问控制
  15. 调用虚拟内存编译时的error处理
  16. 一场云计算基础设施的饕餮盛宴 --- OpenStack柏林峰会见闻及感想
  17. ubuntu下qt+科大讯飞语音库的导入方法
  18. JS定义const常量对象
  19. 通过ajax获取对象后动态插入文本框
  20. AsyncHttpClient 请求

热门文章

  1. VUE 实现复制内容到剪贴板的方法
  2. 股份授权证明(DPOS)概述
  3. 阿里的nacos+springboot+dubbo2.7.3集成以及统一处理异常的两种方式
  4. WPF 自定义 ToggleButton 样式
  5. 网名接龙之--引路人
  6. 批量png图片数据转yuv格式数据并保存
  7. H5网址/网站如何打包成苹果包ipa?方法记录
  8. 1000的阶层 java,1000!阶乘怎么算
  9. 华为荣耀V8手机(EMUI5.0)无法连接电脑MTP模式
  10. TCP/IP(八)之总结TCP/IP四层模型