MySQL查询功能

mac2022-06-30  78

============================================================================================================== # 查询数据 查询数据的基本语句为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 的时候,将返回第二行,而不是而一行。
最新回复(0)