MySQL查询功能

==============================================================================================================
# 查询数据
查询数据的基本语句为select语句。语法格式如下:
------------------------------------------------------------------
select
	{* | <字段列表>}
	[
		from <表1>,<表2>...
		[where <表达式>]
		[group by <group by definition>]
		[having <expression> [{<operator> <expression>}...]]
		[order by <order by definition>]
		[limit [<offset>,] <row count>]
	]
select [字段1,字段2,....,字段n]
from [表或试图]
where [查询条件];
------------------------------------------------------------------
各条句子的含义如下:
--- {*|<字段列表>} 包含星号通配符选择字段列表,表示查询的字段,其中字段至少包含
	一个字段名称,如果要查询多个字段,多个字段之间用逗号隔开,最后一个字段不要加逗号。
--- from<表1>,<表2>...,表1和表2表示查询数据的来源,可以是单个或者多个。
--- where 子句时可选项,如果选择该项,将限定查询必须满足的查询条件。
--- group by<字段>,该子句告诉MySQL如何显示查询出来的数据,并按照指定的字段分组。
--- [order by<字段 >],该子句告诉MySQL按什么样的顺序显示查询出来的数据,可以进行的排序有:升序(asc),降序(desc)。
--- [limit[<offset>,]<row count>],该子句告诉MySQL每次显示查询出来的数据条数。
select的可选参数比较多,可能无法一下完全理解,一步一步来。
------------------------------------------------------------------
下面例子使用select从单个表中获取数据:
>select f_id,f_name from fruits;
解说上面代码,f_id和f_name是字段名,fruits是表名,上面代码会获取到f_id和f_name字段中的数据。

==============================================================================================================
# 单表查询
单表查询是查询表中所需的数据。下面将介绍:查询所有字段、查询指定字段、查询指定记录、查询空值、多条件的查询、对查询结果进行排序等。
=======================================
1、查询所有字段。
语法格式:setect * from 表名;
就会显示表中所有的数据了。
=======================================
2、在select语句中指定所有字段。
语法格式:select 字段1,字段2,字段3 from 表名;
就会显示表中的字段1、字段2、字段3的数据,这样显示会比用通配符 * 快一点。
=======================================
3、查询指定记录。
语法格式:select 字段名1,字段名2,...,字段名n
		  from 表名
		  where 查询条件
-------------------------------------	  
where子句中,提供了一些条件判断符:
=		相等
<>,!=	不相等
<		小于
<=		小于或者等于
>		大于
>=		大于或者等于
between	位于两值之间
-------------------------------------
例子:查询价格为10.2元的水果名称:
>select f_name,f_price # f_name是水果名和f_price是价格的字段
>from fruits # fruits表名
>where f_price = 10.2; # 判断语句,判断价格的字段,中间的 = 符号是判断符。
就会显示出哪些水果的价格等于10.2元。
也可以查找水果名为apple的价格:
>select f_name,f_price
>from fruits
>where f_name = 'apple'; # 中间的 = 符号是判断符。
就会显示水果名为apple的价格了。
=======================================
4、带in关键字查询。
in操作符用来查询满足指定范围内的条件的记录,使用in操作符,将所有检索条件用括号括起来,
检索条件之间用逗号隔开,只要满足条件范围内的一个值即为匹配项。
例子:查询id为101和102的记录。
>select s_id,f_name,f_price # 列名
>from fruits # 表名
>where s_id in (101,102) # 检索范围
>order by f_name;
相反,可以使用关键字not in来检索不在条件范围内的记录
>where s_id not in (101,102)
=======================================
5、带between and的范围查询。
between and用来查询某个范围内的值,该操作符需要两个参数,即范围的开始和结束值,如果字段值满足指定的范围查询条件,则这些记录被返回。
例子:查询价格在2.00元到10.20元之间的水果名称和价格。
>select f_name,f_price # 需要显示的列名
>from fruits # 表名
>where f_price between 2.00 and 10.20; # 列名 判断条件(包含该值的本身)
该方法也可以加not去取相反。
>where f_price not between 2.00 and 10.20;
=======================================
6、带like 的字符匹配查询。
like的通配符有 % 和 _
6.1、百分号通配符,匹配任意长度的字符,甚至包括零字符。
先上例子:查找所有以 b 字母开头的水果。
>select f_id,f_name
>from fruits
>where f_name like 'b%';
这样就可以将b开头的水果名字显示出来了
-------------------------
查询字段f_name中包含字符 g 的记录。
>select f_id,f_name
>from fruits
>where f_name like '%g%';
这样就可以将名字里面包含 g 的名字显示出来了,不管是开头还是结尾。
-------------------------
查询以 b 开头,并以 y 结尾的水果名称。
>select f_name
>from fruits
>where f_name like 'b%y';
6.2、下划线通配符'_',一次只能匹配任意一个字符。
只能匹配任意单个字符,如果要匹配多个字符,则需要使用相同个数的'_'。
例子:查询以字母 y 结尾且 y面前只有4个字母的记录。
>select,f_id,f_name from fruits where f_name like '----y';
上面的代码等同于之前的三行代码。
上面代码得出的结果看到,显示以 y 结尾的记录,且前面只有4个字母。
=======================================
7、查询空值。
空值不同于0,也不同于空字符,空值一般表示数据未知、不适用或将在以后添加数据。
在select语句中使用is null子句,可以查询某字段内容为空的记录。
例子:查询customers表中c_email为空的记录的c_id、c_name和c_email字段值。
>select c_id,c_name,c_email from customers where c_email is null;
就可以将email的记录为null的三列字段显示出来了。
相反,可以使用not关键字来取反:
>select c_id,c_name,c_email from customers where c_email is not null;
=======================================
8、带and的多条件查询。
使用select查询时,可以增加查询的限制条件,这样可以使查询的结果更加精准。
MySQL在where子句中使用and操作符只有满足所有条件的记录才会被返回。
可以使用and连接两个甚至多个查询条件,多个表达式之间用and分开。
例子:查询fruits表中s_id=101,并且f_price大于等于5的水果价格和名称。
>select f_id,f_price,f_name from fruits where s_id = '101' and f_price >= 5;
可以设置更多的条件:查询s_id=101或者102,且f_price大于5,并且f_name=apple的水果价格和名称。
(当代码过长,可以分两行写)
>select f_id,f_price,f_name from fruits
>where s_id in('101','102') and f_price >= 5 and f_name = 'apple';
=======================================
9、带or的多条件查询。
与and相反,在where声明中使用or操作符,表示只需要满足其中一个条件的记录即可返回。or也可以连接两个甚至多个查询条件,多个条件表达式之间用or分开。
例子:查询s_id=101或者s_id=102的水果供应商的f_price和f_name。
>select s_id,f_name,f_price from fruits where s_id = 101 or s_id = 102;
=======================================
10、查询结果不重复。
在select语句中,可以使用distinct关键字指示MySQL消除重复的记录值。
语法格式:select distinct 字段名 from 表名;
=======================================
11、对查询结果排序。
MySQL可以通过在select语句中使用order by子句,对查询的结果进行排序。
11.1、单列排序。
正常的查询字段:
>select f_name from fruits;
使用排序的字段:按字母顺序排序。
>select f_name from fruits order by f_name;
11.2、多列排序。
查询fruits表中的f_name和f_price字段,先按f_name排序,再按f_price排序。
语法格式如下:
>select f_name,f_price from fruits order by f_name,f_price;
11.3、指定排序方向。
默认的情况下,查询数据按字母升序进行排序(从A-Z),但数据的排序并不仅限于此,
还可以使用order by对查询结果进行降序排序(从Z-A),这通过关键字desc实现。
例子:进行降序排序:查询fruts表中的f_name和f_price字段,对结果按f_price降序方式排序。
>select f_name,f_price from fruits order by f_price desc;
也可以用在多列排序里:
例子:查询fruits表,先按f_price降序排序,再按f_name字段升序排序。
>select f_price,f_name from fruits order by f_price desc,f_name;
=======================================
12、使用limit限制查询结果的数量。
select返回所有匹配的行,有可能是表中所有的行,如仅仅需要返回第一行或者前几行,使用limit关键字。
语法格式:limit [位置偏移量,] 行数
例子:显示fruits表查询结果的前4行。
>select * from fruits limit 4;
也可以设置从指定开始的位置开始偏移:
>select * from fruits limit 4,3;
从第5个记录开始,显示3行数据。-----注意,limit 1,1 的时候,将返回第二行,而不是而一行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值