文章目录

  • 一、 基本查询
    • 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. 使用Auto TensorCore CodeGen优化Matmul
  2. 流程控制 - PHP手册笔记
  3. 声明:songzijian这个域名已经被抢注。大家别上了。不是我了。
  4. 如何创建 Code Snippet
  5. 一文看懂NumPy的切片中常用的冒号
  6. tf.placeholder函数的用法
  7. stm32 led屏控制卡_室内LED显示屏如何安装?
  8. mybatis generator使用_SpringBoot整合Mybatis实现自动生成代码 || 附阿里P8独家SpringBoot视频资料...
  9. 简述流水线基本工作原理 计算机,自动化专业计算机技术基础作业题(50题)
  10. Keepalived相关参数说明
  11. Linux安装JDK1.6 rpm.bin格式的安装配置
  12. php smarty if,php Smarty中if,elseif,else用法详解
  13. paip.前端加载时间分析之道优化最佳实践
  14. 个人征信系统机构接入工作流程
  15. 与君初相识之Linux与Java SE
  16. python中nums[:]和nums
  17. av发行商_如何向发行商推销游戏
  18. Ubuntu无法连接网络?
  19. C语言用函数求圆的面积和周长,用C语言:编写两个函数,分别计算圆的面积和周长,要求在主函数中输入半径,调用函数进行计算,主函数中...
  20. nodejs探秘:require加载模块的原理及代码实现

热门文章

  1. element上传照片(el-upload 超简单)
  2. Linux系统日志及分析
  3. Flash与页面交互的钥匙之 AllowScriptAccess
  4. deepin显卡驱动管理器在哪_deepin显卡驱动管理器切换NV-PRIME失败的解决方案
  5. C#获取bing每日一图的图片及图片故事(IDE为VS Code .net core)
  6. 眼睛不舒服就滴眼药水,但眼药水不是你想用就能用的!
  7. 关于“reset high speed USB device using ehci_hcd and address 2”
  8. 你知道excel的动态图表功能吗
  9. 微信小程序lianc++后台
  10. selenium 滑块验证码移动加速度