一、基本查询语句

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. 基于locust的性能测试平台搭建

    前段时间加入性能测试组,并参与搭建基于locust的性能测试平台,我分到的任务相对独立,开发locust的启动接口和停止运行接口,现开发的差不多了,做一个总结 一.locust运行的相关内容 二.lo ...

  2. 【Python之路】特别篇--事件驱动与异步IO

    通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求: (2)每收到一个请求,创建一个新的线程,来处理该请求: (3)每收到一个请求,放入一个事件 ...

  3. Neko does Maths CodeForces - 1152C 数论欧几里得

    Neko does MathsCodeForces - 1152C 题目大意:给两个正整数a,b,找到一个非负整数k使得,a+k和b+k的最小公倍数最小,如果有多个k使得最小公倍数最小的话,输出最小的 ...

  4. Spring——bean的五种作用域和生命周期

    一.Bean的作用域 1.当一个bean的作用域为Singleton,那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回 ...

  5. 3dmax 欢迎页卡住

    C:\Program Files (x86)\Autodesk\3ds Max 9\stdplugs\dxplugins\dxDDS.mbi,把dxDDS.mbi重命名就OK了,只不过会提示他加载错误 ...

  6. docker启动、关闭、重启命令

    docker启动命令,docker重启命令,docker关闭命令 启动        systemctl start docker守护进程重启   sudo systemctl daemon-relo ...

  7. 应用程序无法正常启动(0xc000007b)请单击确定关闭程序

    1.问题 在win10 VS2105 环境下面开发了一个调用get接口获取数据然后写入pg数据库的程序,在自己电脑上运行正常.复制到win7环境下运行,单击出现如下图所示的提示框. 2.原因分析 出现 ...

  8. github搜索不到代码的问题

    Hi team, Please check the following three query url :https://github.com/Konctantin/GreyMagic/search? ...

  9. Go 指针声明后赋值,出现 panic: runtime error: invalid memory address or nil pointer dereference

    指针基础知识package main import "fmt" func main() { var p *int p = new(int) *p = 1 fmt.Println(p ...

  10. GPS定位RTK解决方案

    GPS差分: 实时差分定位是指在测量点上实时得到高精度的定位结果.这种模式的具体方法是:在一个已知测站上架设GPS基准站接收机和数据电台,连续跟踪所有可见卫星,并通过数据电台向移动站发送差分改正数据. ...