单表查询_简单_条件查询

来源:互联网 发布:c语言sizeof和strlen 编辑:程序博客网 时间:2024/05/17 08:18
@author StormWangxhu@date 2017/11/23

一、简单查询

1、1、SELECT语句

MySql语句从数据库中查询数据的基本语句为SELECT语句。
基本语法:

SELECT [DISTINCT] * | {字段名1,字段名2,...}FROM  表名[WHERE 条件表达式1][GROUP BY 字段名1[HAVING 条件表达式2 ]][ORDER BY 字段名 [ASC| DESC ]][LIMIT [OFFSET]  记录数]

说明:
(1)、* 通配符表示表中的所有字段
(2)、GROUP BY 将查询结果按字段分组
(3)、ORDER BY 将查询结果按字段进行排序。
(4)、LIMIT OFFSET
(5)、 DISTINCT 剔除查询结果中的重复值。

1、2查询所有字段

1、在SELECT语句中指定所有字段

基本语法:

SELECT 字段名1,字段名2,字段名3...  FROM  表名;

说明 ; 字段1,字段2,字段3….为表中所有的字段。

举例:

这里写图片描述

2、在SELECT 语句中使用 * (通配符)代替所有字段。

基本语法:

SELECT * FROM 表名  ;

1、3 查询指定字段

只针对部分查询字段,不查询全部字段

基本语法:

SELECT 字段名1,字段名2...  FROM 表名  ;

说明:
字段1,字段2,…为表中的字段名称,这里只需指定表中部分字段的名称。

举例:
这里写图片描述

二、按条件查询

2、1 带关系运算符的查询
在SELECT语句中,最常见的是使用WHERE语句指定查询条件进行数据的查询。

基本语法:

SELECT 字段名1,字段名2...FROM  表名WHERE 条件表达式  ;

关系运算符,即常见的大于,小于,不等于….等!

这里写图片描述

举例:

这里写图片描述

2、2 带IN关键字的查询
IN 关键字 用于判断某个字段是否在指定集合中。若字段的值在集合中,则该字段所在的记录将被查询出来。

基本语法:

SELECT *  |[字段名1。字段名2...]FROM 表名WHERE 字段名  [not] IN [元素1,元素2...];

说明:
元素1,元素2, 表示集合中的元素,级指定的条件范围。
not 为可选参数,使用not表示查询不在in关键字指定集合范围中的记录。

举例:

这里写图片描述

2、3带between and 关键字的查询

用于判断某个字段的值是否在某一个范围内,若字段的值在指定范围内,则满足条件,该字段所在的记录将会被查询出来,否则,不会查询出来@

基本语法:

select *  | [字段名1,字段名2...]from 表名where   字段名  [not] between 值1 and 值2

说明:
(1)上述值1、值2,分别表示条件范围的起始值、结束值。
(2)若字段的值在范围内,则将会被查出来。否则,不会查询出来。
(3)not 为可选参数,表示不再条件范围内的字段值。

举例:

这里写图片描述

2、4 空值查询

在数据表中某些列的值可能为空值(null),空值不等同于0,也不同于空字符串。
在MySQl种使用is null关键字来判断字段的值是否为空值。

基本语法:

select * | [字段名1,字段名2...]from 表名where 字段名 is [not]  null ;

说明:
not为可选参数,使用not关键字用于判断字段值不是空值。

举例:
//图

这里写图片描述

2、5 带 distinct 关键字的查询
表中某些字段的值存在重复数据,该关键字用于去除重复值,只留一种!
即过滤重复内容!!!

基本语法:

select distinct 字段名 from 表名 ;

说明:
字段名表示要过滤重复记录的字段。

举例:

这里写图片描述

注意:

distinct 关键字用于多个字段
基本语法:

select distinct 字段名1,字段名2... from 表名;

条件:
字段1,字段2,….等多个字段的值相同才能过滤。
不相同,则会直接查询出来,不能起到过滤的作用!

这里写图片描述

2、6 带like 关键字的查询

即对字符串进行模糊查询 !!!

基本语法:

select * | [字段名1,字段名2...]from 表名where 字段名 [not]  like  '匹配字符串';

说明:
(1)not 可选参数,表示查询与指定字符串不匹配的记录。
(2)‘匹配字符串’ 指定用来匹配的字符串,其值可以是一个普通的字符串,也可以包含百分号 % 通配符或者下划线_通配符。。。

下面介绍一下百分号通配符,和下划线通配符!

1>百分号%通配符

匹配任意长度的字符串,包括空字符串。

比如:

select 字段名1,字段名2...from  表名where 字段名 like 'S%'

说明:
(1)‘s%’表示 匹配以字符 s开始,任意长度的字符串。如‘ct’,’cut’,’current’.
(2)如:%s% : 表示统配

举例:
//图

这里写图片描述

2>下划线通配符 _

下划线通配符只匹配单个字符。
若要匹配多个字符,需要使用多个下划线通配符。

注意:

若使用多个下划线匹配多个连续的字符,下划线之间不能有空格!

举例:

这里写图片描述

百分号通配符和下划线通配符的转义

这两个可以联合起来进行查询操作。

使用右划线’\’对百分号 %、和下划线通配符 _ 进行转义:

比如: \%, _

举例:

这里写图片描述

2、7、带 and 关键字的多条件查询

为了使查询结果更精确,可以使用多个查询条件。

基本语法:

select * | [字段1,字段2...]from 表名 where 条件表达式1 and 条件表达式2 [...and条件表达式n];

注意:

and 关键字两边条件要同是满足 !

举例:

这里写图片描述

2、8、带 or 关键字的多条件查询

只要记录满足任意一个条件就会被查询·出来

select * | [字段1,字段2...]from 表名 where 条件表达式1 or 条件表达式2 [...or条件表达式n];

即每两个条件之间用 or 关键字连接。

举例:

这里写图片描述

and 和 or 混合使用 查询

注意:

and 的优先级高于 or 。
举例:

这里写图片描述

说明:

若and优先级和or 的优先级相同 或者 比 or 低,and操作会最后执行,查询结果只会返回一条记录,记录的grade =99。
但是::::哈哈但是:
本例中返回了 6条记录。说明先执行了 and 后执行了 or 。