数据库-查询练习1~52(含参考答案)

查询练习题

第一部分: #创建fruits表 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) ) ; #插入数据 INSERT INTO fruits (f_id, s_id, f_name, f_price) VALUES ('a1', 101, 'apple', 5.2), ('b1', 101, 'blackberry', 10.2),('bs1', 102, 'orange', 11.2), ('bs2', 105, 'melon', 8.2),('t1', 102, 'banana', 10.3),('t2', 102, 'grape', 5.3), ('o2', 103, 'coconut', 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.6), ('m2', 105, 'xbabay', 2.6),('t4', 107, 'xbababa', 3.6),('m3', 105, 'xxtt', 11.6), ('b5', 107, 'xxxx', 3.6) ;

【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】查询价格为10.2元的水果的名称 Select f_name from fruits where f_price=10.2; 【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】查询价格在2.00元到10.20元之间的水果名称和价格

Select f_name,f_price from fruits where f_price>2.00 and f_price<10.20; 【10】查询价格在2.00元到10.20元之外的水果名称和价格

Select f_name,f_price from fruits where f_price<2.00 or f_price>10.20; 【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”;

第二部分:

#创建数据表customers CREATE TABLE customers( c_id INT NOT NULL AUTO_INCREMENT, c_name CHAR(50) NOT NULL, c_address CHAR(50) NULL, c_city CHAR(50) NULL, c_zip CHAR(10) NULL, c_contact CHAR(50) NULL, c_email CHAR(255) NULL, PRIMARY KEY (c_id) ); #插入数据,请执行以下语句。 INSERT INTO customers(c_id, c_name, c_address, c_city, c_zip, c_contact, c_email) VALUES(10001, 'RedHook', '200 Street ', 'Tianjin', '300000', 'LiMing', 'LMing@163.com'), (10002, 'Stars', '333 Fromage Lane','Dalian', '116000', 'Zhangbo','Jerry@hotmail.com'), (10003, 'Netbhood', '1 Sunny Place', 'Qingdao', '266000','LuoCong', NULL), (10004, 'JOTO', '829 Riverside Drive', 'Haikou', '570000', 'YangShan', 'sam@hotmail.com'); 查询表中的记录数目: 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;

第三部分:

创建数据表,SQL语句如下: 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) ) ; 插入数据,SQL语句如下: INSERT INTO orderitems(o_num, o_item, f_id, quantity, item_price) VALUES(30001, 1, 'a1', 10, 5.2),(30001, 2, 'b2', 3, 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); 【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表中查找不同供应商提供的价格最低的水果

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4