DQL(Data Query Language)简单的来说就是数据的查询语言。

    1.最简单的查询(显示表中的所有信息)

语法: select * from 表名;

    2.普通查询

语法: select 字段列表 from 表名列表 where 条件列表;

注意:这些列表是可以有多个的意思,用逗号隔开,最后一项不加逗号。

这是表的最初始状态

如果想查询11岁的男生,则输入 SELECT age FROM tb1 WHERE sex='男';

创建一个新表

    3.基础查询

语法 select 列名1,列名2 from 表名;

注意:查询所有的用*(不推荐),或者在select后面写下全部列名;

再次查询地址

发现有一点问题,如果只显示地址,那么重复的地址被多次显示出来,那么就可以用去重查询。

    4.去重查询

语法: select distinct 列名 from 表名;

发现重复的地址全部只留下来了一个;

注意:在向表中插入数据的时候可能会遇到空字符,这样就会导致多个相同的地址存在,这是检查一下自己的代码。

    5.利用表中的数据进行计算查询

如果想知道上表的数学英语成绩的和

语法: select 列名1,列名2,列名3  【想要利用列名计算的表达式(支持普通的四则运算)】 from 表名;

发现可以算出来成绩的和,但是列名不合适,并且当英语为NULL的时候,总分也是NULL,本应该是,数学成绩,下面这两个问题一一解决,

(1)算出数据改名

语法:select select 列名1,列名2,列名3  【想要利用列名计算的表达式(支持普通的四则运算)】 as 新表名 from 表名;

注意:as可有可无;

(2)关于NULL的问题

分析,正常情况下,如果英语旷考,那么成绩应该为0

语法:select select 列名1,列名2,列名3  【想要利用列名计算的表达式(支持普通的四则运算)】 as 新表名 from 表名;只需要在表达式里加上ifnull方法;

注意:ifnull方法有两个参数前面是可能会出现NULL值得列名,后面是如果遇到NULL则把他的值改为什么,例如下面例子 SELECT NAME,math,english, math+IFNULL(english,0) AS 总分 FROM tb2;

发现完美的解决了上面的两个问题。

    6.条件查询,其中关键字分别由<,>,<=,>=,=,<>,between and,in,like,is NULL,&&(and),||(or),!。

(1)想要查询年龄等于23的人

语法:SELECT * FROM 数据库 WHERE 条件;

注意:在java中如果用iF判断相等需要用==,而在sql中只需要一个=;

(2)想要查询年龄不为23 的人SELECT * FROM tb2 WHERE age !=23;

可见没有年龄等于23的人,还有一种方法,用到MySQL专有的不等号<>;

可见结果一模一样

(3)查询一个范围内的人

当然可以用and这两个是一个意思,还可以用另一种方法,那就是between and

注意:两个边界都包含及大于等于和小于等于

结果一模一样。

(4)想查询年龄为23,48,45的,人都比较懒,不想写三行,于是还有一种简便方法。那就是in();

(5)想要查询英语旷考的人,正常的想法就是判断english=null;那么对不对呢?

发现查询不到,也就是不能用等号判断是否为NULL,那就要用is;

发现查到了英语缺考的人。

(6)想要模糊查询;

语法like 条件用''括起,然后有两种字符:%任意个字符,_一个字符,想查,第二个字为三的人,

如愿以偿;

    7.排序查询

语法 select * from 表名 order by 排序字段1 排序条件1,排序字段2 排序条件2;

注意:如果有多个条件,当前面的值一样,才会判断后面的条件,并且排除了非空的情况,即不算NULL值;如果不写递增递减,则默认递增(ASC),递减(DESC)。

发现,已经按我们的想法排序出来了

    8.聚合函数:将一列数据作为一个整体计算

语法 select 聚合函数 from 表名;结果会呈单行单列的方式显示,其中聚合函数有五个,分别为count()计算个数,max()求最大值,min()求最小值,sum()求和,avg()求平均值,在括号里面写要计算你的列名。仅用算英语总分为例

另外还有一个count方法需要特殊强调,如果用count(*),在所有列中,只要有一个列没有NULL那么就会成为一条记录

    9.分组查询

语法: SELECT 列名或者聚合函数 from 表名 group by 列名。

注意:分组之后查询字段为分组字段 或者聚合函数,其他无意义

(1)低分不参与分组,限定分组条件。

注意:分组之后人数要大于两个人,即count(*)的值大于2

注意:having和where 的区别:

(1)作用位置不同:where是分组之前限定,不参与分组。而having是分组之后限定,如果不满足条件,则不会被查询出来

(2)where后不可以跟聚合函数,而having后面可以跟聚合函数。

    10.分页查询

语法:开始的索引,每页查询的条数。select * from 表名 limit 开始的索引,每页查询条数。

注意:开始的索引=(当前页码-1)*每页显示条数。分页操作是一种"方言",也就是说只能在MySQL中使用,别的数据库就不可以用limit关键字。

可以发现,数据每页四个在页面中呈现出来,当然最后一页最多有四个数据,最少一个数据。

最新文章

  1. MongoDB学习笔记&mdash;03 增删改查操作
  2. VB6 GDI+ 入门教程[6] 图片
  3. Ensemble Approaches分类技术
  4. js获取当前url信息
  5. SQLServer数据库表中将指定列分组转一行
  6. 2015必须要看的APP源码
  7. transform-origin 的定位
  8. 【算法系列学习】[kuangbin带你飞]专题十二 基础DP1 C - Monkey and Banana
  9. perl学习笔记--搭建开发环境
  10. FBI树-数据结构(二叉树)
  11. C#中解析JSON数据,并获取到其中的值
  12. Java IO流学习总结一:输入输出流
  13. Alpha 任务状态总览(持续更新)
  14. React Native(九)&mdash;&mdash;实现仿微信朋友圈发表动态功能
  15. SVG动画总结
  16. Linux基础-vim编辑器
  17. visual box 安装 centos7后,无法上网
  18. Mybatis入门2-动态代理实现CRUD
  19. Spring Boot2.0之整合多数据源
  20. Odoo calendar 提醒器

热门文章

  1. 思考--PostgreSQL在与mysql的比较中稍微弱势项
  2. Vue 进阶系列(一)之响应式原理及实现
  3. redis 命令都在这了
  4. sqlserver2008 批量导出所有的作业
  5. Solaris下truss的使用
  6. 需求文档(PRD文档)
  7. 程序员称为高手的10条心得(摘自http://www.jizhuomi.com/software/394.html)
  8. python-装饰器2
  9. iptable防火墙原理
  10. mysql占用磁盘IO过高的解决办法