mysql——查询语句——单表查询——(概念)
一、基本查询语句 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——查询语句——单表查询——(概念)的更多相关文章
- mysql——查询语句——单表查询——(示例)
一.基本查询语句 select的基本语法格式如下: select 属性列表 from 表名和视图列表 [ where 条件表达式1 ] [ group by 属性名1 [ having 条件表达式2 ...
- Mysql | 总结 | 常用的查询语句(单表查询)
1. 查询单表全部 select* from 数据表名; 2. 查询单表中一个或者多个字段 select 字段1,字段2 from 数据表名; 3. 查询单表中的指定信息 select* from 数 ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- mysql 基础入门 单表查询
单表查询 select 表头,表头 as 别名 ,表头(+-*/的运算) from table_a 1.条件查询 where + 条件 <> , != 不等于 = 等于,也可以表示字符串值 ...
- mysql 数据操作 单表查询 目录
mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...
- mysql 数据操作 单表查询 where 约束 目录
mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...
- mysql 数据操作 单表查询 group by 分组 目录
mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...
- MySQL数据库之单表查询中关键字的执行顺序
目录 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 2 执行顺序 3 关键字使用语法 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from ...
- MySQL数据库语法-单表查询练习
MySQL数据库语法-单表查询练习 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要是对聚合函数和分组的练习. 一.数据表和测试数据准备 /* @author :yinz ...
随机推荐
- js自定义事件CustomEvent、Event、TargetEvent
1.Event Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 事件通常与函数结合使用,函数不会在事件发生前被执行! Event的事件都是系统自 ...
- jenkins汉化
插件: Localization: Chinese (Simplified) locale plugin(或者是这个版本不一样,名字不一样) 可以直接安装这个插件,然后走最后一步设置即可. 由于安装失 ...
- Makefile简单编写实例
介绍一下Makefile的简单编写例子. 编写Makefile的规则就是: 目标文件:依赖文件 (tab)编译规则 现在我有一个文件目录结构为: 解释一下这几个文件.首先我创建makefile目录,底 ...
- sqoop数据导出
1.将oracle的jdbc的jar包copy到sqoop的lib目录下 2. sqoop export --connect jdbc:oracle:thin:@XXXXX:1521:TMDM --u ...
- 了解dubbo+zookeeper
一.Dubbo是什么? Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,分布式服务框架(SOA),致力于提供高性能和透明化的RPC远程 ...
- 【Nginx】 linux环境下安装nginx步骤
开始前,请确认gcc g++开发类库是否装好,默认已经安装. centos平台编译环境使用如下指令 安装make: yum -y install gcc automake autoconf libto ...
- cha[] strrev(char[])
反转字符串 保留在原函数中
- VisualVM通过密码JMX远程连接JVM
如果本地安装了JDK,则在${java.home}/bin/下可找到jvisualvm.exe,双击打开即可使用.否则,去官网下载一个,解压即可使用.现有一个springboot程序springboo ...
- koa 基础(十七)原生 JS 中的类、静态方法、继承
1.app.js /** * 原生 JS 中的类.静态方法.继承 * es5中的类和静态方法 */ function Person(name, age) { // 构造函数里面的方法和属性 this. ...
- [学习笔记] Tangent Distance
Tangent Distance 简介 切空间距离可以用在KNN方法中度量距离,其解决的是图像经过有限变换之后还能否被分类正确,例如.对一张数字为5的手写数字图片,将其膨胀后得到图像p1,此时KNN还 ...