一、基本查询语句

select的基本语法格式如下:

select 属性列表 from 表名和视图列表

[ where 条件表达式1 ]

[ group by 属性名1 [ having 条件表达式2 ] ]

[ order by 属性名2 [ asc | desc ] ]

属性列表参数表示需要查询的字段名;

表名和视图列表参数表示从此处指定的表或者视图中查询数据,表和视图可以有多个;

条件表达式1参数指定查询条件;

属性名1参数指按照该字段的数据进行分组;

条件表达式2参数满足该表达式的数据才能输出;

属性名2参数指按照该字段中的数据进行排序;排序方式由asc和desc这两个参数指出;

asc参数表示升序,这是默认参数,desc表示降序;(升序表示从小到大)

对记录没有指定是asc或者desc,默认情况下是asc;

如果有where子句,就按照“条件表达式1”指定的条件进行查询;如果没有where子句,就查询所有记录;

如果有group by子句,就按照“属性名1”指定的字段进行分组,如果group by后面带having关键字,那么只有

满足“条件表达式2”中知道的条件才能输出。group by子句通常和count()、sum()等聚合函数一起使用;

如果有order by子句,就按照“属性名2”指定的字段进行排序,排序方式由asc和desc两个参数指出;默认情况下是asc;

二、单表查询

1、查询所有字段

(1)列出表的所有字段

举例:select num_id,d_id,name,age from employee;

(2)使用“*”查询所有字段

语法格式:select * from 表名;

注释:"*"可以表示所有的字段;

举例:select * from employee;

2、查询指定字段

查询数据时,可以在select语句的“属性列表”中列出所要查询的字段;

这种方式可以指定需要查询的字段,而不需要查询出所有字段;

举例:select name,age from employee;

3、查询指定记录

where子句可以用来指定查询条件

语法格式:where 条件表达式

其中条件表达式参数指定select语句的查询条件;

举例:select * from employee where d_id=1001;

where子句常用的查询条件又很多种,如下表示:

比较                   =、<、>、<=、>=、……

指定范围               between and、not between and

指定集合               in、not in

匹配字符               like 、 not like

是否为空值             is null 、 is not null

多个查询条件           and、or

4、带in关键字的查询

in关键字可以判断某个字段的值是否在指定的集合中。

语法格式:[not] in (元素1,元素2,……元素n);

注释:各个元素之间用逗号隔开

举例:select * from employee where d_id in(1001,1004);

注释:d_id字段的取值为1001或1004的记录都被查询出来;

举例:select * from employee where name not in('张三','李四');

注释:name字段取值为“张三”和“李四”的记录都被排除了;

5、带between and的范围查询

between and关键字可以判断某个字段的值是否在指定范围内。

语法格式:[not] between 取值1 and 取值2;

其中not是可选参数,加上not表示不在指定范围内满足条件;

“取值1”表示范围的起始值;“取值2”表示范围的终止值;

举例:select * from employee where age between 15 and 20;

注释:age取值大于等于15,且小于等于20的记录显示出来;

举例:select * from employee where age not between 15 and 20;

注释:年龄小于15或者大于20的记录显示出来;

6、带like的字符匹配查询

like关键字可以匹配字符串是否相等。

语法格式:[not] like '字符串';

not是可选参数,加上not表示与指定的字符串不匹配时满足条件;

字符串表示指定用来匹配的字符串,该字符串必须添加单引号或者双引号。

字符串参数的值可以是一个完整的字符串,也可以是包含%或者_的通配符;

%可以代表任意长度的字符串,长度可以为0,

举例:b%k表示以字母b开头,以字母k结尾的任意长度的字符串;该字符串可以代表bk,buk,book,break等字符串;

_只能代表单个字符;

举例:b_k表示以字母b开头,以字母k结尾的长度为3的字符串。中间的_可以代表任意一个字符串;

举例:select * from employee where name like 'aric';

此处查询出name='aric'的记录,这里like相当于=

注意一个汉字是2个字符串,要用2个--

7、查询空值

is null关键字可以用来判断字段的值是否为空值。

语法格式:is [not] null;

举例:select * from employee where info is null;

8、带and的多条件查询

and关键字可以联合多个条件进行查询,使用and关键字时,只有同时满足所有查询条件的记录才会被查询出来;

语法格式:条件表达式1 and 条件表达式2 […… and 条件表达式n]

举例:select * from employee where d_id<1004 and age <26 and sex='男';

举例:select * from employee where num in(1,2,3)  and age between 15 and 30 and homeaddr like '%北京市%';

9、带or的多条件查询

使用or关键字时,只要满足这几个查询条件中的一个,这样的记录将会被查询出来,如果不满足这些查询条件的任何一个,这样的记录将会被排除

语法格式:条件表达式1 or 条件表达式2 [ ……or 条件表达式n ]

举例:select * from employee where d_id=1001 or sex like '男';

使用or关键字来查询employee表中d_id为1001,或者sex为'男'的记录;

注意:and 和 or 关键字一起使用时,and比or要先运算,and关键字前后的条件先结合,然后再与or关键字的条件结合。

举例:

select * from employee where num in(1,2,3) and age = 20 or sex='女';

select * from employee where  sex='女' or num in(1,2,3) and age = 20;

这两个select语句的执行结果是一样的,

10、查询结果不重复

如果表中的某些字段没有唯一性约束,这些字段可能存在着重复的值。

select语句中可以使用distinct关键字来消除重复的记录;

语法格式: select distinct 属性名

举例:select distinct d_id from employee;

11、对查询结果排序

使用order by关键字对记录进行排序

语法格式:order by 属性名 [ asc|desc ]

属性名参数表示按照该字段进行排序;

asc参数表示按照升序的顺序进行排序;

desc参数表示按照降序的顺序进行排序;

默认情况下按照asc方式进行排序;

举例:select * from employee order by age desc;

注意:如果记录中存在一条记录,其age字段的值是空值(null),则这条记录将会显示为第一条记录,因为按照升序排序时,

含空值的记录将最先显示,可以理解为空值是该字段的最小值;而按照降序排序时,age字段为空值的记录将最后显示;

MYSQL中,可以指定按照多个字段进行排序,

举例:select * from employee order by d_id asc,age desc;

查询employee表中的所有记录,按照d_id字段的升序方式和age字段的降序方式进行排序

查询结果排序时,先按照d_id字段的升序方式进行排序,如果有多个d_id字段的值相同,则这几个记录再按照age字段进行降序排列;

12、分组查询

group by关键字可以将查询结果按照某个字段或多个字段进行分组,字段的值相等的为一组

语法格式:group by 属性名 [ having 条件表达式 ] [ with rollup ]

属性名参数是指按照该字段的值进行分组;

having 条件表达式 用来限制分组后的显示,满足条件表达式的结果将被显示;

with rollup关键字将会在所有记录的最后加上一条记录,该记录是上面所有记录的总和;

注意:group by关键字一般和聚合函数一起使用,如果不一起使用,那么查询结果就是字段取值的分组情况;

字段中取值相同的记录为一组,但只显示该组的第一条记录。

(1)单独使用group by关键字来分组

如果单独使用group by关键字,查询结果只显示一个分组的一条记录;

举例:select * from employee group by sex;

(2)group by关键字与group_concat()函数一起使用

group by关键字与group_concat()函数一起使用时,每个分组中指定字段值都显示出来;

举例:select sex,group_concat(name) from employee group by sex;

查询结果分为两组,sex字段取值为“女”的记录是一组,取值为“男”的是一组;而男性的名字都会被列出来;

(3)group by关键字与集合函数一起使用

count()用来统计记录的条数;

sum()用来计算记录的值的总和;

avg()用来计算字段的值的平均值;

max()用来查询字段的最大值;

min()用来查询记录的最小值;

举例:select sex,count(sex) from employee group by sex;

(4)group by关键字与having一起使用

如果加上having 条件表达式可以限制输出结果

举例:select sex ,count(sex) from employee group by sex having count(sex)>=3;

注释:"having 条件表达式"与"where 条件表达式"都是用来限制显示的,但是两者起的作用又不相同,

      "where 条件表达式"作用于表或者视图,是表和视图的查询条件;

      "having 条件表达式"作用于分组后的记录,用于选择满足条件的组;

(5)按多个字段进行分组

举例:select * from employee group by d_id,sex;

查询结果显示,记录先按照d_id字段进行分组,因为有2条记录的d_id值为1001,所以这2条记录再按照sex字段的值进行分组。

(6)group by关键字与rollup一起使用

使用rollup时,将会在所有记录的最后加上一条记录,这条记录是上面所有记录的总和;

举例:select sex,concat(name) from employee group by sex with rollup;

13、用limit限制查询结果的数量

limit关键字可以指定查询结果从哪条记录开始显示,还可以指定一共可以显示多少条记录。

limit关键字有两种使用方式。分别是不指定出事位置和指定初始位置。

(1)不指定初始位置

limit关键字不指定初始位置时,记录从第一条记录开始显示。显示的记录条数由limit关键字指定

语法格式:limit 记录数

记录数参数表示显示记录的条数

注释:如果“记录数”的值小于查询结果的总记录数,将会从第一条记录开始显示,显示指定条数的记录;

如果“记录数“的值大于查询结果的总记录数,数据库系统会显示查询出的所有记录

举例:select * from employee limit 2;

举例:select * from employee limit 10;

虽然limit关键字指定了10条记录,但是查询结果中只有4条记录,因此数据库系统会显示全部4条记录;

(2)指定初始位置

limit关键字可以指定从哪条记录开始显示,并且可以指定显示多少条记录

语法格式:limit 初始位置,记录数

初始位置指定从哪条记录开始显示;

记录数表示显示记录的条数;

第一条记录的位置是0,第二条记录的位置是1,后面以此类推;

举例:select * from employee limit 0,2;

三、使用聚合函数查询

group by关键字通常和聚合函数一起使用

1、count()函数

count()函数用来统计记录的条数

举例:使用count()函数统计employee表的记录数

select count(*) from employee;

举例:使用count()函数统计employee表中不同d_id值得记录数

select d_id, count(*) from employee group by d_id;

注释:从这个例子可以看出,表中的记录先通过group by 关键字进行分组,然后再计算每个分组的记录数

2、sum()函数

sum()函数是求和函数

举例:使用sum()函数统计grade表中学号为1001的同学的总成绩

select num,sum(score) from grade where num=1001;

举例:下面将grade表按照num字段进行分组,然后,使用sum()函数统计各分组的总成绩。即查询每一个同学的总成绩

select num,sum(score) from grade group by num;

注释:grade表按num字段分为3组,num分别等于1001,1002,1003.然后分别计算出这三组的总成绩

注意:sum()函数只能计算数值类型的字段,不能计算字符类型。

3、avg()函数

avg()函数是求平均值的函数

举例:使用avg()函数计算employee表中的平均年龄

select avg(age)  from employee;

举例:使用avg()函数计算grade表中各个科目的平均成绩

select course,avg(course) from grade group by course;

使用group by关键字将grade表的记录按照course字段进行分组,然后再计算出每一组的评价成绩

4、max()函数

max()函数是求最大值的函数

举例:使用max()函数查询employee表中的最大年龄

select max(age) from employee;

举例:使用max()函数查询grade表中不同科目的最高成绩

select course,max(score) from grade group by course;

先将grade表的记录按照course字段进行分组,然后查询出每一组的最高成绩

5、min()函数

min()函数是求最小值的函数

举例:使用min()函数查询出employee表中的最小年龄

select min(age) from employee;

举例:使用min()函数查询出grade表中不同科目的最低成绩

select course,min(course) from grade group by course;

mysql——查询语句——单表查询——(概念)的更多相关文章

  1. mysql——查询语句——单表查询——(示例)

    一.基本查询语句 select的基本语法格式如下: select 属性列表 from 表名和视图列表 [ where 条件表达式1 ] [ group by 属性名1 [ having 条件表达式2 ...

  2. Mysql | 总结 | 常用的查询语句(单表查询)

    1. 查询单表全部 select* from 数据表名; 2. 查询单表中一个或者多个字段 select 字段1,字段2 from 数据表名; 3. 查询单表中的指定信息 select* from 数 ...

  3. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  4. mysql 基础入门 单表查询

    单表查询 select 表头,表头 as 别名 ,表头(+-*/的运算) from table_a 1.条件查询 where + 条件 <> , != 不等于 = 等于,也可以表示字符串值 ...

  5. mysql 数据操作 单表查询 目录

    mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...

  6. mysql 数据操作 单表查询 where 约束 目录

    mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...

  7. mysql 数据操作 单表查询 group by 分组 目录

    mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...

  8. MySQL数据库之单表查询中关键字的执行顺序

    目录 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 2 执行顺序 3 关键字使用语法 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from ...

  9. MySQL数据库语法-单表查询练习

    MySQL数据库语法-单表查询练习 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要是对聚合函数和分组的练习. 一.数据表和测试数据准备 /* @author :yinz ...

随机推荐

  1. js自定义事件CustomEvent、Event、TargetEvent

    1.Event Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 事件通常与函数结合使用,函数不会在事件发生前被执行! Event的事件都是系统自 ...

  2. jenkins汉化

    插件: Localization: Chinese (Simplified) locale plugin(或者是这个版本不一样,名字不一样) 可以直接安装这个插件,然后走最后一步设置即可. 由于安装失 ...

  3. Makefile简单编写实例

    介绍一下Makefile的简单编写例子. 编写Makefile的规则就是: 目标文件:依赖文件 (tab)编译规则 现在我有一个文件目录结构为: 解释一下这几个文件.首先我创建makefile目录,底 ...

  4. sqoop数据导出

    1.将oracle的jdbc的jar包copy到sqoop的lib目录下 2. sqoop export --connect jdbc:oracle:thin:@XXXXX:1521:TMDM --u ...

  5. 了解dubbo+zookeeper

    一.Dubbo是什么? Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,分布式服务框架(SOA),致力于提供高性能和透明化的RPC远程 ...

  6. 【Nginx】 linux环境下安装nginx步骤

    开始前,请确认gcc g++开发类库是否装好,默认已经安装. centos平台编译环境使用如下指令 安装make: yum -y install gcc automake autoconf libto ...

  7. cha[] strrev(char[])

    反转字符串  保留在原函数中

  8. VisualVM通过密码JMX远程连接JVM

    如果本地安装了JDK,则在${java.home}/bin/下可找到jvisualvm.exe,双击打开即可使用.否则,去官网下载一个,解压即可使用.现有一个springboot程序springboo ...

  9. koa 基础(十七)原生 JS 中的类、静态方法、继承

    1.app.js /** * 原生 JS 中的类.静态方法.继承 * es5中的类和静态方法 */ function Person(name, age) { // 构造函数里面的方法和属性 this. ...

  10. [学习笔记] Tangent Distance

    Tangent Distance 简介 切空间距离可以用在KNN方法中度量距离,其解决的是图像经过有限变换之后还能否被分类正确,例如.对一张数字为5的手写数字图片,将其膨胀后得到图像p1,此时KNN还 ...