diff --git "a/55 \346\235\250\346\227\255\344\270\234/20230308\350\266\205\345\270\202\350\264\255\347\211\251.md" "b/55 \346\235\250\346\227\255\344\270\234/20230308\350\266\205\345\270\202\350\264\255\347\211\251.md" new file mode 100644 index 0000000000000000000000000000000000000000..c58b132702dece0ca9de48fe3bc880cdd391f216 --- /dev/null +++ "b/55 \346\235\250\346\227\255\344\270\234/20230308\350\266\205\345\270\202\350\264\255\347\211\251.md" @@ -0,0 +1,55 @@ +### 作业 + +```mysql +CREATE TABLE orders( +orderID int, +orderDate DATEtime +); +drop table orders; +INSERT INTO orders VALUES ( 1, '2008-01-12 00:00:00.000' ),( 2, '2008-2-10 00:00:00.000' ),( 3, '2008-02-15 00:00:00.000' ),( 4, '2008-03-10 00:00:00.000' ); + +CREATE TABLE b( +itemID int, +orderid int, +itemType VARCHAR(5), +itemName VARCHAR(5), +theNumber int, +theMoney INT +); + +INSERT INTO b VALUES(1,1,'文具','笔',72,2),(2,1,'文具','尺',10,1),(3,1,'体育用品','篮球',1,56),(4,2,'文具','笔',36,2),(5,2,'文具','固体胶',20,3),(6,2,'日常用品','透明胶',2,1),(7,2,'体育用品','羽毛球',20,3),(8,3,'文具','订书机',20,3),(9,3,'文具','订书针',10,3),(10,3,'文具','裁纸刀',5,5),(11,4,'文具','笔',20,2),(12,4,'文具','信纸',50,1),(13,4,'日常用品','毛巾',4,5),(14,4,'日常用品','透明胶',30,1),(15,4,'体育用品','羽毛球',20,3); + +-- 根据图示,完成下列题目: + +-- 1.查询所有的订单的订单的编号,订单日期,订购产品的类别和订购的产品名称,订购数量和订购单价 +SELECT b.orderid,orderdate,itemtype,itemname,thenumber,themoney FROM orders INNER JOIN b ON orders.orderID = b.orderid; +-- 2.查询订购数量大于50的订单的编号,订单日期,订购产品的类别和订购的产品名称 +SELECT * FROM b WHERE thenumber>50; +SELECT b.orderid,orderdate,itemtype,itemname FROM b INNER JOIN orders ON b.orderid = orders.orderID AND thenumber>50; +-- 3.查询所有的订单的订单的编号,订单日期,订购产品的类别和订购的产品名称,订购数量和订购单价以及订购总价 +SELECT b.orderid,orderdate,itemtype,itemname,thenumber,themoney,(themoney*thenumber) FROM b INNER JOIN orders ON b.orderid = orders.orderID; + + +-- 4.查询单价大于等于5 或者 数量大于等于50的订单的订单的编号,订单日期,订购产品的类别和订购的产品名称,订购数量和订购单价以及订购总价 +SELECT b.orderid,orderdate,itemtype,itemname,thenumber,themoney,(themoney*thenumber) FROM b INNER JOIN orders ON b.orderid = orders.orderID WHERE themoney>=5 OR thenumber>=50; + +-- 5.查询每个订单分别订购了几个产品,例如: +-- 编号 订购产品数 +-- 1 3 +-- 2 4 +-- +SELECT orders.orderID 编号,COUNT(b.itemName) 订购产品数 FROM b INNER JOIN orders ON b.orderid = orders.orderID GROUP BY orders.orderID; + +-- 6.查询每个订单里的每个类别的产品分别订购了几次和总数量,例如: +-- +-- 订单编号 产品类别 订购次数 总数量 +-- +-- 1 文具 2 82 +-- 1 体育用品 1 1 +-- 2 文具 2 56 +-- 2 体育用品 1 2 +-- 2 日常用品 1 20 +select orderid 订单编号,itemType 产品类别,count(itemType) 订购次数,sum(theNumber) 总数量 from b group by 订单编号,产品类别; + +``` + diff --git "a/55 \346\235\250\346\227\255\344\270\234/20230309\346\213\237\350\200\203\344\275\234\344\270\232.md" "b/55 \346\235\250\346\227\255\344\270\234/20230309\346\213\237\350\200\203\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..a7341b6ccddf9745fce0ea9885d4780c85350991 --- /dev/null +++ "b/55 \346\235\250\346\227\255\344\270\234/20230309\346\213\237\350\200\203\344\275\234\344\270\232.md" @@ -0,0 +1,112 @@ +# 作业 + +```mysql +create database sonselect charset utf8; +use sonselect; +create table stuinfo( +stuNo varchar(10), +stuName varchar(4), +stuSex enum('男','女'), +stuAge int, +stuAddress varchar(4), +stuSeat INT +); +create table stuExam( +examNo int, +stuNo varchar(10), +writtenExam int, +labExam INT +); +create table stuMarks( +examNo int, +stuID varchar(10), +score int +); +insert into stuinfo values +('s2501','张秋利','男',20,'美国硅谷',1), +('s2502','李斯文','女',18,'湖北武汉',2), +('s2503','马文才','男',18,'湖南长沙',3), +('s2504','欧阳俊雄','女',21,'湖北武汉',4), +('s2505','梅超风','男',20,'湖北武汉',5), +('s2506','陈旋风','男',19,'美国硅谷',6); +insert into stuExam values +(1,'s2501',50,70), +(2,'s2502',60,65), +(3,'s2503',86,70), +(4,'s2504',40,80), +(5,'s2505',70,85), +(6,'s2506',85,90); +insert into stuMarks VALUES +(1,'s2501',88), +(2,'s2501',92), +(3,'s2501',53), +(4,'s2502',60), +(5,'s2502',99), +(6,'s2503',82); + + +-- 1.查询学生信息表(stuinfo)中所有列信息,给每列取上中文名称 +SELECT stuno 学号, stuname 学生姓名, stusex 性别, stuage 年龄, stuaddress 住址, stuseat 座位号 FROM stuinfo; +-- 2.查询学生信息表(stuinfo)中的姓名,年龄和地址三列的信息 +SELECT stuname,stuage,stuaddress FROM stuinfo; +-- 3.查询学生分数表(stuexam)中的学号,笔试和机试三列的信息,并为这三列取中文名字 +SELECT stuno , writtenexam , labexam FROM stuexam; +-- 5.查询学生分数表(stuexam)中的学生的学号,笔试,机试以及总分这四列的信息 +SELECT stuno,writtenexam,labexam,SUM(writtenexam+labexam) FROM stuexam; +-- 6.查询学生信息表(stuInfo)中学生来自哪几个地方 +SELECT DISTINCT stuaddress FROM stuinfo; +-- 7.查询学生信息表(stuInfo)中学生有哪几种年龄,并为该列取对应的中文列名 +SELECT DISTINCT stuage 年龄区间 FROM stuinfo; +-- 8.查询学生信息表(stuInfo)中前3行记录 +SELECT * FROM stuinfo LIMIT 0,3; +-- 9.查询学生信息表(stuInfo)中前4个学生的姓名和座位号 +SELECT stuname, stuseat FROM stuinfo LIMIT 0,4; +-- 11.将地址是湖北武汉,年龄是20的学生的所有信息查询出来 +SELECT * FROM stuinfo WHERE stuage=20 AND stuaddress='湖北武汉'; +-- 12.将机试成绩在60-80之间的信息查询出来,并按照机试成绩降序排列 +SELECT * FROM stuexam WHERE labexam BETWEEN 60 AND 80 GROUP BY labexam DESC; +-- 13.查询来自湖北武汉或者湖南长沙的学生的所有信息 +SELECT * FROM stuinfo WHERE stuaddress = '湖北武汉' OR stuaddress = '湖南长沙'; +-- 14.查询出笔试成绩不在70-90之间的信息,并按照笔试成绩升序排列 +SELECT * FROM stuexam WHERE writtenexam NOT BETWEEN 70 AND 90 GROUP BY writtenexam DESC; +-- 15.查询年龄没有写的学生所有信息 +SELECT * FROM stuinfo WHERE stuage=NULL; +-- 16.查询年龄写了的学生所有信息 +SELECT * FROM stuinfo WHERE stuage IS NOT null; +-- 17.查询姓张的学生信息 +SELECT * FROM stuinfo WHERE stuname like '张%'; +-- 18.查询学生地址中有‘湖’字的信息 +SELECT * FROM stuinfo WHERE stuaddress like '湖%'; +-- 19.查询姓张但名为一个字的学生信息 +SELECT * FROM stuinfo WHERE stuname LIKE '张_'; +-- 20.查询姓名中第三个字为‘俊’的学生的信息,‘俊’后面有多少个字不限制 +SELECT * FROM stuinfo WHERE stuname LIKE '__俊%'; +-- 21.按学生的年龄降序显示所有学生信息 +SELECT * FROM stuinfo GROUP BY stuage DESC; +-- 22.按学生的年龄降序和座位号升序来显示所有学生的信息 +SELECT * FROM stuinfo GROUP BY stuage DESC,stuseat asc; +-- 23显示笔试第一名的学生的考试号,学号,笔试成绩和机试成绩 +SELECT MAX(writtenexam) FROM stuexam; +SELECT * FROM stuexam WHERE writtenexam=(SELECT MAX(writtenexam) FROM stuexam); +-- 24.显示机试倒数第一名的学生的考试号,学号,笔试成绩和机试成绩 +SELECT MIN(labexam) FROM stuexam; +SELECT * FROM stuexam WHERE labexam=(SELECT MIN(labexam) FROM stuexam); +-- 25.查询每个地方的学生的平均年龄 +SELECT stuaddress,AVG(stuage) FROM stuinfo GROUP BY stuaddress; +-- 26.查询男女生的分别的年龄总和 +SELECT stusex,SUM(stuage) FROM stuinfo GROUP BY stusex; +-- 27.查询每个地方的男女生的平均年龄和年龄的总和 +SELECT stusex,stuaddress,AVG(stuage),SUM(stuage) FROM stuinfo GROUP BY stuaddress,stusex; + + + + + + + + + + +``` + +# \ No newline at end of file