select <子句1>
from <子句2>
[where<表达式1>]
[group<字句3>]
[having<表达式2>]
[order by<字句4>]
[limit<子句5>]
[union<操作符>]

1.查看数据的两种方法

select 字段名 from 表名;
  • 查看多指定的字段
select 字段名,字段名 from 表名

2.查看数据并进行筛选(where)

select 字段名 from 表名
where 字段名=字段值;

例如:

select name from student
where xb='f';

我查看student表中,关于记录name(姓名)的字段

但是他要满足xb(性别)为f(男)

3.不查看重复记录(distinct),空值,非空值

  • 不查看重复记录,多字段无效
select distinct 字段名 from 表名;
  • 查看含有空值的记录
select *from 表名
where 字段名 is null;
  • 查看不为空的学生信息
select *from 表名
where 字段名 is not null;

5.查看指定行(limit)

查看3行

select *from 表名 limit 3;

从第三行开始,查看三行

select *from 表名 limit 2,3;

6.模式匹配(like)

通配符 名称 描述
% 百分号 匹配0个或者多个任意字符
_ 下划线 匹配单个任意字符

查看张姓的人

select *from 表名
where 姓名 like '张%';

查看不姓张的人

select *from 表名
where 姓名 not like '张%';

查看姓张或者名字中有张的人

select *from 表名
where 姓名 like '%张%';

regexp

通配符 名称 描述
^ 插入号 匹配字符串的开始部分
$ 美元 匹配字符串的结束部分
. 匹配字符串(包括回车和新行)
* 乘号 匹配-0个或多个任意字符
+ 加号 匹配单个或多个任意字符
? 问号 匹配0个或单个任意字符
() 括号 匹配括号里面的内容
{n} 大括号 匹配括号前的内容出现n次的序列

查看姓张的人

select *from 表名
where 姓名 regexp '^张';

select *from 表名
where 姓名 regexp '张*';

6.范围查询(between and)

查询80分到100分之间的学生

select *from 表名
where 成绩 between 80 and 100;
  • in语句指定列表查询条件
select *from 表名
where 开课学期 in('1','2');

7.逻辑运算符查询

运算符 说明
not 否定,逻辑非
and 连接,都满足时返回真,类似逻辑与&&
or 类似逻辑或
xor 只有一个满足时返回真,两个都满足或不满足返回假

使用逻辑运算符查看成绩在80以上和100以下的学生信息

select *from 表名
where 成绩>=80 and 成绩<=100;

8.order by 子语句(排序)

asc升序,desc降序,默认为升序

查询选修了07003课程的学生成绩,以降序排序

select *from 表名
where 课程号='07003'
order by 成绩 desc;

- 单列排序

select *from 表名 order by 字段名1;

- 多列排序

select *from 表名 order by 字段名1,字段名2;

- 指定排序方向

select *from 表名 order by 字段名1,字段名2 desc;
会对字段1进行默认的升序排序,当有重复的值时候,会对字段2进行排序,因为字段2已经指定了排序方式为降序。
所以字段1默认的升序排序,字段2指定的降序排序

9.group by 子语句(聚合函数)

函数名 功能
sum() 返回一个数值列或计算列的总和
avg() 返回一个数值列或计算列的平均值
min() 返回一个数值列或计算列的最小值
max() 返回一个数值列或计算列的最大值
count() 返回满足select语句中指定条件的记录数
count(*) 返回找到的行数

- 进行分组

select 要分组的字段名 from 表名 group by 要分组的字段名;

select 要分组的字段名 as 别名 from 表名 group by 要分组的字段名;

count()的用法

如果里面是*号,会返回所有的行包括空值。

如果里面是具体的字段名,然会返回行数,不包括空值

select count(*) from 表名;

select count(字段名) from 表名;

- 分组查询

select 性别,count(*) from 表名 group by 性别;

select 性别 as 人数,count(*) as  人数 from 表名 group by 性别;

如果性别字段中有空值,还可以用这种方式
select 性别 as 人数,count(性别) as 人数 from 表名 group by 性别;
它会对性别进行分组,但是对于空值的那一组不会返回数值

having(过滤)

select 性别 from 表名 group by 性别 having xb is not null;
对字段“性别”进行分组,但是不对空值进行分组

select 性别 from 表名 group by 性别 having 性别 is  null;
对字段“性别”进行分组,只对空值进行分组

MySQL_数据查询的更多相关文章

  1. mysql_数据查询_嵌套查询

    嵌套查询 一个SELECT-FROM-WHERE语句称为一个查询块. 嵌套查询:将一个查询块嵌套在另一个查询块的WHERE子句或者HAVING短语的条件中的查询. 注:子查询的SELECT语句中不能使 ...

  2. mysql_数据查询_连接查询

    连接查询 1.连接(join) 也称θ连接,从两个关系的笛卡尔积中选择属性间满足一定条件的元组. 等值连接:θ为“=”的连接运算称为等值连接.从关系R和S的广义笛卡尔积中选取A.B属性值相等的元组. ...

  3. mysql_数据查询_单表查询

    1.单表查询: 1.1选中表中若干列: SELECT子句的<目标列表达式>可以是表中属性列,也可以是表达式,还可以是字符常量. SELECT Sname,'year of birth:', ...

  4. Django models .all .values .values_list 几种数据查询结果的对比

    Django models .all .values .values_list 几种数据查询结果的对比

  5. MVC实用架构设计(三)——EF-Code First(4):数据查询

    前言 首先对大家表示抱歉,这个系列已经将近一个月没有更新了,相信大家等本篇更新都等得快失望了.实在没办法,由于本人水平有限,写篇博客基本上要大半天的时间,最近实在是抽不出这么长段的空闲时间来写.另外也 ...

  6. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

  7. SharePoint服务器端对象模型 之 使用CAML进展数据查询

    SharePoint服务器端对象模型 之 使用CAML进行数据查询 一.概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选.排序条件,获得某个列表或者某一些列表中相应的列 ...

  8. .NET应用架构设计—面向查询服务的参数化查询设计(分解业务点,单独配置各自的数据查询契约)

    阅读目录: 1.背景介绍 2.对业务功能点进行逻辑划分(如:A.B.C分别三个业务点) 2.1.配置映射关系,对业务点配置查询契约(构造VS插件方便生成查询契约) 2.2.将配置好的映射策略文件放在调 ...

  9. Yii2 数据查询

    转载来自: http://www.yiichina.com/tutorial/95 数据查询 User::find()->all(); 此方法返回所有数据: User::findOne($id) ...

随机推荐

  1. linux系统相关文件和操作

    查看内核: uname -r [root@server0 ~]# uname -r -.el7.x86_64 [root@server0 ~]# 查看版本: cat  /etc/redhat-rele ...

  2. 【Python之路】特别篇--抽屉新热榜

    登陆与注册 注册功能: 流程: 填写用户名,邮箱,获取邮箱验证码,填入密码 单击<下一步>按钮,完成注册! 1.获取邮箱验证码(具体步骤分析): 1.利用ajax 往后台传入邮箱, 2.后 ...

  3. 用php把excel数据导入数据库

    PHPExcel是一个PHP类库,用来帮助我们简单.高效实现从Excel读取Excel的数据和导出数据到Excel. 先下载PHPExcel类库· 读取文件源码: <?php header(&q ...

  4. HDU 3081 Marriage Match II 最大流OR二分匹配

    Marriage Match IIHDU - 3081 题目大意:每个女孩子可以和没有与她或者是她的朋友有过争吵的男孩子交男朋友,现在玩一个游戏,每一轮每个女孩子都要交一个新的男朋友,问最多可以玩多少 ...

  5. 【转载】BERT:用于语义理解的深度双向预训练转换器(Transformer)

    BERT:用于语义理解的深度双向预训练转换器(Transformer)   鉴于最近BERT在人工智能领域特别火,但相关中文资料却很少,因此将BERT论文理论部分(1-3节)翻译成中文以方便大家后续研 ...

  6. [bat]只更新svn部分文件夹

    游戏工程里的sdk文件夹,经常被svn认定为有毒文件. 后来关了权限之后,已拉取过的sdk文件夹还是会拉下来. 网上找了个方法,bat文件只更新部分文件. TortoiseProc /command: ...

  7. vue 复制内容到粘贴板

    首先是npm安装依赖包:npm install clipboard --save 导入组件:import Clipboard from "clipboard"; html如图: c ...

  8. SQL和HQL 区别浅析!!!

    hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性 sql是面向数据库表查询,格式:from + 表名 + where + 表中字段 1.查询 一般在hiber ...

  9. js判断是否联网

    // navigator.onLine if (navigator.onLine){ //正常工作 console.log("在线状态............................ ...

  10. arcgis python 判断是数据库或是文件夹

    import arcpy # Create a Describe object # desc = arcpy.Describe("C:/Data/chesapeake.gdb") ...