千家信息网

MySQL基本查询示例(2)

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,注:本博文基于上一篇博文中的表进行查询,上篇博文:MySQL基本查询示例(1)。1、查询fruits表中每个s_id对应的所有f_name值mysql> select s_
千家信息网最后更新 2026年11月01日MySQL基本查询示例(2)

注:本博文基于上一篇博文中的表进行查询,上篇博文:MySQL基本查询示例(1)。

1、查询fruits表中每个s_id对应的所有f_name值

mysql> select s_id,group_concat(f_name) as name from fruits group by s_id having count(f_name) > 1;

返回结果如下:

2、统计相同s_id值的行有多少?

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

注:with rollup的作用是将s_id分组后的和再进行相加,统计出来的总数,也就是16。

3、创建一个新表并插入数据

mysql> create table orderitems    -> (    -> o_num int not null,    -> o_item int not null,    -> f_id char(10) not null,    -> quantity int not null,    -> item_price decimal(8,2) not null,    -> primary key(o_num,o_item)    -> );mysql> insert into orderitems(o_num,o_item,f_id,quantity,item_price)    -> values(30001,1,'a1',10,'5.2'),    -> (30001,2,'b2',3,'7.6'),    -> (30001,3,'bs1',5,'11.2'),    -> (30001,4,'bs2',15,'9.2'),    -> (30002,1,'b3',2,'20.0'),    -> (30003,1,'c0',100,10),    -> (30004,1,'o2',50,'2.50'),    -> (30005,1,'c0',5,'10'),    -> (30005,2,'b1',10,'8.99'),    -> (30005,3,'a2',10,'2.2'),    -> (30005,4,'m1',5,'14.99');

查看表中的数据如下:

4、查询同一个o_num列的quantity(数量)和item_price(价格)相乘结果大于100的行

mysql> select o_num,SUM(quantity*item_price) as total from orderitems    -> group by o_num having total > 100 order by total;

5、limit--限制返回的行数

限制1:
mysql> select * from fruits limit 4;

返回结果如下:

限制2:
mysql> select * from fruits limit 4,3;

返回结果如下:

6、查询每个o_num对应的f_id有几个

mysql> select o_num,count(f_id) as items_total     -> from orderitems    -> group by o_num;

返回的结果如下:

7、查询o_num为30005的quantity(数量)有多少

mysql> select sum(quantity) as items_total    -> from orderitems    -> where o_num = 30005;

返回的结果如下:

8、查询s_id为103的f_price的平均数是多少(s_id的平均价格是多少)

mysql> select avg(f_price) as avg_price from fruitss where s_id = 103;

返回的结果如下:

9、查询每个s_id对应的平均价格(f_price)是多少?

mysql> select s_id,avg(f_price) as avg_price from fruits group by s_id;

返回的结果如下:

10、查询每个s_id中f_price值最大的行是哪个?

mysql> select s_id, max(f_price) as max_price from fruits group by s_id;

返回的结果如下:

同理,若要查看最小的行,只需要将max换为min即可。

11、查询每个f_price值最大的值及其所对应的s_id、f_name。

mysql> select s_id,f_price,f_name from fruits    -> where f_price in(select max(f_price) from fruits group by s_id);

返回的结果如下:

12、再次创建所需表并插入数据

mysql> create table suppliers    -> (    -> s_id int not null auto_increment,    -> s_name char(50) not null,    -> s_city char(50) null,    -> s_zip char(10) null,    -> s_call char(50) not null,    -> primary key(s_id)    -> );mysql> create table orders    -> (    -> o_num int not null auto_increment,    -> o_date datetime not null,    -> c_id int not null,    -> primary key(o_num)    -> );mysql> insert into suppliers(s_id,s_name,s_city,s_zip,s_call)     -> values(101,'FastFruit Inc.','tianjin','300000','48075'),    -> (102,'LT Supplies','chongqing','400000','44333'),    -> (103,'acme','shanghai','200000','90046'),    -> (104,'fnk inc.','zhongshan','528437','11111'),    -> (105,'good set','taivuang','030000','22222'),    -> (106,'just eat ours','beijing','010','45678'),    -> (107,'dk inc.','zhengzhou','450000','33332');mysql> insert into orders(o_num,o_date,c_id)    -> values(30001,'2008-09-01',10001),    -> (30002,'2008-09-12',10003),    -> (30003,'2008-09-30',10004),    -> (30004,'2008-10-03',10005),    -> (30005,'2008-10-08',10001);

13、表联接类型的概念

在进行接下来的查询,这里有必要说一下多表查询的相关概念。

1)内联接

内联接(inner join)是最常见的一种联接方式,只返回两个数据集合之间匹配关系的行,将位于两个互相交叉的数据集合中重叠部分以内的数据行联接起来。

内联接使用比较运算符进行表间某些列数据的比较操作,并列出这些表中与联接相匹配的数据行。

2)外联接

外联接(outer join)是对内联接的扩充,除了将两个数据集合中重复部分以内的数据行联接起来之外,还可以根据要求返回左侧或右侧表中非匹配的数据或全部的数据。

外联接还可以分为以下几种:

左外联接(left join或left outer join)的结果包括左表的所有行,如果左表的某一行在右表中没有匹配行,则右表返回空值,否则返回相应值。

右外联接(right join或right outer join)是左外联接的反向联接,将返回右表的所有行,如果右表的某一行在左表中没有匹配行,则左表返回空值,否则返回相应值。

全联接(full join 或full outer join)将返回左表和右表中的所有行,当某一行在另一个表中没有匹配行时,另一个表返回空值,否则返回相应值。

14、内联接查询,将两个表的指定列生成一个新表

mysql> select suppliers.s_id,s_name,f_name,f_price from fruits inner join suppliers on fruits.s_id = suppliers.s_id;

返回的结果如下:

15、左外联接查询示例

mysql> select customers.c_id,orders.o_num from customers     -> left outer join orders on customers.c_id = orders.c_id    -> ;

返回结果如下:

16、内联接查询时指定其他条件

mysql> select customers.c_id,orders.o_num from customers     -> left outer join orders on customers.c_id = orders.c_id    -> ;

返回结果如下:

-------- 本文至此结束,感谢阅读 --------

查询 结果 数据 外联 两个 一行 价格 限制 示例 最大 数量 概念 部分 统计 最小 相同 必要 接下来 上篇 之间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会 疫情对互联网科技公司影响 北京互联网科技有限公司 互联网科技公司怎么样 互联网与未来科技 互联网科技的英文 长亮科技 互联网金融 互联网科技生活的内容 中盈科技互联网信息有限公司 荆州市昕露互联网络科技有限公司 苏州五指互联网络科技有限 科技类公司包括互联网吗 美国互联网科技实力 南通创西澳互联网科技有限公司 互联网科技平台产品运营 银川新华互联网科技学校是国营吗 第三届互联网大会安防黑科技 互联网科技品牌 数字科技和互联网金融哪个好 科技美学互联网 艺术 广西拼得多互联网科技有限公司 互联网新科技动漫ppt素材 乌鲁木齐新华智原互联网科技学校 互联网第三次科技革命特征 北京市互联网新科技 雨阳互联网卡科技有限公司 浙南科技城互联网大厦招聘 互联网界的黑科技 高科技和互联网的现代国家 中国主要互联网科技公司
0