前言:

  DQL数据库查询语言是我们在开发中最常使用的SQL,这一章总结了单表操作部分的常用查询方式

  主要操作有:查询所有字段、查询指定字段、查询指定记录、带IN的关键字查询,范围查询,陪查询、查询空值

  带AND的多条件查询、带OR的多条件查询,关键字DISTINCT,查询结果排序,分组查询。分页查询等

准备好数据测试表 

 mysql> select * from student;
+------+----------+-------+----------+-------------+
| s_id | s_name | s_age | s_gender | s_major |
+------+----------+-------+----------+-------------+
| 1 | 马化腾 | 54 | 男 | CEO |
| 2 | 雷军 | 48 | 男 | CEO |
| 3 | 丁磊 | 46 | 男 | CEO |
| 4 | 马云 | 51 | 男 | CEO |
| 5 | 刘强东 | 45 | 男 | CEO |
| 6 | 王健林 | 65 | 男 | CEO |
| 7 | 周鸿祎 | 46 | 男 | CEO |
| 8 | 章泽天 | 25 | 女 | NULL |
| 9 | 章子怡 | 39 | 女 | NULL |
| 10 | 张一山 | 27 | 男 | 演员 |
| 11 | 冯小刚 | 66 | 男 | 导演 |
| 12 | 张艺谋 | 68 | 男 | 导演 |
| 13 | 刘亦菲 | 32 | 女 | 演员 |
| 14 | 莫言 | 70 | 男 | 作家 |
| 15 | 科比 | 35 | 男 | 运动员 |
| 16 | 梅西 | 31 | 男 | 运动员 |
| 17 | 约翰塞纳 | 42 | 男 | 运动员 |
| 18 | 凤姐 | 36 | 女 | NULL |
| 19 | 詹姆斯 | 31 | 男 | 运动员 |
| 20 | 内马尔 | 25 | 男 | 运动员 |
| 21 | 胡歌 | 35 | 男 | 演员 |
| 22 | 许家印 | 67 | 男 | CEO |
| 23 | 周杰伦 | 35 | 男 | 歌手 |
| 24 | 鹿晗 | 27 | 男 | 偶像明星 |
| 25 | P-Gone | 20 | 男 | 歌手 |
| 26 | 李安 | 55 | 男 | 导演 |
| 27 | 斯图尔特 | 28 | 女 | 演员 |
| 29 | 犀利哥 | 45 | 男 | 乞丐 |
| 31 | 冯提莫 | 26 | 女 | 主播 |
| 32 | 卢本伟 | 25 | 男 | 主播 |
| 33 | 小狗 | 21 | 男 | LOL职业选手 |
| 34 | Gogoing | 26 | 男 | LOL职业选手 |
| 35 | 仙凡 | 27 | 男 | 主播 |
| 36 | 黑人毅 | 29 | 男 | 主播 |
| 37 | 旭旭宝宝 | 28 | 男 | 主播 |
| 38 | 大龙猫 | 27 | 男 | 主播 |
| 39 | 奥巴马 | 57 | 男 | 前美国总统 |
| 40 | 克林顿 | 20 | 男 | 前美国总统 |
| 42 | 林俊杰 | 37 | 男 | 歌手 |
| 43 | 张韶涵 | 35 | 女 | 歌手 |
| 44 | 杨紫 | 27 | 女 | 演员 |
| 45 | 马东 | 49 | 男 | 主持人 |
+------+----------+-------+----------+-------------+
42 rows in set (0.00 sec)

练习的数据库表

一:查询所有

  1.1:查询所有记录

      select * from student;

  1.2:查询指定字段

      select s_id,s_name,s_major from student;

  1.3:查询指定记录(带条件)

      select * from student where s_age > 50;

二:关键字IN

  2.1:in(xx,yy,mm,..)满足条件的都会被查出来

  

三:带BETWEEN AND 关键字

  3.1:between xx and yy指定了范围[xx yy]前后都包括在内

  

四:带LIKE的模糊查询

  4.1:字段  LIKE  '值'--表示全匹配,LIKE相当于= 

  

  4.2:字段 LIKE '%值';匹配最后一个

  4.3:字段 LIKE '值%';匹配第一个

  4.4:字段 LIKE '%值%';全匹配

  

  4.5:字段 LIKE '_值';  _表示一个字符占位符

  4.6:字段 LIKE '值_';

  4.7:字段 LIKE '_值'_; 

 mysql> select * from student where s_name like '__马';
+------+--------+-------+----------+------------+
| s_id | s_name | s_age | s_gender | s_major |
+------+--------+-------+----------+------------+
| 39 | 奥巴马 | 57 | 男 | 前美国总统 |
+------+--------+-------+----------+------------+
1 row in set (0.00 sec) mysql> select * from student where s_name like '马_';
+------+--------+-------+----------+---------+
| s_id | s_name | s_age | s_gender | s_major |
+------+--------+-------+----------+---------+
| 4 | 马云 | 51 | 男 | CEO |
| 45 | 马东 | 49 | 男 | 主持人 |
+------+--------+-------+----------+---------+
2 rows in set (0.00 sec) mysql> select * from student where s_name like '马__';
+------+--------+-------+----------+---------+
| s_id | s_name | s_age | s_gender | s_major |
+------+--------+-------+----------+---------+
| 1 | 马化腾 | 54 | 男 | CEO |
+------+--------+-------+----------+---------+
1 row in set (0.00 sec) mysql> select * from student where s_name like '_马_';
+------+--------+-------+----------+---------+
| s_id | s_name | s_age | s_gender | s_major |
+------+--------+-------+----------+---------+
| 20 | 内马尔 | 25 | 男 | 运动员 |
+------+--------+-------+----------+---------+
1 row in set (0.00 sec)

五:空值查询

  5.1:空值是指null并不是“"一般表示数据未知,或者在以后添加数据时,其字段默认为null  

 mysql> select * from student where isnull(s_major);
+------+--------+-------+----------+---------+
| s_id | s_name | s_age | s_gender | s_major |
+------+--------+-------+----------+---------+
| 8 | 章泽天 | 25 | 女 | NULL |
| 9 | 章子怡 | 39 | 女 | NULL |
| 18 | 凤姐 | 36 | 女 | NULL |
+------+--------+-------+----------+---------+
3 rows in set (0.00 sec) mysql> select * from student where s_major is null;
+------+--------+-------+----------+---------+
| s_id | s_name | s_age | s_gender | s_major |
+------+--------+-------+----------+---------+
| 8 | 章泽天 | 25 | 女 | NULL |
| 9 | 章子怡 | 39 | 女 | NULL |
| 18 | 凤姐 | 36 | 女 | NULL |
+------+--------+-------+----------+---------+
3 rows in set (0.00 sec)

  5.2:非空值查询 IS NOT NULL;    

   select * from student where s_major is not null;

六:带 AND 或 OR 的多条件查询

 mysql> select * from student where s_age >= 60 and s_age < 70;
+------+--------+-------+----------+---------+
| s_id | s_name | s_age | s_gender | s_major |
+------+--------+-------+----------+---------+
| 6 | 王健林 | 65 | 男 | CEO |
| 11 | 冯小刚 | 66 | 男 | 导演 |
| 12 | 张艺谋 | 68 | 男 | 导演 |
| 22 | 许家印 | 67 | 男 | CEO |
+------+--------+-------+----------+---------+
4 rows in set (0.00 sec) mysql> select * from student where s_age >= 60 or s_age <=20;
+------+--------+-------+----------+------------+
| s_id | s_name | s_age | s_gender | s_major |
+------+--------+-------+----------+------------+
| 6 | 王健林 | 65 | 男 | CEO |
| 11 | 冯小刚 | 66 | 男 | 导演 |
| 12 | 张艺谋 | 68 | 男 | 导演 |
| 14 | 莫言 | 70 | 男 | 作家 |
| 22 | 许家印 | 67 | 男 | CEO |
| 25 | P-Gone | 20 | 男 | 歌手 |
| 40 | 克林顿 | 20 | 男 | 前美国总统 |
+------+--------+-------+----------+------------+
7 rows in set (0.00 sec)

七:关键字DISTINCT,去重复查询

  去重复查询只是将给定列中的重复的记录去掉  

  

八:分组查询 GOUP BY

  8.1:分组查询就是把值相等的列分到一个组里面

  8.2:带条件的分组查询where having的情况

    where:在分组前对表数据进行过滤,因此位置在group by前面

    having:在分组后对结果进行过滤,因此位置在group by后面

  8.3:分组查询可使用count()查询出每一组具体有多少条记录

  8.4:使用group_ concat(列名)还可以将该组中该列所有值查询出来

  8.5:还可以将分组查询的结果使用 order by排序

参照以下代码

 mysql> select count(s_name) as 该组总数,s_major from student group by s_major;
+----------+-------------+
| 该组总数 | s_major |
+----------+-------------+
| 3 | NULL |
| 8 | CEO |
| 2 | LOL职业选手 |
| 1 | 主持人 |
| 6 | 主播 |
| 1 | 乞丐 |
| 1 | 作家 |
| 1 | 偶像明星 |
| 2 | 前美国总统 |
| 3 | 导演 |
| 4 | 歌手 |
| 5 | 演员 |
| 5 | 运动员 |
+----------+-------------+
13 rows in set (0.00 sec) mysql> select count(s_name) as 该组总数,s_major from student group by s_major having count(s_name) >= 4;
+----------+---------+
| 该组总数 | s_major |
+----------+---------+
| 8 | CEO |
| 6 | 主播 |
| 4 | 歌手 |
| 5 | 演员 |
| 5 | 运动员 |
+----------+---------+
5 rows in set (0.00 sec) mysql> select count(s_name) as 该组总数,s_major from student where s_age > 30 group by s_major having count(s_name) >= 4;
+----------+---------+
| 该组总数 | s_major |
+----------+---------+
| 8 | CEO |
| 4 | 运动员 |
+----------+---------+
2 rows in set (0.00 sec) mysql> select count(s_name) as 该组总数,s_major from student where s_age > 30 group by s_major having count(s_name) >= 4 order by s_major;
+----------+---------+
| 该组总数 | s_major |
+----------+---------+
| 8 | CEO |
| 4 | 运动员 |
+----------+---------+
2 rows in set (0.00 sec) mysql> select count(s_name) as 该组总数,s_major from student where s_age > 30 group by s_major having count(s_name) >= 4 order by s_major desc;
+----------+---------+
| 该组总数 | s_major |
+----------+---------+
| 4 | 运动员 |
| 8 | CEO |
+----------+---------+
2 rows in set (0.00 sec) mysql> select count(s_name) as 该组总数,s_major,group_concat(s_name) as 该组所有人姓名 from student group by s_major;
+----------+-------------+---------------------------------------------------+
| 该组总数 | s_major | 该组所有人姓名 |
+----------+-------------+---------------------------------------------------+
| 3 | NULL | 章泽天,凤姐,章子怡 |
| 8 | CEO | 马化腾,周鸿祎,王健林,刘强东,马云,丁磊,雷军,许家印 |
| 2 | LOL职业选手 | Gogoing,小狗 |
| 1 | 主持人 | 马东 |
| 6 | 主播 | 冯提莫,卢本伟,仙凡,黑人毅,旭旭宝宝,大龙猫 |
| 1 | 乞丐 | 犀利哥 |
| 1 | 作家 | 莫言 |
| 1 | 偶像明星 | 鹿晗 |
| 2 | 前美国总统 | 克林顿,奥巴马 |
| 3 | 导演 | 李安,张艺谋,冯小刚 |
| 4 | 歌手 | P-Gone,周杰伦,林俊杰,张韶涵 |
| 5 | 演员 | 刘亦菲,胡歌,张一山,杨紫,斯图尔特 |
| 5 | 运动员 | 梅西,詹姆斯,内马尔,约翰塞纳,科比 |
+----------+-------------+---------------------------------------------------+
13 rows in set (0.00 sec)

GROUP BY练习代码

九:LIMIT实现分页查询

  9.1:LIMIT 位置便宜量,行数;

    位置便宜量:默认值为0,即从第一条记录开始

    行数:指定从给定位置开始需要查询的总记录数

    LIMIT x,y 不能写成 LIMIT(x,y)

 mysql> select * from student limit 6;
+------+--------+-------+----------+---------+
| s_id | s_name | s_age | s_gender | s_major |
+------+--------+-------+----------+---------+
| 1 | 马化腾 | 54 | 男 | CEO |
| 2 | 雷军 | 48 | 男 | CEO |
| 3 | 丁磊 | 46 | 男 | CEO |
| 4 | 马云 | 51 | 男 | CEO |
| 5 | 刘强东 | 45 | 男 | CEO |
| 6 | 王健林 | 65 | 男 | CEO |
+------+--------+-------+----------+---------+
6 rows in set (0.00 sec) mysql> select * from student limit 2,3;
+------+--------+-------+----------+---------+
| s_id | s_name | s_age | s_gender | s_major |
+------+--------+-------+----------+---------+
| 3 | 丁磊 | 46 | 男 | CEO |
| 4 | 马云 | 51 | 男 | CEO |
| 5 | 刘强东 | 45 | 男 | CEO |
+------+--------+-------+----------+---------+
3 rows in set (0.00 sec)

十:组函数(集合函数)查询

  count(*)--------------计算表中的总行数

  count(字段名)------计算指定列的总行数,会忽略NULL的值

  sum(字段名)------计算该列的总和

  avg(字段名);--------计算该列的平均值

  max(字段名)--------计算该列的最大值

  min(字段名)---------计算该列的最小值

参考以下代码:

mysql> select count(*) from student;
+----------+
| count(*) |
+----------+
| 42 |
+----------+
1 row in set (0.00 sec) mysql> select count(s_major) from studen
+----------------+
| count(s_major) |
+----------------+
| 39 |
+----------------+
1 row in set (0.00 sec) mysql> select sum(s_age) from student;
+------------+
| sum(s_age) |
+------------+
| 1628 |
+------------+
1 row in set (0.00 sec) mysql> select avg(s_age) from student;
+------------+
| avg(s_age) |
+------------+
| 38.7619 |
+------------+
1 row in set (0.00 sec) mysql> select max(s_age) from student;
+------------+
| max(s_age) |
+------------+
| 70 |
+------------+
1 row in set (0.00 sec) mysql> select min(s_age) from student;
+------------+
| min(s_age) |
+------------+
| 20 |
+------------+
1 row in set (0.00 sec)

八:SQL之DQL数据查询语言单表操作的更多相关文章

  1. 九:SQL之DQL数据查询语言多表操作

    前言: 一:数据准备 员工表emp 和部门表 dept 注意:我在录入员工表的时候,特意添加了两条没有部门的员工,他们的部门id对应为null; --分别创建部门和员工表,并实现一对多关系 DROP ...

  2. ORM 简介 单表操作

    cls超 Django基础五之django模型层(一)单表操作 本节目录 一 ORM简介 二 单表操作 三xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型 ...

  3. django系列5.2--ORM数据库的单表操作

    单表操作 在views.py中添加对数据库的操作语句 #在逻辑代码中导入你要操作的表 from app import models def add_book(request): ''' 添加表记录 : ...

  4. 05.Django基础五之django模型层(一)单表操作

    一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...

  5. Django-模型层(单表操作)

    目录 1.ORM简介 2.单表操作 2.1创建表 2.2添加表纪录 2.3查询表纪录 2.4删除表纪录 2.5修改表纪录 1.ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了 ...

  6. day 69 Django基础五之django模型层(一)单表操作

    Django基础五之django模型层(一)单表操作   本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现 ...

  7. day 55 Django基础五之django模型层(一)单表操作

      Django基础五之django模型层(一)单表操作   本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它 ...

  8. c# 数据库编程(利用DataSet 和 DataAdaper对象操作数据库--单表操作)

    一.概述 前面2篇文章,介绍了使用SqlCommand对象利用sql命令来操作数据库. 这篇文章我们来介绍使用c#的DataSet 和 DataAdaper对象操作操作数据库. 先来介绍下这两个对象是 ...

  9. Hibernate单表操作

    单一主键 assigned:由Java应用程序负责生成(即手工的赋值) native:由底层的数据库自动的生成标示符,如果是MySQL就是auto_increment,如果是Oracle就是seque ...

随机推荐

  1. 【BZOJ 3233】 [Ahoi2013]找硬币

    [题目 描述] 小蛇是金融部部长. 最近她决定制造一系列新的货币. 假设她要制造的货币 的面值为 x1, x2, x3… 那么 x1 必须为 1, xb 必须为 xa 的正整数倍(b>a). 例 ...

  2. tinymce 富文本简单使用

    tinymce.init({ //选择器 selector:'textarea', //配置顶部的菜单栏显示隐藏 menubar: false, //配置中文(默认没有中文包,需要到官网下载,放到la ...

  3. A.走方格

    链接:https://ac.nowcoder.com/acm/contest/368/A 题意: 在一个n*n的方格中,你只能斜着走. 你还有一次上下左右走的机会 给你一个起点(sx,sy),和终点( ...

  4. 【aspnetcore】使用TagHelper制作分页组件

    自定义TageHelper并不难,只要记住几个点: 继承TagHelper 定义需要在TagHelper中传入的参数,如果不需要参数,可忽略 重写Process方法 在Process中拼接要输出的HT ...

  5. JavaScript特点、优缺点及常用框架

    参考来源:   http://www.cnblogs.com/SanMaoSpace/archive/2013/06/14/3136774.html

  6. 106 Construct Binary Tree from Inorder and Postorder Traversal 从中序与后序遍历序列构造二叉树

    给定一棵树的中序遍历与后序遍历,依据此构造二叉树.注意:你可以假设树中没有重复的元素.例如,给出中序遍历 = [9,3,15,20,7]后序遍历 = [9,15,7,20,3]返回如下的二叉树:    ...

  7. shell脚本由基础变量及特殊变量($@、$*、$#等)到实战。

    一.shell脚本建立: shell脚本通常是在编辑器(如vi/vim)中编写,也可以在命令行中直接执行: 1.脚本开头:     规范的脚本第一行需要指出有哪个程序(解释器)来执行脚本中的内容,在L ...

  8. JavaScript 事件——“事件类型”中“HTML5事件”的注意要点

    contextmenu事件 该事件用以表示何时应该显示上下文菜单,以便开发者取消默认的上下文菜单,转而提供自定义的菜单. 因为该事件属于鼠标事件,所以其事件对象中包含与光标位置有关的所有属性.如: & ...

  9. JS的文本框验证以及form表单的提交阻止

    js: 1.只能输入数字 只能输入数字:<input type="text" onkeyup="javascript:ReNumber(this)" /& ...

  10. WORD操作的问题

    最近有个小项目主要是对文档,特别是WORD的操作,读取表格数据存到数据库: 再把数据库的数据读出来写入WORD,下载下来,诸如此类的东西,说来很是简单. 想了想是用什么开发呢? C#常用的,没话说,也 ...