数据库查询练习152(含参考答案)
查询练习题第一部分:
【1】从fruits表中检索所有字段的数据
Select * from fruits;
【2】查询fruits表中f_name列所有水果名称Select f_name from fruits;
【3】从fruits表中获取f_name和f_price两列
Select f_name,f_price from fruits;
【4】查询价格为元的水果的名称
Select f_name from fruits where f_price=;
【5】查找名称为“apple”的水果的价格
Select f_price from fruits where f_name=’apple’;
【6】查询价格小于10的水果的名称
Select f_name from fruits where f_peice<10;
【7】s_id为101和102的记录
Select * from fruits where s_id=101 or s_id=102;
【8】查询所有s_id不等于101也不等于102的记录
Select * from fruits where s_id!=101 and s_id!=102;
【9】查询价格在元到元之间的水果名称和价格
Select f_name,f_price from fruits where f_price> and f_price<;
【10】查询价格在元到元之外的水果名称和价格
Select f_name,f_price from fruits where f_price< or f_price>;
【11】查找所有以’b’字母开头的水果
Select f_name from fruits where f_name like ‘b%’;
【12】在fruits表中,查询f_name中包含字母’g’的记录
Select * from fruits where f_name like “%g%”;
【13】查询以’b’开头,并以’y’结尾的水果的名称
Select * from fruits where f_name like “b%y”;
【14】在fruits表中,查询以字母’y’结尾,且’y’前面只有4个字母的记录Select * from fruits where f_name like “____y”;
第二部分:
查询表中的记录数目:
SELECT COUNT(*) AS cust_num FROM customers;
【15】查询customers表中c_email为空的记录的c_id、c_name和c_email字段值Select c_id,c_name,c_email from customers where c_email is null;
【16】查询customers表中c_email不为空的记录的c_id、c_name和c_email字段值Select c_id,c_name,c_email from customers where c_email is not null;
【17】在fruits表中查询s_id = 101,并且f_price大于等于5的水果价格和名称
Select f_name,f_price from fruits where s_id=101 and f_price>=5;
【18】在fruits表中查询s_id = 101或者102,且f_price大于5,并且f_name=‘apple’的水果价格和名称
Select f_name,f_price from fruits where s_id in (101,102) and f_price>5 and f_name=’apple’;
【19】查询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;
【20】查询s_id=101或者s_id=102的水果供应商的f_price和f_name(用不同的方法)
Select f_price,f_name from fruits where s_id in (101,102);
【21】查询fruits表中s_id字段的值,返回s_id字段值且不得重复(使用distinct去重复)
SELECT DISTINCT s_id FROM fruits;
【22】查询fruits表的f_name字段值,并对其进行排序
Select f_name from fruits order by f_name;
【23】查询fruits表中的f_name和f_price字段,先按f_name排序,再按f_price排序
Select f_name,f_price from fruits order by f_name,f_price;
【24】查询fruits表中的f_name和f_price字段,对结果按f_price降序方式排序
Select f_name,f_price from fruits order by f_price desc;
【25】查询fruits表,先按f_price降序排序,再按f_name字段升序排序
Select * from fruits order by f_price desc,f_name;
【26】根据s_id对fruits表中的数据进行分组,并显示每个分组的总记录数。
Select s_id,count(*) from fruits group by s_id;
【27】根据s_id对fruits表中的数据进行分组,将每个供应商的水果名称显示出来(使用GROUP_CONCAT拼接字段内容)
SELECT s_id ,GROUP_CONCAT(f_name) AS NAMES FROM fruits GROUP BY s_id;
【28】根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息
Select s_id as nemes from fruits group by s_id having count(f_name)>1;
【29】根据s_id对fruits表中的数据进行分组,并显示记录数量
SELECT s_id, COUNT(*) AS Total FROM fruits
GROUP BY s_id WITH ROLLUP;
WITH ROLLUP对所有记录进行统计
【30】根据s_id和f_name字段对fruits表中的数据进行分组Select * from fruits group by s_id,f_name;
第三部分:
【31】查询总订单价格大于100的订单号和总订单价格
【32】显示fruits表查询结果的前4行
【33】在fruits表中,使用LIMIT子句,返回从第5个记录开始的,行数长度为3的记录【34】查询customers表中总的行数
【35】查询customers表中有电子邮箱的顾客的总数
【36】在orderitems表中,使用COUNT()函数统计不同订单号中订购的水果种类
【37】在orderitems表中查询30005号订单一共购买的水果总量
【38】在orderitems表中,使用SUM()函数统计不同订单号中订购的水果总量【39】在fruits表中,查询s_id=103的供应商的水果价格的平均值
【40】在fruits表中,查询每一个供应商的水果价格的平均值
【41】在fruits表中查找市场上价格最高的水果
【42】在fruits表中查找不同供应商提供的价格最高的水果
【43】在fruits表中查找f_name的最大值
【44】在fruits表中查找市场上价格最低的水果
【45】在fruits表中查找不同供应商提供的价格最低的水果
第四部分:
【46】在fruits表和suppliers表之间使用内连接查询。查询之前,查看两个表的结构:
DESC fruits;
DESC suppliers;
由结果可以看到,fruits表和suppliers表中都有相同数据类型的字段s_id,两个表通过s_id 字段建立联系。
接下来从fruits表中查询f_name、f_price字段,从suppliers表中查询s_id、s_name
【47】在fruits表和suppliers表之间,使用INNER JOIN语法进行内连接查询
【48】查询供应f_id= ‘a1’的水果供应商提供的其他水果种类【较难】
1.LEFT JOIN左连接
左连接的结果包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。
如果左表的某行在右表中没有匹配行,则在相关联的结果行中,右表的所有选择列表列均为空值。
【49】在customers表和orders表中,查询所有客户,包括没有订单的客户
2.RIGHT JOIN右连接
右连接是左连接的反向连接,将返回右表的所有行。如果右表的某行在左表中没有匹配行,左表将返回空值。
【50】在customers表和orders表中,查询所有订单,包括没有客户的订单
【51】在customers表和orders表中,使用INNER JOIN语法查询customers表中ID为10001的客户的订单信息
【52】在fruits表和suppliers表之间,使用INNER JOIN语法进行内连接查询,并对查询结果排序
参考答案
【1】从fruits表中检索所有字段的数据,SQL语句如下:SELECT * FROM fruits;
【2】查询fruits表中f_name列所有水果名称,SQL语句如下:SELECT f_name FROM fruits;
【3】从fruits表中获取f_name和f_price两列,SQL语句如下:SELECT f_name, f_price FROM fruits;
【4】查询价格为元的水果的名称,SQL语句如下:
SELECT f_name, f_price
FROM fruits
WHERE f_price = ;
【5】查找名称为“apple”的水果的价格,SQL语句如下:SELECT f_name, f_price
FROM fruits
WHERE f_name = 'apple';
【6】查询价格小于10的水果的名称,SQL语句如下:SELECT f_name, f_price
FROM fruits
WHERE f_price < 10;
【7】s_id为101和102的记录,SQL语句如下:
SELECT s_id,f_name, f_price
FROM fruits
WHERE s_id IN (101,102)
ORDER BY f_name;
【8】查询所有s_id不等于101也不等于102的记录,SQL语句如下:
SELECT s_id,f_name, f_price
FROM fruits
WHERE s_id NOT IN (101,102)
ORDER BY f_name;
【9】查询价格在元到元之间的水果名称和价格,SQL语句如下:
SELECT f_name, f_price FROM fruits WHERE f_price BETWEEN AND ;
【10】查询价格在元到元之外的水果名称和价格,SQL语句如下:
SELECT f_name, f_price
FROM fruits
WHERE f_price NOT BETWEEN AND ;
【11】查找所有以’b’字母开头的水果,SQL语句如下:
SELECT f_id, f_name
FROM fruits
WHERE f_name LIKE 'b%';
【12】在fruits表中,查询f_name中包含字母’g’的记录,SQL语句如下:
SELECT f_id, f_name
FROM fruits
WHERE f_name LIKE '%g%';
【13】查询以’b’开头,并以’y’结尾的水果的名称,SQL语句如下:
SELECT f_name
FROM fruits
WHERE f_name LIKE 'b%y';
【14】在fruits表中,查询以字母’y’结尾,且’y’前面只有4个字母的记录,SQL语句
如下:
SELECT f_id, f_name FROM fruits WHERE f_name LIKE '----y';
查询表中的记录数目:
SELECT COUNT(*) AS cust_num FROM customers;
【15】查询customers表中c_email为空的记录的c_id、c_name和c_email字段值,SQL语句如下:
SELECT c_id, c_name,c_email FROM customers WHERE c_email IS NULL;
【16】查询customers表中c_email不为空的记录的c_id、c_name和c_email字段值,SQL 语句如下:
SELECT c_id, c_name,c_email FROM customers WHERE c_email IS NOT NULL;
【17】在fruits表中查询s_id = 101,并且f_price大于等于5的水果价格和名称,SQL语句如下:
SELECT f_id, f_price, f_name FROM fruits WHERE s_id = '101' AND f_price >=5;
【18】在fruits表中查询s_id = 101或者102,且f_price大于5,并且f_name=‘apple’的水果价格和名称,SQL语句如下:
SELECT f_id, f_price, f_name FROM fruits
WHERE s_id IN('101', '102') AND f_price >= 5 AND f_name = 'apple';
【19】查询s_id=101或者s_id=102的水果供应商的f_price和f_name,SQL语句如下:
SELECT s_id,f_name, f_price FROM fruits WHERE s_id = 101 OR s_id = 102;
【20】查询s_id=101或者s_id=102的水果供应商的f_price和f_name,SQL语句如下:
SELECT s_id,f_name, f_price FROM fruits WHERE s_id IN(101,102);
【21】查询fruits表中s_id字段的值,返回s_id字段值且不得重复,SQL语句如下:
SELECT DISTINCT s_id FROM fruits;
【22】查询fruits表的f_name字段值,并对其进行排序,SQL语句如下:
SELECT f_name FROM fruits ORDER BY f_name;
【23】查询fruits表中的f_name和f_price字段,先按f_name排序,再按f_price排序,SQL 语句如下:
SELECT f_name, f_price FROM fruits ORDER BY f_name, f_price;
【24】查询fruits表中的f_name和f_price字段,对结果按f_price降序方式排序,SQL语句如下:
SELECT f_name, f_price FROM fruits ORDER BY f_price DESC;
【25】查询fruits表,先按f_price降序排序,再按f_name字段升序排序,SQL语句如下:
SELECT f_price, f_name FROM fruits ORDER BY f_price DESC, f_name;
【26】根据s_id对fruits表中的数据进行分组,并显示每个分组的总记录数,SQL语句如下:
SELECT s_id, COUNT(*) AS Total FROM fruits GROUP BY s_id;
【27】根据s_id对fruits表中的数据进行分组,将每个供应商的水果名称显示出来,SQL语句如下:
SELECT s_id ,GROUP_CONCAT(f_name) AS NAMES FROM fruits GROUP BY s_id;
【28】根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息,SQL语句如下:
SELECT s_id, GROUP_CONCAT(f_name) AS NAMES
FROM fruits
GROUP BY s_id HAVING COUNT(f_name) > 1;
【29】根据s_id对fruits表中的数据进行分组,并显示记录数量,SQL语句如下:
SELECT s_id, COUNT(*) AS Total
FROM fruits
GROUP BY s_id WITH ROLLUP;
【30】根据s_id和f_name字段对fruits表中的数据进行分组,SQL语句如下,
SELECT * FROM fruits GROUP BY s_id,f_name;
【31】查询总订单价格大于100的订单号和总订单价格,SQL语句如下:
SELECT o_num, SUM(quantity * item_price) AS orderTotal
FROM orderitems
GROUP BY o_num
HAVING SUM(quantity*item_price) >= 100;
可以看到,返回的结果中orderTotal列的总订单价格并没有按照一定顺序显示,使用ORDER BY关键字按总订单价格排序显示结果,SQL语句如下:
SELECT o_num, SUM(quantity * item_price) AS orderTotal
FROM orderitems
GROUP BY o_num
HAVING SUM(quantity*item_price) >= 100
ORDER BY orderTotal;
【32】显示fruits表查询结果的前4行,SQL语句如下:
SELECT * FROM fruits LIMIT 4;
【33】在fruits表中,使用LIMIT子句,返回从第5个记录开始的,行数长度为3的记录,SQL语句如下:
SELECT * FROM fruits LIMIT 4, 3;
【34】查询customers表中总的行数,SQL语句如下:
SELECT COUNT(*) AS cust_num FROM customers;
【35】查询customers表中有电子邮箱的顾客的总数,SQL语句如下:
SELECT COUNT(c_email) AS email_num FROM customers;
【36】在orderitems表中,使用COUNT()函数统计不同订单号中订购的水果种类,SQL语句如下:
SELECT o_num, COUNT(f_id) FROM orderitems GROUP BY o_num;
【37】在orderitems表中查询30005号订单一共购买的水果总量,SQL语句如下:
SELECT SUM(quantity) AS items_total FROM orderitems WHERE o_num = 30005;
【38】在orderitems表中,使用SUM()函数统计不同订单号中订购的水果总量,SQL语句如下:
SELECT o_num, SUM(quantity) AS items_total FROM orderitems GROUP BY o_num;
【39】在fruits表中,查询s_id=103的供应商的水果价格的平均值,SQL语句如下:
SELECT AVG(f_price) AS avg_price FROM fruits WHERE s_id = 103;
【40】在fruits表中,查询每一个供应商的水果价格的平均值,SQL语句如下:
SELECT s_id,AVG(f_price) AS avg_price FROM fruits GROUP BY s_id;
【41】在fruits表中查找市场上价格最高的水果,SQL语句如下:
SELECT MAX(f_price) AS max_price FROM fruits;
【42】在fruits表中查找不同供应商提供的价格最高的水果,SQL语句如下:
SELECT s_id, MAX(f_price) AS max_price FROM fruits GROUP BY s_id;
【43】在fruits表中查找f_name的最大值,SQL语句如下:
SELECT MAX(f_name) FROM fruits;
【44】在fruits表中查找市场上价格最低的水果,SQL语句如下:
SELECT MIN(f_price) AS min_price FROM fruits;
【45】在fruits表中查找不同供应商提供的价格最低的水果,SQL语句如下:
SELECT s_id, MIN(f_price) AS min_price FROM fruits GROUP BY s_id;
【46】在fruits表和suppliers表之间使用内连接查询。
从fruits表中查询f_name、f_price字段,从suppliers表中查询s_id、s_name,SQL语句如下:
SELECT , s_name,f_name, f_price
FROM fruits ,suppliers
WHERE = ;
【47】在fruits表和suppliers表之间,使用INNER JOIN语法进行内连接查询,SQL语句如下:
SELECT , s_name,f_name, f_price
FROM fruits INNER JOIN suppliers
ON = ;
【48】查询供应f_id= ‘a1’的水果供应商提供的其他水果种类,SQL语句如下:
SELECT ,
FROM fruits AS f1, fruits AS f2
WHERE = AND = 'a1';
【49】在customers表和orders表中,查询所有客户,包括没有订单的客户,SQL语句如下:
SELECT ,
FROM customers LEFT OUTER JOIN orders
ON = ;
【50】在customers表和orders表中,查询所有订单,包括没有客户的订单,SQL语句如下:
SELECT ,
FROM customers RIGHT OUTER JOIN orders
ON = ;
【51】在customers表和orders表中,使用INNER JOIN语法查询customers表中ID为10001的客户的订单信息,SQL语句如下:
SELECT ,
FROM customers INNER JOIN orders
ON = AND = 10001;
【52】在fruits表和suppliers表之间,使用INNER JOIN语法进行内连接查询,并对查询结果排序,SQL语句如下:
SELECT , s_name,f_name, f_price
FROM fruits INNER JOIN suppliers
ON =
ORDER BY ;