diff --git "a/29 \350\267\257\347\216\262/20230314 20230314 \347\254\254\344\272\214\347\273\204\351\242\230\347\233\256\357\274\210\350\267\257\347\216\262\357\274\214\346\233\271\346\255\243\346\263\242\357\274\214\346\270\251\350\264\265\351\233\257\357\274\214\345\210\230\346\226\207\351\224\213\357\274\214\351\230\231\344\271\246\346\226\207\357\274\211.md" "b/29 \350\267\257\347\216\262/20230314 20230314 \347\254\254\344\272\214\347\273\204\351\242\230\347\233\256\357\274\210\350\267\257\347\216\262\357\274\214\346\233\271\346\255\243\346\263\242\357\274\214\346\270\251\350\264\265\351\233\257\357\274\214\345\210\230\346\226\207\351\224\213\357\274\214\351\230\231\344\271\246\346\226\207\357\274\211.md" new file mode 100644 index 0000000000000000000000000000000000000000..9c4d6c044c99339ae43d82d72fd60d22c43f8eea --- /dev/null +++ "b/29 \350\267\257\347\216\262/20230314 20230314 \347\254\254\344\272\214\347\273\204\351\242\230\347\233\256\357\274\210\350\267\257\347\216\262\357\274\214\346\233\271\346\255\243\346\263\242\357\274\214\346\270\251\350\264\265\351\233\257\357\274\214\345\210\230\346\226\207\351\224\213\357\274\214\351\230\231\344\271\246\346\226\207\357\274\211.md" @@ -0,0 +1,232 @@ +# 题目 + +## 表 + +candidate 候选人信息表 + +| 字段名称 | 数据类型 | 是否主外键 | 说明要求 | +| --------- | ----------- | ---------- | -------- | +| myname | varchar(10) | 主键 | 姓名 | +| myage | int | | 年龄 | +| mysex | char | | 性别 | +| myaddress | varchar(10) | | 地址 | +| myheight | int | | 身高 | +| mycolor | varchar(10) | | 头发颜色 | + +message 选举信息表 + +| 字段名称 | 数据类型 | 是否主外键 | 说明要求 | +| -------- | ----------- | ---------- | ----------------- | +| mynumber | int | | 编号 | +| myname | varchar(10) | 外键 | 姓名 | +| mypost | varchar(10) | | 当前职务 | +| myparay | int | | 入党时间 not null | +| myvote | int | | 支持票数 | + +添加内容 + +表1 + +| 姓名 | 年龄 | 性别 | 地址 | 身高 | 毛发颜色 | +| ---------- | ---- | ---- | -------- | ---- | -------- | +| 孤独小青蛙 | 80 | 男 | 长汀古城 | 191 | 绿色 | +| 腼腆紫金矿 | 41 | 男 | 上杭古城 | 183 | 红色 | +| 开心地瓜干 | 32 | 男 | 连城古城 | 175 | 绿色 | +| 悲伤簸箕粄 | 18 | 男 | 武平古城 | 188 | 红色 | +| 云南大理石 | 20 | 女 | 大理古城 | 200 | 黑色 | + +表2 + +| 编号 | 姓名 | 当前职务 | 入党时间 | 支持票数 | +| ---- | ---------- | -------- | -------- | -------- | +| 1 | 孤独小青蛙 | 开国元老 | 1956 | 200000 | +| 2 | 腼腆紫金矿 | 村支书 | 1999 | 15000 | +| 3 | 开心地瓜干 | 连城法师 | 2003 | 45000 | +| 4 | 悲伤簸箕粄 | 市长 | 2016 | 62000 | +| 5 | 云南大理石 | 书记 | 2016 | 66666 | + +根据上面的表,创建表 +1.查询candidate表中的姓名,年龄,地址,并以中文的字段名显示 +2.在candidate表中,将身高修改到地址的前面 +3.在candidate表和message中,将所有的字段名去掉前面的my +4将message表中名字为云南大理石的入党时间修改为2015 +5.在candidate表中,添加一条记录(无知小蜜蜂,66,女,北京四合院,230,白色) +6.在candidate表中,删除第三条的记录 +7将两个表名分别改为cand,mess +8.在mess表中的入党时间降序和支持票数号升序来显示所有候选人的信息 +9.因为候选国家主席,为严肃重要事件,所有候选人不得染发,将非黑色发色的头发改为黑色 +10.查询党龄大于10年的候选人所有信息 +11.查询所有年龄大于30的候选人 +12.查询身高低于180的候选人 +13.查询名字带孤独的候选人 +14.查询开国元老的住址 +15.查询两表的name,age,sex,address,height,color,post,paray,vote并添加中文别名(禁止使用*) +16.查询腼腆紫金矿的职务 +17.将paray的数据类型改为year +18.查询全部候选人的平均年龄 +19.查询候选人支持票数大于50000,并党龄大于10年的所有信息 +20.查询姓名,地址,当前职务。 +21.查询第三、第四个候选人的所有信息 + +# 答案 + +```mysql +CREATE DATABASE exercise charset utf8; +USE exercise; + +-- candidate 候选人信息表 +CREATE TABLE candidate ( + myname VARCHAR ( 10 ) PRIMARY KEY, + myage INT, + mysex CHAR, + myaddress VARCHAR ( 10 ), + myheight INT, + mycolor VARCHAR ( 10 ) +); + +-- message 选举信息表 +CREATE TABLE message + ( mynumber INT, + myname VARCHAR ( 10 ), + foreign key(myname) references candidate(myname) + mypost VARCHAR ( 10 ), + myparay INT, myvote INT ); + +INSERT INTO candidate +VALUES + ( '孤独小青蛙', 80, '男', '长汀古城', 191, '绿色' ), + ( '腼腆紫金矿', 41, '男', '上杭古城', 183, '红色' ), + ( '开心地瓜干', 32, '男', '连城古城', 175, '绿色' ), + ( '悲伤簸箕粄', 18, '男', '武平古城', 188, '红色' ), + ( '云南大理石', 20, '女', '大理古城', 200, '黑色' ); + +INSERT INTO message +VALUES + ( 1, '孤独小青蛙', '开国元老', 1956, 200000 ), + ( 2, '腼腆紫金矿', '村支书', 1999, 15000 ), + ( 3, '开心地瓜干', '连城法师', 2003, 45000 ), + ( 4, '悲伤簸箕粄', '市长', 2016, 62000 ), + ( 5, '云南大理石', '书记', 2016, 66666 ); + +-- 根据上面的表,创建表 +-- 1.查询candidate表中的姓名,年龄,地址,并以中文的字段名显示 +SELECT + myname 姓名, + myage 年龄, + myaddress 地址 +FROM + candidate; + +-- 2.在candidate表中,将身高修改到地址的前面 +ALTER TABLE candidate MODIFY myheight INT AFTER myaddress; + +-- 3.在candidate表和message中,将所有的字段名去掉前面的my +ALTER TABLE candidate CHANGE myname NAME VARCHAR ( 10 ); +ALTER TABLE candidate CHANGE myage age INT; +ALTER TABLE candidate CHANGE mysex sex CHAR; +ALTER TABLE candidate CHANGE myaddress address VARCHAR ( 10 ); +ALTER TABLE candidate CHANGE myheight height INT; +ALTER TABLE candidate CHANGE mycolor color VARCHAR ( 10 ); +ALTER TABLE message CHANGE mynumber number INT; +ALTER TABLE message CHANGE myname NAME VARCHAR ( 10 ); +ALTER TABLE message CHANGE mypost post VARCHAR ( 10 ); +ALTER TABLE message CHANGE myparay paray INT; +ALTER TABLE message CHANGE myvote vote INT; + +-- 4将message表中名字为云南大理石的入党时间修改为2015 +UPDATE message +SET paray = 2015 +WHERE + NAME = '云南大理石'; + +-- 5.在candidate表中,添加一条记录(无知小蜜蜂,66,女,北京四合院,230,白色) +INSERT INTO candidate +VALUES + ( '无知小蜜蜂', 66, '女', '北京四合院', 230, '白色' ); + +-- 6.在candidate表中,删除第5题的记录 +DELETE +FROM + candidate +WHERE + NAME = '无知小蜜蜂'; + +-- 7将两个表名分别改为cand,mess +ALTER TABLE candidate RENAME TO cand; +ALTER TABLE message RENAME TO mess; + +-- 8.mess表中的入党时间降序和支持票数号升序来显示所有候选人的信息 +SELECT + * +FROM + mess +ORDER BY + paray DESC, + vote ASC; + +-- 9.因为候选国家主席,为严肃重要事件,所有候选人不得染发,将非黑色发色的头发改为黑色 +UPDATE cand +SET color = '黑色' +WHERE color != '黑色'; + +-- 10.查询党龄大于10年的候选人的所有信息 +select * from cand left join mess on cand.name=mess.name where paray >any (select 2023-paray from mess) and 2023-paray>10; + + -- 11.查询所有年龄大于30的候选人 +SELECT NAME FROM cand WHERE age > 30; + +-- 12.查询身高低于180的候选人 +select name from cand where height < 180; + +-- 13.查询名字带孤独的候选人 +SELECT NAME FROM cand WHERE NAME LIKE '%孤独%'; + +-- 14.查询开国元老的住址 +select cand.address from mess left join cand on mess.name=cand.name where post='开国元老'; + +-- 15.查询两表的name,age,sex,address,height,color,post,paray,vote并添加别名(禁止使用*) +SELECT +cand.NAME + 姓名, + age 年龄, + address 地址, + height 身高, + color 颜色, + post 当前职务, + paray 入党时间, + vote 支持票数 +FROM + cand + LEFT JOIN mess ON cand.NAME = mess.NAME union + SELECT cand.NAME + 姓名, + age 年龄, + address 地址, + height 身高, + color 颜色, + post 当前职务, + paray 入党时间, + vote 支持票数 +FROM + cand + RIGHT JOIN mess ON cand.NAME = mess.NAME; + +-- 16.查询腼腆紫金矿的职务 +select post from mess where name ='腼腆紫金矿'; + +-- 17.将myparay的数据类型改为year +alter table mess modify paray year; + +-- 18.查询全部候选人的平均年龄 +select avg(age) from cand; + +-- 19.查询候选人支持票数大于50000,并党龄大于10年的所有信息 + select * from cand left join mess on cand.name=mess.name where paray >any (select 2023-paray from mess) and 2023-paray>10 and vote >50000; + +-- 20.查询姓名,地址,当前职务。 +select age,address,paray from cand left join mess on cand.name=mess.name; + +-- 21.查询第三、第四个候选人的所有信息 +select * from cand left join mess on cand.name = mess.name limit 2,2; +``` + diff --git "a/29 \350\267\257\347\216\262/20230316 \345\260\217\347\273\204\344\272\244\346\215\242\344\275\234\344\270\232.md" "b/29 \350\267\257\347\216\262/20230316 \345\260\217\347\273\204\344\272\244\346\215\242\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..384dcce1e7e626921a594ab2c3a897ba6811b029 --- /dev/null +++ "b/29 \350\267\257\347\216\262/20230316 \345\260\217\347\273\204\344\272\244\346\215\242\344\275\234\344\270\232.md" @@ -0,0 +1,98 @@ +### 题目 + +| 用户表(user) | | | | | | +| --------------- | --------- | ----------- | ------------ | ------ | ----- | +| user_id | user_name | user_tel | ordertime | | | +| 1 | 张三 | 19865645691 | 2023-3-13 | | | +| 2 | 李四 | 12345675691 | 2023-3-13 | | | +| 3 | 王五 | 12895678901 | 2023-3-13 | | | +| 4 | 老六 | 12345678691 | 2023-3-14 | | | +| 5 | 小七 | 18945678031 | | | | +| 6 | 老八 | 19345678561 | 2023-3-16 | | | +| 7 | 朱九 | 15845679911 | | | | +| 订单表(order) | | | | | | +| order_id | user_id | type | food | number | price | +| 1 | 1 | 快餐 | 肯德基全家桶 | 1 | 50 | +| 2 | 1 | 快餐 | 可乐 | 4 | 20 | +| 3 | 6 | 饮料 | 柠檬水 | 2 | 16 | +| 4 | 2 | 米饭 | 鱼香肉丝盖饭 | 5 | 60 | +| 5 | 2 | 饮料 | 珍珠奶茶 | 3 | 22 | +| 6 | 3 | 粉面类 | 螺蛳粉 | 4 | 28 | +| 7 | 4 | 粉面类 | 凉拌面 | 1 | 10 | + +### 作业 + +```mysql +create database work8 charset utf8; +use work8; +-- 用户表 +CREATE table user( +user_id int , +user_name char(2), +user_tel bigint, +oedertime date +); +-- 订单表 +create table `order`( +order_id int, +user_id int, +type varchar(10), +food varchar(10), +number int, +price int +); + +-- 插入内容 +-- 用户表 +insert into user values +(1,'张三','19865645691','2023-3-13'), +(2,'李四','12345675691','2023-3-13'), +(3,'王五','12895678901','2023-3-13'), +(4,'老六','12345678691','2023-3-14'), +(5,'小七','18945678031',null), +(6,'老八','19345678561','2023-3-16'), +(7,'朱九','15845679911',null); + +-- 订单表 +insert into `order` VALUES +(1,1,'快餐','肯德基全家桶',1,50), +(2,1,'快餐','可乐',4,20), +(3,6,'饮料','柠檬水',2,16), +(4,2,'米饭','鱼香肉丝盖饭',5,60), +(5,2,'饮料','珍珠奶茶',3,22), +(6,3,'粉面类','螺蛳粉',4,28), +(7,4,'粉面类','凉拌面',1,10); + +-- 根据上表所给信息完成下列题目: +-- +-- 1.在用户表(user)新增一个性别字段user_sex,数据类型为char。 +alter table user add user_sex char; + +-- 2.由于顾客3退单,请把此订单删除。 +delete from `order` where user_id =3; + +-- 3.老八的电话号码换新了,请将他的号码更新为8888888888。 +update user set user_tel = 8888888888 where user_name='老八'; + +-- 4.查询order表里的最高金额和总金额。 +select max(price),sum(price) from `order`; +-- +-- 5.查询每个顾客分别订购了几个类别。 +select user_id,type,count(user_id) from `order` group by user_id; + +-- 6.查询饮料的总金额 +select sum(price) from `order` where type ='饮料'; + +-- 7.查询订单表(order)里的订单号,类别(type),食物(food). +select order_id,type,food from `order`; + +-- 8.查询没吃饭的人的所有信息 +select user_id,count(user_id) from `order`group by user_id; + +-- 9.查询姓老的人的全部信息及订单信息 +select * from user left join `order` on user.uesr_id=`order`.user_id where user.user_name like '老%'; + +-- 10.查询总金额大于20的订单里最大值的用户信息,使用降序排列。 +select * from `order` where price > 20 order by price desc; +``` +