Mysql数据库(四):详细,对新手非常友好

查询数据

数据库管理系统的一个重要的功能就是数据查询,数据查询不应只是简单查询数据库中数据存储的数据,还应该能够根据用户的需要指定查询数据,以及确定以什么样的格式显示。mysql提供了功能强大、灵活的语句来实现这些操作。

首先创建一张表:

mysql> CREATE TABLE fruits
    -> (
    -> f_id char(10) NOT NULL,
    -> s_id INT NOT NULL,
    -> f_name char(255) NOT NULL,
    -> f_price decimal(8,2) NOT NULL,
    -> primary key(f_id));
Query OK, 0 rows affected (0.01 sec)
  • 为了演示如何使用SELECT语句,我们需要向表插入一些数据:

mysql> INSERT INTO fruits(f_id,s_id,f_name,f_price)
    ->  values('a1',101,'apple',5.2),
    -> ('b1',101,'blackberry',10,2),
    -> ('bs2',105,'melon',8.2),
    -> ('t1',102,'banana',10.3),
    -> ('t2',102,'grape',5.3),
    -> ('02',103,'cocount',9.2),
    -> ('c0',101,'cherry',3.2),
    -> ('a2',103,'apricot',2.2),
    -> ('l2',104,'lemon',6.4),
    -> ('b2',104,'berry',7.6),
    -> ('m1',106,'mango',15.7),
    -> ('m2',105,'xbabay',2.6),
    -> ('t4',107,'xbababa',3.6),
    -> ('m3',105,'xxtt',11.6);

在这里插入图片描述

基本查询语句

  • 1.使用SELECT语句查询f_id,f_name字段的数据
select f_id,f_name from fruits;

在这里插入图片描述

  • 2.查询所有的字段
select *from fruits;

在这里插入图片描述
3.查询fruits表中f_name列所有的水果名称

select f_name from fruits;

在这里插入图片描述
4.从fruits表中获取f_name和f_price两列

select f_name,f_price from fruits;

在这里插入图片描述
5.查询指定记录
查询价格为10.2的水果

select f_name from fruits where f_price=10.2;

在这里插入图片描述
6.查找名称为“apple”的水果的价格

select f_price from fruits where f_name='apple';

在这里插入图片描述
7.查询价格低于10的水果的名称

select f_name from fruits where f_price<10;

在这里插入图片描述

8.带IN关键字的查询

  • 查询s_id为101和102的记录
select s_id from fruits where s_id in (101,102)order by f_name;

在这里插入图片描述
9.查询所有s_id不等于101也不等于102的记录

select s_id,f_name,f_price from fruits where s_id NOT IN (101,102) order by f_name;

在这里插入图片描述
10.带有BETWEEN的范围查询

  • 查询价格在2.00元到10.20元之间的水果名称和价格
select f_name,f_price from fruits where f_price between 2.00 AND 10.20;

在这里插入图片描述

  • 查询价格不在2.00元到10.20元之间的水果名称和价格
 select f_name,f_price from fruits where f_price not between 2.00 AND 10.20;

在这里插入图片描述
11.带like的字符匹配模糊查询

  • 百分号通配符‘%’,匹配任意长度的字符,甚至包括零字符

查找以‘b’字母开头的水果

select f_name,f_id from fruits where f_name like 'b%';

在这里插入图片描述

  • 在fruits表中,查询f_name中包含‘字母’“‘g’”的记录
select f_id,f_name from fruits where f_name like '%g%';

在这里插入图片描述

  • 查询以‘b’’开头,并以‘y‘’’结尾的水果的名称
select f_name from fruits where f_name like'b%y';

在这里插入图片描述

  • 下划线通配符,一次只能匹配一个字符
    查询以字母‘y’结尾,且‘y’前面只有四个字母的记录
select f_id,f_name from fruits where f_name like '____y';

在这里插入图片描述
12.在fruits表中查询s_id=101;并且f_price大于等于5的水果价格和名称

select f_price,f_name from fruits where s_id=101 and f_price>=5;

在这里插入图片描述
13.带or的多条件查询

  • 查询s_id=101或者s_id=102的水果供应商的f_price和f_name
select f_price,f_name from fruits where s_id=101 or s_id=102;

在这里插入图片描述

  • 查询s_id=101或者s_id=102的水果供应商的f_price和f_name
select f_price,f_name from fruits where s_id IN (101,102);

在这里插入图片描述
14.查询结果不重复

  • 查询fruits表中s_id字段的值,返回s_id字段值且不重复
select distinct s_id from fruits;

在这里插入图片描述
15.对查询结果排序

  • 1.单列排序
    例如查询f_name字段
select f_name from fruits;

在这里插入图片描述

下面使用ORDER BY子句对表的指定列进行排序

select f_name from fruits order by f_name;

在这里插入图片描述

  • 2.多列排序

查询fruits表中的f_name和f_price字段,先按f_name排序,再按f_price排序

select f_name,f_price from fruits order by f_name.f_price;

在这里插入图片描述

在对多列进行排序的时候,首先排序的第一列必须具有相同的列值,才会对第二列进行排序。如果第一列数据中所有的值都是唯一的,将不再对第二列进行排序

  • 来向表中插入一个相同的f_name=aplple,f_price不同
  • 在这里插入图片描述
    在这里插入图片描述
  • 3.指定排序方向

查询fruits表中的f_name和f_price字段,对结果按f_price进行降序排序

select f_name,f_price from fruits order by f_price DESC;

在这里插入图片描述
16.分组查询

GROUP BY关键字通常和集合函数一起使用,例如:MAX()/MIN()/COUNT()/SUM()/AVG().

  • 例如,要返回每个水果供应商提供的水果种类,这是就要在分组的过程中用到COUNT()函数,把数据分为多个分组,并对每一个分组进行计算。
  • 根据s_id对fruits表中的数据进行分组
select s_id,COUNT(*) AS TOTAL from fruits group by s_id;

在这里插入图片描述

  • 2.使用having过滤分组

根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息

select s_id,group_concat(f_name) AS Names from fruits group by s_id having count(f_name)>1;

在这里插入图片描述

  • 3.在group by子句使用with rollup
    使用with rollup关键字后,在所有查询出的分组记录中增加一条记录,该记录计算查询出所有的记录的综合,及统计记录数量。

在根据s_id对fruits表中的数据进行分组,并显示记录数量。

select s_id,count(*) as total from fruits group by s_id with rollup; 

在这里插入图片描述

  • 4.多字段分组
    根据s_id和f_name字段对fruits表中的数据进行分组
select from fruits group by s_id,f_name;

在这里插入图片描述

17.使用LIMIT限制查询结果的数量

  • 显示fruits 表查询结果的前四行
select *from fruits limit 4;

在这里插入图片描述

下篇继续--------------------------------------------------------------------------------聚合函数

回顾上三篇:

Mysql数据库(一):详细,对新手非常友好

Mysql数据库(二):详细,对新手非常友好

Mysql数据库(三):详细,对新手非常友好

猜你喜欢

转载自blog.csdn.net/qq_43078445/article/details/108308993
今日推荐