SQL语句(练习题)

#1
#需求:查询所有货品信息
SELECT * FROM product;
#需求:查询所有货品的id,supplier,cutoff
SELECT id,supplier,cutoff FROM product;
SELECT ID,DIR_ID FROM product;
SELECT DISTINCT dir_id FROM product;
SELECT DIR_ID PS FROM product;
SELECT saleprice*3 FROM product
#2.过滤查询
#需求: 选择id,货品名称,零售价在300-400之间的货品
SELECT id,productName,salePrice FROM product WHERE salePrice>300 AND salePrice<400;
#需求: 选择id,货品名称,分类编号为2或4的所有货品
SELECT id,productName,dir_id xid FROM product WHERE dir_id=2 OR dir_id=4;
#需求: 选择id,货品名称,分类编号不为2的所有商品
SELECT id,productName,dir_id FROM product WHERE dir_id!=2;
SELECT id,productName,dir_id FROM product WHERE dir_id<>2;
#需求: 选择id,货品名称,分类编号的货品零售价大于等于250或者成本大于等于200
SELECT id,productName,dir_id,salePrice,costPrice FROM product
WHERE salePrice>=250 OR costPrice>=200;
#3.其余过滤查询
#需求: 选择id,货品名称,零售价在300-400之间的货品
SELECT id,productName,salePrice FROM product WHERE salePrice BETWEEN 300 AND 400;
#需求: 选择id,货品名称,零售价不在300-400之间的货品
SELECT id,productName,salePrice FROM product WHERE salePrice NOT BETWEEN 300 AND 400;
#需求:选择id,货品名称,分类编号为2或4的所有货品
SELECT id,productName,dir_id FROM product WHERE dir_id IN (2 OR 4);
#需求:选择id,货品名称,分类编号不为2或4的所有货品
SELECT id,productName,dir_id FROM product WHERE dir_id NOT IN (2 OR 4);
#需求:查询商品名为NULL的所有商品信息
SELECT id,productName FROM product WHERE productName IS NULL;
#需求: 查询货品名称带有 ‘M‘ 的所有信息
SELECT id,productName From product WHERE productName LIKE ‘%M%‘;
#需求: 查询匹配货品名称 ‘罗技M9?‘ 的所有信息
SELECT id,productName From product WHERE productName LIKE ‘罗技M9_‘;
#需求: 查询匹配货品名称 ‘罗技M9??‘ 的所有信息
SELECT id,productName From product WHERE productName LIKE ‘罗技M9__‘;
#4
#需求:选择所有信息并且按零售价升序/降序排序
SELECT * FROM product ORDER BY salePrice;
SELECT * FROM product ORDER BY salePrice ASC;
SELECT * FROM product ORDER BY salePrice DESC;
#需求:选择id,货品名称,分类编号,零售价先按分类编号排序,编号相同的再按零售价降序排序
SELECT id,productName,dir_id,salePrice FROM product ORDER BY dir_id,salePrice DESC;
#需求:查询M系列并按照批发价排序(加上别名)
SELECT id,productName,salePrice pf FROM product WHERE productName LIKE ‘%M%‘ ORDER BY pf DESC;
#需求:查询分类为2并按照批发价升序/降序排序(加上别名)
SELECT id,productName,dir_id,salePrice pf FROM product WHERE dir_id=2 ORDER BY salePrice;
SELECT id,productName,dir_id,salePrice pf FROM product WHERE dir_id=2 ORDER BY salePrice DESC;
#5.
#需求:查询所有商品平均零售价
SELECT AVG(salePrice) FROM product;
#需求:查询商品总记录数
SELECT COUNT(id) FROM product;
#需求:查询分类为2的商品总数
SELECT COUNT(id) FROM product WHERE dir_id=2;
#需求:查询商品的最小零售价,最高零售价,以及所有商品零售价总和
SELECT MIN(salePrice),MAX(salePrice),SUM(salePrice) FROM product;

#6.-------------------------------------------
#需求:查询所有的货品信息+对应的货品分类信息----------
#显示内连接
SELECT * FROM product,productdir WHERE product.dir_id=productdir.id;
#隐示内连接
SELECT * FROM product p JOIN productdir pd ON p.dir_id=pd.id;

#需求: 查询零售价大于200的无线鼠标------------
#显示内连接
SELECT * FROM product,productdir WHERE salePrice>200 AND dirName=‘无线鼠标‘ AND product.dir_id=productdir.id;
#隐示内连接
SELECT * FROM product p JOIN productdir pd ON salePrice>200 AND dirName=‘无线鼠标‘ AND p.dir_id=pd.id;

#需求: 查询每个货品对应的分类以及对应的库存---------
#显示内连接
SELECT p.productName,pd.dirName,pc.storeNum FROM product p,productdir pd,productstock pc WHERE p.dir_id=pd.id AND p.dir_id=pc.product_id;
#隐示内连接
SELECT p.productName,pd.dirName,pc.storeNum FROM product p JOIN productdir pd JOIN productstock pc ON p.dir_id=pd.id AND p.dir_id=pc.product_id;

#需求: 如果库存货品都销售完成,按照利润(profit)从高到低查询货品名称,零售价,货品分类(三张表).-------------
#显示内连接
SELECT p.id,p.productName,p.salePrice,pd.dirName,(p.salePrice-p.costPrice)*pc.storeNum profit
FROM product p,productdir pd,productstock pc
WHERE p.dir_id=pd.id AND p.dir_id=pc.product_id
ORDER BY profit;
#隐示内连接
SELECT p.id,p.productName,p.salePrice,pd.dirName,(p.salePrice-p.costPrice)*pc.storeNum profit
FROM product p JOIN productdir pd JOIN productstock pc
ON p.dir_id=pd.id AND p.dir_id=pc.product_id
ORDER BY profit;

#需求:查询出所有商品编号对于商品的所有信息
SELECT * FROM product p LEFT JOIN productdir pd ON p.dir_id=pd.id;

SELECT * FROM product p RIGHT JOIN productdir pd ON p.dir_id = pd.id;

#7.
#需求: 查询每个商品分类的名称和父分类名称:
#显示内连接
SELECT p.id,p.dirName,pt.dirName FROM productdir p,productdir pt WHERE p.parent_id=pt.id;
#隐示内连接
SELECT p.id,p.dirName,pt.dirName FROM productdir p JOIN productdir pt ON p.parent_id=pt.id;

#需求: 查询出所有的顶级分类
SELECT * FROM productdir WHERE parent_id IS NULL;

SELECT * FROM product WHERE supplier IS NULL;

#8.
#1.插入完整数据记录/空值
INSERT INTO productdir VALUES(101,‘机械键盘‘,5);
#2.插入数据记录一部分
INSERT productdir (id,dirName,parent_id) VALUES(NULL,‘老人键盘‘,5);
INSERT productdir(dirName) VALUES(‘键盘‘);
INSERT productdir(dirName) VALUES(NULL);
#3.插入查询出来的结果
INSERT productdir(dirName,parent_id)
SELECT dirName,parent_id FROM productdir;

#删除数据
DELETE FROM productdir WHERE id = 105;

DELETE FROM productdir WHERE id > 100;

#需求:将零售价大于300的商品的零售价上调0.2倍
UPDATE product SET salePrice = salePrice*1.2 WHERE salePrice > 300;

UPDATE product SET salePrice = salePrice/1.2 WHERE salePrice > 300;
#需求:将零售价大于300的有线鼠标的零售价上调0.1倍
UPDATE product p,productdir pd SET salePrice = salePrice*1.1
WHERE p.dir_id = pd.id AND pd.dirName = ‘有线鼠标‘ AND p.salePrice > 300;

#分组 (主要是统计的功能) GROUP BY HAVING

SELECT dir_id,COUNT(id) FROM product GROUP BY dir_id;

SELECT dir_id,COUNT(id) AS ‘统计数量‘ FROM product
GROUP BY dir_id HAVING dir_id > 2;

时间: 2024-10-13 17:57:27

SQL语句(练习题)的相关文章

sql语句练习题(Mysql版)

表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号 –3.教师表 Teacher(t_id,t_name) –教师编号,教师姓名 –4.成绩表 Score(s_id,c_id,s_score) –学生编号,课程编号,分数 测试数据 --建表 --学生表 CREATE TABLE `Student`( `s_

数据库SQL语句练习题

一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示.用SQL语句创建四个表并完成相关题目. 表1-1数据库的表结构 表(一)Student (学生表) 属性名 数据类型 可否为空 含 义 Sno varchar (20) 否 学号(主码) Sname varchar (20) 否 学生姓名 Ssex

20_学生选课数据库SQL语句练习题

一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示.用SQL语句创建四个表并完成相关题目. 表1-1数据库的表结构 表(一)Student (学生表) 字段名 数据类型 可否为空 含 义 Sno Varchar2(3) 否 学号(主键) Sname Varchar2(8) 否 学生姓名 Ssex Va

sql语句练习题及答案

表结构 创建表数据    SET NAMES utf8;    SET FOREIGN_KEY_CHECKS = 0; -- ----------------------------    --  Table structure for `class`    -- ----------------------------    DROP TABLE IF EXISTS `class`;    CREATE TABLE `class` (      `cid` int(11) NOT NULL A

sql语句练习题

2.列出所有办事员(CLERK)的姓名,编号和部门编号: SELECT ename,empno,deptno FROM emp WHERE UPPER(job)='CLERK'; 5.找出部门10中所有经理(MANAGER) 和部门20中所有办事员(CLERK)的详细资料 SELECT * FROM emp WHERE (deptno=10 AND job='MANAGER') OR (deptno=20 AND job='CLERK'); 6.找出部门10中所有经理,部门20中所有的办事员,既

_学生选课数据库SQL语句练习题

1. 查询Student表中的所有记录的Sname.Ssex和Class列. select Sname,Ssex,t.sclass from STUDENT t 2. 查询教师所有的单位即不重复的Depart列. select distinct t.depart from TEACHER t 3. 查询Student表的所有记录. select * from STUDENT t 4. 查询Score表中成绩在60到80之间的所有记录. select * from SCORE t where de

(10.09作业)学生选课数据库SQL语句练习题

数据库SQL语句练习题10--18

10.查询Score表中的最高分的学生学号和课程号.(子查询或者排序) select t.sno,t.cno from SCORE t where degree = (select max(degree) from SCORE t) 11. 查询每门课的平均成绩. 12.查询Score表中至少有5名学生选修的并以3开头的课程的平均分数. select avg(degree) from SCORE t where( cno in (select cno from SCORE t group by

数据库SQL语句练习题5--9

5. 查询Score表中成绩为85,86或88的记录. select * from SCORE t where degree in (85,86,88) 6. 查询Student表中“95031”班或性别为“女”的同学记录. select * from STUDENT t where class='95031' or ssex = '女' 7. 以Class降序查询Student表的所有记录. select * from STUDENT t order by class desc 8. 以Cno

课数据库SQL语句练习题

20.查询score中选学多门课程的同学中分数为非最高分成绩的记录. 24.查询选修某课程的同学人数多于5人的教师姓名 25.查询95033班和95031班全体学生的记录. 26.  查询存在有85分以上成绩的课程Cno. 28.查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof.