diff --git "a/34 \346\235\216\344\275\263\351\271\217/20230221 \344\275\234\344\270\232\347\255\224\346\241\210.md" "b/34 \346\235\216\344\275\263\351\271\217/20230221 \344\275\234\344\270\232\347\255\224\346\241\210.md" new file mode 100644 index 0000000000000000000000000000000000000000..5383ffb70785361c35c02cb75394f03a012076ad --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/20230221 \344\275\234\344\270\232\347\255\224\346\241\210.md" @@ -0,0 +1,305 @@ + + +## 第1题 + +1、创建数据库test01_company + +2、创建表格offices + +| 字段名 | 数据类型 | +| ---------- | ----------- | +| officeCode | int | +| city | varchar(30) | +| address | varchar(50) | +| country | varchar(50) | +| postalCode | varchar(25) | + +3、创建表格employees + +| 字段名 | 数据类型 | +| ------------- | ---------------------------- | +| empNum | int(11) | +| lastName | varchar(50) | +| firstName | varchar(50) | +| mobile | varchar(25) | +| code | int | +| jobTitle | varchar(50) | +| birth | date | +| Note | varchar(255) | +| Sex | varchar(5) | + +**要求4:**将表employees的mobile字段修改到code字段后面。 + +**要求5:**将表employees的birth字段改名为birthday; + +**要求6:**修改sex字段,数据类型为char(1)。 + +**要求7:**删除字段note; + +**要求8:**增加字段名favoriate_activity,数据类型为varchar(100); + +**要求9:**将表employees的名称修改为 employees_info + +```mysql +CREATE TABLE offices( +officeCode int, +city varchar(30), +address varchar(50), +country varchar(50), +postalCode varchar(25) +); + +CREATE TABLE employees( +empNum int, +lastName varchar(50), +firstName VARCHAR(50), +mobile varchar(25), +code int, +jobTitle varchar(50), +birth date, +Note varchar(255), +Sex varchar(5) +); + +alter table employees modify COLUMN mobile VARCHAR(25) AFTER code; + +alter table employees CHANGE birth birthday date; + +alter table employees modify sex char(1); + +alter table employees drop note; + +alter table employees add favoriate_activity VARCHAR(100); + +rename table employees to employees_info; + +desc employees_info; +``` + + + +## 第2题 + +1、创建数据库test02db + +2、创建表格pet + +| 字段名 | 字段说明 | 数据类型 | +| ------- | -------- | ----------- | +| name | 宠物名称 | varchar(20) | +| owner | 宠物主人 | varchar(20) | +| species | 种类 | varchar(20) | +| sex | 性别 | char(1) | +| birth | 出生日期 | year | +| death | 死亡日期 | year | + +3、添加记录 + +| name | owner | species | sex | birth | death | +| ------ | ------ | ------- | ---- | ----- | ----- | +| Fluffy | harold | Cat | f | 2003 | 2010 | +| Claws | gwen | Cat | m | 2004 | | +| Buffy | | Dog | f | 2009 | | +| Fang | benny | Dog | m | 2000 | | +| bowser | diane | Dog | m | 2003 | 2009 | +| Chirpy | | Bird | f | 2008 | | + +4、 添加字段主人的生日owner_birth。 + +5、 将名称为Claws的猫的主人改为kevin + +6、 将没有死的狗的主人改为duck + +7、 查询没有主人的宠物的名字; + +8、 查询已经死了的cat的姓名,主人,以及去世时间; + +9、 删除已经死亡的狗 + +10、查询所有宠物信息 + +```sql + +CREATE TABLE pet( +name varchar(20), +owner VARCHAR(20), +species VARCHAR(20), +sex char(1), +birth year, +death year +); + +INSERT into pet VALUES('Fluffy','harold','Cat','f',2003,2010),('Claws','gwen','Cat','m',2004,NULL),('Buffy',NULL,'Dog','f',2009,NULL),('Fang','benny','Dog','m',2000,NULL),('bowser','diane','Dog','m',2003,2009),('Chirpy',NULL,'Bird','f',2008,NULL); + +alter table pet add owner_birth date; + +update pet set owner='Kevin' where name='Claws'; + +update pet set owner='duck' where death is NULL and species='dog'; + +select name,owner FROM pet where owner=' '; + +select name,owner,death from pet where death is not null and species='cat'; + +delete from pet where death is not null and species='dog'; + +select name,owner,species,sex,birth,death from pet; +``` + +## 第3题 + +1、创建数据库:test03_company + +2、在此数据库下创建如下3表,数据类型,宽度,是否为空根据实际情况自己定义。 + +A. 部门表(department):部门编号(depid),部门名称(depname),部门简介(deinfo);其中部门编号为主键。 + +B. 雇员表(employee):雇员编号(empid),姓名(name),性别(sex),职称(title),出生日期(birthday),所在部门编号(depid);其中 + +* ​ 雇员编号为主键; +* ​ 部门编号为外键,外键约束等级为(on update cascade 和on delete set null); +* ​ 性别默认为男; + +C. 工资表(salary):雇员编号(empid),基本工资(basesalary),职务工资(titlesalary),扣除(deduction)。其中雇员编号为主键。 + +3、给工资表(salary)的雇员编号(empid)增加外键约束,外键约束等级为(on update cascade 和on delete cascade) + +4、添加数据如下: + +部门表: + +| 部门编号 | 部门名称 | 部门简介 | +| -------- | -------- | ------------ | +| 111 | 生产部 | Null | +| 222 | 销售部 | Null | +| 333 | 人事部 | 人力资源管理 | + + 雇员表: + +| 雇员编号 | 姓名 | 性别 | 职称 | 出生日期 | 所在部门编号 | +| -------- | ---- | ---- | ---------- | ---------- | ------------ | +| 1001 | 张三 | 男 | 高级工程师 | 1975-1-1 | 111 | +| 1002 | 李四 | 女 | 助工 | 1985-1-1 | 111 | +| 1003 | 王五 | 男 | 工程师 | 1978-11-11 | 222 | +| 1004 | 张六 | 男 | 工程师 | 1999-1-1 | 222 | + + 工资表: + +| 雇员编号 | 基本工资 | 职务工资 | 扣除 | +| -------- | -------- | -------- | ---- | +| 1001 | 2200 | 1100 | 200 | +| 1002 | 1200 | 200 | NULL | +| 1003 | 2900 | 700 | 200 | +| 1004 | 1950 | 700 | 150 | + + + +```mysql +CREATE TABLE department( +depid int PRIMARY KEY, +depname VARCHAR(20), +deinfo VARCHAR(50) +); + +CREATE TABLE employee( +empid int PRIMARY KEY, +name VARCHAR(20), +sex char DEFAULT '男', +title VARCHAR(20), +birthday date, +depid int, +FOREIGN KEY(depid) REFERENCES department(depid) on UPDATE CASCADE on DELETE SET null +); + +CREATE TABLE salary( +empid int PRIMARY KEY, +basesalary double, +titlesalary double, +deduction double +); + +alter table salary add FOREIGN KEY(empid) REFERENCES employee(empid) on UPDATE CASCADE on DELETE CASCADE; + +INSERT into department VALUES(111,'生产部',NULL),(222,'销售部',NULL),(333,'人事部','人力资源管理'); + +INSERT INTO employee VALUES(1001,'张三','男','高级工程师','1975-1-1',111),(1002,'李四','女','助工','1985-1-1',111),(1003,'王五','男','工程师','1978-11-11',222),(1004,'张六','男','工程师','1991-1-1',222); + +INSERT INTO salary VALUES(1001,2200,1100,200),(1002,1200,200,NULL),(1003,2900,700,200),(1004,1950,700,150); +``` + + + +## 第4题 + +1、创建一个数据库:test04_school + +2、创建如下表格 + +表1 Department表的定义 + +| **字段名** | **字段描述** | **数据类型** | **主键** | **外键** | **非空** | **唯一** | +| ---------- | ------------ | ------------ | -------- | -------- | -------- | -------- | +| DepNo | 部门号 | int(10) | 是 | 否 | 是 | 是 | +| DepName | 部门名称 | varchar(20) | 否 | 否 | 是 | 否 | +| DepNote | 部门备注 | Varchar(50) | 否 | 否 | 否 | 否 | + +表2 Teacher表的定义 + +| **字段名** | **字段描述** | **数据类型** | **主键** | **外键** | **非空** | **唯一** | +| ---------- | ------------ | ------------ | -------- | -------- | -------- | -------- | +| Number | 教工号 | int | 是 | 否 | 是 | 是 | +| Name | 姓名 | varchar(30) | 否 | 否 | 是 | 否 | +| Sex | 性别 | varchar(4) | 否 | 否 | 否 | 否 | +| Birth | 出生日期 | date | 否 | 否 | 否 | 否 | +| DepNo | 部门号 | int | 否 | 是 | 否 | 否 | +| Salary | 工资 | float | 否 | 否 | 否 | 否 | +| Address | 家庭住址 | varchar(100) | 否 | 否 | 否 | 否 | + +3、添加记录 + +| **DepNo** | **DepName** | **DepNote** | +| --------- | ----------- | ------------------ | +| 601 | 软件技术系 | 软件技术等专业 | +| 602 | 网络技术系 | 多媒体技术等专业 | +| 603 | 艺术设计系 | 广告艺术设计等专业 | +| 604 | 管理工程系 | 连锁经营管理等专业 | + +| **Number** | **Name** | **Sex** | **Birth** | **DepNo** | **Salary** | **Address** | +| ---------- | -------- | ------- | ---------- | --------- | ---------- | ------------ | +| 2001 | Tom | 女 | 1970-01-10 | 602 | 4500 | 四川省绵阳市 | +| 2002 | Lucy | 男 | 1983-12-18 | 601 | 2500 | 北京市昌平区 | +| 2003 | Mike | 男 | 1990-06-01 | 604 | 1500 | 重庆市渝中区 | +| 2004 | James | 女 | 1980-10-20 | 602 | 3500 | 四川省成都市 | +| 2005 | Jack | 男 | 1975-05-30 | 603 | 1200 | 重庆市南岸区 | + +4、用SELECT语句查询Teacher表的所有记录。 + +```mysql +CREATE TABLE Department( +DepNo int(10) PRIMARY KEY, +DepNmae VARCHAR(20) not null, +DepNote VARCHAR(50) +); + +CREATE TABLE Teacher( +Number int PRIMARY KEY, +Name VARCHAR(30) UNIQUE, +Sex VARCHAR(4), +Birth date, +DepNo int, +Salary FLOAT, +Address VARCHAR(100), +FOREIGN key(DepNo) REFERENCES Department(DepNo) +); + +INSERT INTO Department VALUES(601,'软件技术系','软件技术等专业'),(602,'网络技术系','多媒体技术等专业'),(603,'艺术设计系','广告艺术设计等专业'),(604,'管理工程系','连锁经营管理等专业'); + +INSERT INTO Teacher VALUES(2001,'Tom','女','1970-01-10',602,4500,'四川省绵阳市'),(2002,'Lucy','男','1983-12-18',601,2500,'北京市昌平区'),(2003,'Mike','男','1990-06-01',604,1500,'重庆市渝中区'),(2004,'James','女','1980-10-20',602,3500,'四川省成都市'),(2005,'Jack','男','1975-05-30',603,1200,'重庆市南岸区'); + +SELECT * FROM Teacher; +``` + + + + + diff --git "a/34 \346\235\216\344\275\263\351\271\217/20230228\351\242\230\347\233\256\345\217\212\344\275\234\344\270\232.md" "b/34 \346\235\216\344\275\263\351\271\217/20230228\351\242\230\347\233\256\345\217\212\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..e3b9abd84c6edd3fa347fd285e7cee6a0d3d80fa --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/20230228\351\242\230\347\233\256\345\217\212\344\275\234\344\270\232.md" @@ -0,0 +1,257 @@ +\1. 设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。 + +\2. **数据库的表结构** + +表(一)Student (学生表) + +| 属性名 | 数据类型 | 可否为空 | 含义 | +| --------- | ------------ | -------- | ------------ | +| Sno | varchar (20) | 否 | 学号(主码) | +| Sname | varchar (20) | 否 | 学生姓名 | +| Ssex | varchar (20) | 否 | 学生性别 | +| Sbirthday | datetime | 可 | 学生出生年月 | +| Class | varchar (20) | 可 | 学生所在班级 | + +表(二)Course(课程表) + +| 属性名 | 数据类型 | 可否为空 | 含义 | +| ------ | ------------ | -------- | ---------------- | +| Cno | varchar (20) | 否 | 课程号(主码) | +| Cname | varchar (20) | 否 | 课程名称 | +| Tno | varchar (20) | 否 | 教工编号(外码) | + +表(三)Score(成绩表) + +| 属性名 | 数据类型 | 可否为空 | 含义 | +| -------------- | ------------ | -------- | -------------- | +| Sno | varchar (20) | 否 | 学号(外码) | +| Cno | varchar (20) | 否 | 课程号(外码) | +| Degree | Decimal(4,1) | 可 | 成绩 | +| 主码:Sno+ Cno | | | | + +表(四)Teacher(教师表) + +| 属性名 | 数据类型 | 可否为空 | 含义 | +| --------- | ------------ | -------- | ---------------- | +| Tno | varchar (20) | 否 | 教工编号(主码) | +| Tname | varchar (20) | 否 | 教工姓名 | +| Tsex | varchar (20) | 否 | 教工性别 | +| Tbirthday | datetime | 可 | 教工出生年月 | +| Prof | varchar (20) | 可 | 职称 | +| Depart | varchar (20) | 否 | 教工所在部门 | + +\3. **数据库中的数据**: + +-- 1,查询所有学生,都学了哪些课程,要显示学生信息和课程信息/ + +-- 2,查询没有学生的教师的所有信息 + + + + + +表(一)Student + +| Sno | Sname | Ssex | Sbirthday | class | +| ---- | ----- | ---- | --------- | ----- | +| 108 | 曾华 | 男 | 1977-9-1 | 95033 | +| 105 | 匡明 | 男 | 1975-10-2 | 95031 | +| 107 | 王丽 | 女 | 1976-1-23 | 95033 | +| 101 | 李军 | 男 | 1976-2-20 | 95033 | +| 109 | 王芳 | 女 | 1975-2-10 | 95031 | +| 103 | 陆君 | 男 | 1974-6-3 | 95031 | + +表(二)Course + +| Cno | Cname | Tno | +| ----- | ---------- | ---- | +| 3-105 | 计算机导论 | 825 | +| 3-245 | 操作系统 | 804 | +| 6-166 | 数字电路 | 856 | +| 9-888 | 高等数学 | 831 | + +表(三)Score + +| Sno | Cno | Degree | +| ---- | ----- | ------ | +| 103 | 3-245 | 86 | +| 105 | 3-245 | 75 | +| 109 | 3-245 | 68 | +| 103 | 3-105 | 92 | +| 105 | 3-105 | 88 | +| 109 | 3-105 | 76 | +| 101 | 3-105 | 64 | +| 107 | 3-105 | 91 | +| 108 | 3-105 | 78 | +| 101 | 6-166 | 85 | +| 107 | 6-166 | 79 | +| 108 | 6-166 | 81 | + +表(四)Teacher + +| Tno | Tname | Tsex | Tbirthday | Prof | Depart | +| ---- | ----- | ---- | --------- | ------ | ---------- | +| 804 | 李诚 | 男 | 1958-12-2 | 副教授 | 计算机系 | +| 856 | 张旭 | 男 | 1969-3-12 | 讲师 | 电子工程系 | +| 825 | 王萍 | 女 | 1972-5-5 | 助教 | 计算机系 | +| 831 | 刘冰 | 女 | 1977-8-14 | 助教 | 电子工程系 | + +\4. 查询 + +① 查询Score表中的最高分的学生学号和课程号。 + +② 查询所有学生的Sname、Cno和Degree列。 + +③ 查询所有学生的Sno、Cname和Degree列。 + +④ 查询所有学生的Sname、Cname和Degree列。 + +⑤ 查询“95033”班学生的平均分。 + +⑥ 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 + +⑦ 查询score中选学多门课程的同学中分数为非最高分成绩的记录。 + +⑧ 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 + +⑨ 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 + +⑩ 查询“张旭“教师任课的学生成绩。 + +11 查询选修某课程的同学人数多于5人的教师姓名。 + +12 查询出“计算机系“教师所教课程的成绩表。 + +13 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 + +14 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 + +15 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. + +16 查询成绩比该课程平均成绩低的同学的成绩表。 + +17 查询所有任课教师的Tname和Depart. + +18 查询所有未讲课的教师的Tname和Depart. + +19 查询“男”教师及其所上的课程。 + +20 查询最高分同学的Sno、Cno和Degree列。 + +21 查询和“李军”同性别的所有同学的Sname. + +22 查询和“李军”同性别并同班的同学Sname. + +23 查询所有选修“计算机导论”课程的“男”同学的成绩表。 + + + + + + + +# 答案 + +``` +CREATE TABLE Student( +Sno varchar (20) not null, +Sname varchar (20) not null, +Ssex varchar (20) not null, +Sbirthday datetime, +Class varchar (20) +); +CREATE TABLE Course( +Cno varchar (20) not null, +Cname varchar (20) not null, +Tno varchar (20) not null +); +CREATE TABLE Score( +Sno varchar (20) not null, +Cno varchar (20) not null, +Degree Decimal(4,1) +); +CREATE TABLE Teacher( +Tno varchar (20) not null, +Tname varchar (20) not null, +Tsex varchar (20) not null, +Tbirthday datetime, +Prof varchar (20), +Depart varchar (20) not null +); + +INSERT INTO Student VALUES +(108,'曾华','男','1977-9-1','95033'), +(105,'匡明','男','1975-10-2','95031'), +(107,'王丽','女','1976-1-23','95033'), +(101,'李军','男','1976-2-20','95033'), +(109,'王芳','女','1975-2-10','95031'), +(103,'陆君','男','1974-6-3','95031'); +INSERT INTO Course VALUES +('3-105','计算机导论','825'), +('3-245','操作系统','804'), +('6-166','数字电路','856'), +('9-888','高等数学','831'); +INSERT INTO Score VALUES +(103,'3-245','86'), +(105,'3-245','75'), +(109,'3-245','68'), +(103,'3-105','92'), +(105,'3-105','88'), +(109,'3-105','76'), +(101,'3-105','64'), +(107,'3-105','91'), +(108,'3-105','78'), +(101,'6-166','85'), +(107,'6-166','79'), +(108,'6-166','81'); +INSERT INTO Teacher VALUES +(804,'李诚','男','1958-12-2','副教授','计算机系'), +(856,'张旭','男','1969-3-12','讲师','电子工程系'), +(825,'王萍','女','1972-5-5','助教','计算机系'), +(831,'刘冰','女','1977-8-14','助教','电子工程系'); + +SELECT Student.*,Course.* FROM Student INNER JOIN Score on Student.Sno=Score.Sno LEFT JOIN Course on Score.Cno=Course.Cno; + +SELECT Teacher.* FROM Teacher LEFT JOIN Course on Teacher.Tno=Course.Tno LEFT JOIN Score on Course.Cno=Score.Cno LEFT JOIN Student on Student.Sno=Score.Sno WHERE Score.Sno is null; + +SELECT Sno,Cno FROM Score where Degree=(SELECT MAX(Degree)from Score); + +SELECT Sname,Cno,Degree from student JOIN Score on student.Sno = Score.Sno; + +SELECT Sno,Cname,Degree FROM score join Course on Course.Cno=Score.Cno; + +SELECT Sname,Cname,Degree from student JOIN Score on student.Sno=Score.Sno JOIN course on Course.Cno=Score.Cno; + +select AVG(Degree) from Score where Sno in (select Sno from student where Class='95033'); + +select * from student,Score where Score.Cno='3-105' and student.Sno=Score.Sno and Score.Degree>(select Degree from Score where Cno='3-105' and Sno='109'); + +select * from Score a where Degree <(select MAX(degree) from Score b where a.Cno=b.Cno) and Sno in(select Sno from Score group by Sno having count(*)>1); + +select * from student,Score where student.Sno=Score.Sno and Score.Degree>(select Degree from Score where Cno='3-105' and Sno='109'); + +select Sno,Sname,Sbirthday from student where year(student.Sbirthday)=(select year(Sbirthday) from student where Sno='108'); + +select Degree from Score,Teacher,Course where Teacher.Tname='张旭' and Teacher.Tno=Course.Tno and Course.Cno=Score.Cno; + +select Tname from Teacher where Tno in (select Tno from Course where Cno in (select Cno from Score group by Cno having COUNT(*)>5)); + +select sno,Cno ,Degree from Score where Cno in (select Cno from Course where Tno in (select tno from Teacher where Depart='计算机系')); + +select Tname,Prof from Teacher a where Prof not in(select Prof from Teacher b where a.Depart!=b.Depart); + +select Cno,Sno,Degree from Score a where (select Degree from Score b where Cno='3-105' and b.Sno=a.Sno)>=(select Degree from Score c where Cno='3-245' and c.Sno=a.Sno) order by Degree desc; + +select Sno,Cno,Degree from Score a where a.Degree<(select AVG(Degree) from Score b where a.Cno=b.Cno); + +select Tname,Depart from Teacher where tno in (select tno from course where Cno in (select distinct Cno from Score)); + +select Tname,Depart from Teacher where Tname not in (select distinct Tname from Teacher,Course,Score where Teacher.Tno=Course.Tno and Course.Cno=Score.Cno); + +select Sname from student where Ssex=(select Ssex from student where Sname='李军') and Sname not in ('李军'); + +select Sname from student where Ssex=(select Ssex from student where Sname='李军') and Sname not in ('李军') and Class=(select Class from student where Sname='李军'); + +select Sno,Degree from Score where Sno in (select Sno from student where Ssex='男') and Cno in (select Cno from Course where Cname='计算机导论'); +``` + diff --git "a/34 \346\235\216\344\275\263\351\271\217/20230307\351\242\230\347\233\256\347\255\224\346\241\210(1).md" "b/34 \346\235\216\344\275\263\351\271\217/20230307\351\242\230\347\233\256\347\255\224\346\241\210(1).md" new file mode 100644 index 0000000000000000000000000000000000000000..ea6c8af0aa983d6a68f56a00cc07c3c42a9fb9c7 --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/20230307\351\242\230\347\233\256\347\255\224\346\241\210(1).md" @@ -0,0 +1,79 @@ +```mysql +use abc; +CREATE TABLE stuinfo( +stuNo VARCHAR(10), +stuName VARCHAR(10), +stuSex enum('男','女'), +stuAge int, +stuAddress VARCHAR(10), +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','梅超风','男',16,'湖北武汉',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.查询出年龄比班上平均年龄大的学生的信息 +SELECT * FROM stuinfo where stuAge>(SELECT AVG(stuAge) FROM stuinfo); +-- 2.查询出每个学生的学号,姓名,性别和选修课程的最高分(stuMarks) +SELECT stuNo 学号,stuName 姓名,stuSex 性别,max(score) 选修课程的最高分 FROM stuinfo LEFT JOIN stumarks ON stuinfo.stuNo=stumarks.stuID GROUP BY stuNo; +-- 3.查询出每个学生的学号,姓名,性别和考试平均分(stuExam) +SELECT stuinfo.stuNo 学号,stuName 姓名,stuSex 性别,(writtenExam+labExam)/2 考试平均分 FROM stuinfo LEFT JOIN stuexam on stuinfo.stuNo=stuexam.stuNo; +-- 4.查询性别是男并且年龄大于等于20的学生的信息(用两种方法实现:普通查询和子查询) +SELECT * FROM stuinfo WHERE stuSex='男' and stuAge>=20; +SELECT * FROM (SELECT * FROM stuinfo WHERE stuSex='男' and stuAge>=20) as ccc; +-- 5.查询出年龄比所有男生年龄都大的女生的信息 +SELECT * FROM stuinfo WHERE stuSex='女' and stuAge>(SELECT max(stuAge) FROM stuinfo WHERE stuSex='男'); +-- 6.查询出所有选修课程都及格的学生的信息 (stuMarks) +SELECT * FROM stuinfo LEFT JOIN stumarks on stuinfo.stuNo=stumarks.stuID WHERE stuID not in(SELECT stuID FROM stuinfo LEFT JOIN stumarks on stuinfo.stuNo=stumarks.stuID WHERE score<60); +-- 7.查询出参加考试的学生的信息(用表连接,in二种方法做)(stuMarks) +SELECT * FROM stuinfo LEFT JOIN stumarks on stuinfo.stuNo=stumarks.stuID WHERE score is not NULL GROUP BY stuNo; +SELECT * FROM stuinfo WHERE stuNo in(SELECT stuNo FROM stuinfo LEFT JOIN stumarks on stuinfo.stuNo=stumarks.stuID WHERE score is not NULL GROUP BY stuNo); +-- 8.查询出没有参加考试的学生的信息(用表连接,in二种方法做)(stuMarks) +SELECT * FROM stuinfo LEFT JOIN stumarks on stuinfo.stuNo=stumarks.stuID WHERE score is null ; +SELECT * FROM stuinfo WHERE stuNo not in(SELECT stuNo FROM stuinfo LEFT JOIN stumarks on stuinfo.stuNo=stumarks.stuID WHERE score is not NULL GROUP BY stuNo); +-- 9.将有一门成绩成绩大于90分的学生的基本信息查询出来(stuMarks) +SELECT * FROM stuinfo LEFT JOIN stumarks on stuinfo.stuNo=stumarks.stuID WHERE score>90; +-- 10.查询出平均成绩在80分以上的学生的基本信息(stuMarks) +SELECT * FROM stuinfo LEFT JOIN stuexam on stuinfo.stuNo=stuexam.stuNo WHERE (writtenExam+labExam)/2>80; +-- 11.查询出某同学所有考试成绩比“张秋利”同学所有分数都高的学生基本信息(stuMarks) +SELECT * FROM stuinfo LEFT JOIN stumarks on stuinfo.stuNo=stumarks.stuID WHERE score>(SELECT MAX(score) FROM stumarks RIGHT JOIN stuinfo ON stuinfo.stuNo=stumarks.stuID WHERE stuName='张秋利'); +-- 12.查询出某同学所有考试成绩只需要比“张秋利”同学某个分数高的学生基本信息(stuMarks) +SELECT * FROM stuinfo LEFT JOIN stumarks on stuinfo.stuNo=stumarks.stuID WHERE score>any(SELECT score FROM stumarks RIGHT JOIN stuinfo ON stuinfo.stuNo=stumarks.stuID WHERE stuName='张秋利') and stuName!='张秋利'; +-- 13.查询班上比所有男生年龄都要大的女生的信息 +SELECT * FROM stuinfo WHERE stuSex='女' and stuAge>(SELECT max(stuAge) FROM stuinfo WHERE stuSex='男'); +-- 14.查询出只要比某个男生年龄大的女生的信息 +SELECT * FROM stuinfo WHERE stuSex='女' and stuAge>any(SELECT stuAge FROM stuinfo WHERE stuSex='男'); +``` + diff --git "a/34 \346\235\216\344\275\263\351\271\217/20230310 \345\244\247\344\275\234\344\270\232\347\255\224\346\241\210(1).md" "b/34 \346\235\216\344\275\263\351\271\217/20230310 \345\244\247\344\275\234\344\270\232\347\255\224\346\241\210(1).md" new file mode 100644 index 0000000000000000000000000000000000000000..f41adce0a959016d4733af253aee2f090c176589 --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/20230310 \345\244\247\344\275\234\344\270\232\347\255\224\346\241\210(1).md" @@ -0,0 +1,145 @@ +```mysql + +CREATE DATABASE xiaoshuo CHARSET utf8; +use xiaoshuo; + +-- 1. 根据前面提供的表结构和表数据,创建数据库并分别创建这张四张表;并插入相关数据。(提醒:外键 +-- 请注意建表顺序和插入数据的顺序) + +CREATE TABLE vip( +vip_id VARCHAR(20) COMMENT"等级编号" PRIMARY KEY, +vip_name VARCHAR(20) COMMENT"等级名称" not null UNIQUE +); + +CREATE TABLE author( +author_id int COMMENT"作家编号" PRIMARY KEY, +author_name VARCHAR(20) COMMENT"作家姓名" not null UNIQUE, +credits int COMMENT"积分", +vip_id VARCHAR(20) COMMENT"等级编号" not null, +FOREIGN KEY author(vip_id) REFERENCES vip(vip_id) +); + +CREATE TABLE type( +type_id VARCHAR(20) COMMENT"类型编号" PRIMARY KEY, +type_name VARCHAR(20) COMMENT"类型名称" not null UNIQUE +); + +CREATE TABLE story( +story_id int COMMENT"作品编号" PRIMARY KEY auto_increment, +author_id int COMMENT"作家编号", +type_id VARCHAR(20) COMMENT"类型编号" DEFAULT null, +story_name VARCHAR(50) COMMENT"作品名称" DEFAULT null, +views_number int COMMENT"浏览量", +FOREIGN KEY (author_id) REFERENCES author(author_id), +FOREIGN KEY (type_id) REFERENCES type(type_id) +); + +INSERT INTO vip VALUES +('VIP01','青铜作家'), +('VIP02','白银作家'), +('VIP03','黄金作家'), +('VIP04','钻石作家'); + +INSERT INTO author VALUES +(1001,'朱逸群',600,'VIP02'), +(1002,'范建',8510,'VIP04'), +(1003,'史珍香',981,'VIP02'), +(1004,'范统',2364,'VIP02'), +(1005,'杜子腾',257,'VIP01'), +(1006,'刘产',678,'VIP02'), +(1007,'杜琦燕',438,'VIP03'); + +INSERT INTO type VALUES +('L01','玄幻'), +('L02','奇幻'), +('L03','武侠'), +('L04','仙侠'), +('L05','都市'); + +INSERT INTO story VALUES +(1,1002,'L03','母猪产后与护理师的二三事',6541), +(2,1005,'L04','拖拉机大战蜘蛛侠',563), +(3,1003,'L01','这只小龙虾不正经',8754), +(4,1006,'L04','一个爹爹三个娃',36354), +(5,1006,'L01','皇上滚开本宫只劫财',3674), +(6,1005,'L05','给长城贴瓷砖的小太监',6541), +(7,1003,'L03','不科学御兽',1257), +(8,1005,'L01','镜面管理局',3216), +(9,1004,'L02','关于我成为灭魂师之后',1147), +(10,1004,'L05','公子别秀',2078); + +-- 1. 将story 表中的story_name字段类型改成varchar(40) 。 + +ALTER TABLE story MODIFY story_name VARCHAR(40); + +-- 3. 在author表中增加一个性别字段 字段名:author_sex,类型: char(10),要求默认值为'男'。 + +ALTER TABLE author ADD COLUMN author_sex char(10) default "男"; + +-- 4. 将作家编号为1005、1007的作家性别改为'女' 。 + +UPDATE author SET author_sex="女" WHERE author_id in(1005,1007); + +-- 5. 作家杜子腾,写了一篇名为《拜登夸我很帅》的都市小说,有854个浏览量,请将这条信息插入到story +-- 表。 + +INSERT INTO story VALUES(11,1005,'L05','拜登夸我很帅',854); + +-- 6. 《拖拉机大战蜘蛛侠》这篇小说,浏览量涨了100,请更新story表中的相关数据。 + +UPDATE story SET views_number=663 WHERE story_name='拖拉机大战蜘蛛侠'; + +-- 7. 请删除story表的中《皇上滚开本宫只劫财》这篇小说相关数据。 + +DELETE FROM story WHERE story_name='皇上滚开本宫只劫财'; + +-- 8. 查询 浏览量大于 8000的小说的作者编号和小说作品名 + +SELECT author_id,story_name FROM story WHERE views_number>8000; + +-- 9. 查询积分大于1000 并且会员等级高于vip03的作家所有信息。 + +SELECT * FROM author WHERE credits>1000 AND vip_id>'vip03'; + +-- 10. 查询姓名以杜字开头的作家的姓名,积分和等级编号。 + +SELECT author_name,credits,vip_id FROM author WHERE author_name LIKE "杜%"; + +-- 11. 查询积分在100、1000之间的作家信息,以积分降序排列。 + +SELECT * FROM author WHERE credits BETWEEN 100 AND 1000 ORDER BY credits desc; + +-- 12. 查询出小说的总浏览量,最高浏览量,最小浏览量,平均浏览量,给字段用上中文别名。 + +SELECT sum(views_number) 总浏览量,MAX(views_number) 最高浏览量,MIN(views_number) 最小浏览量,AVG(views_number)平均浏览量 FROM story; + +-- 13. 查询各种等级的作家的平均积分和作家数量,并对查询结果使用中文别名。 + +SELECT vip_id,AVG(credits) 平均积分,COUNT(vip_id) FROM author GROUP BY vip_id; + +-- 14. 查询小说数量大于等于2的分类编号和小说数量。 + +SELECT type_id,COUNT(story_name) FROM story GROUP BY type_id HAVING COUNT(story_name)>=2; + +-- 15. 查询所有小说中浏览量最少的书的作品编号、作品名称和类型编号、浏览量。 + +SELECT story_id,story_name,type_id,views_number FROM story WHERE views_number=(SELECT MIN(views_number) FROM story); + +-- 16. 查询积分比刘产高的作者所有信息。 + +SELECT * FROM author WHERE credits>(SELECT credits FROM author WHERE author_name='刘产'); + +-- 17. 查询出哪些白银作家是没有写小说的,显示这些作家的姓名、等级名称。 + +SELECT author_name,vip_name FROM vip right JOIN author ON vip.vip_id=author.vip_id LEFT JOIN story ON author.author_id=story.author_id WHERE vip_name='白银作家' AND story_name is null; + +-- 18. 找出写过作品浏览量大于5000的作家的所有作品中浏览量不到1000的作品信息 + +SELECT * FROM(SELECT author_id,story_name,views_number FROM story WHERE author_id in(SELECT author_id FROM story WHERE views_number>5000))aaa WHERE views_number<1000; + +-- 19. 查询所有小说的小说编号、小说名称、浏览量、分类名称、作者姓名、作者积分、作者等级名称,结果 +-- 字段要用中文别名,并按浏览量降序排列,如果浏览量一样的,再按积分降序排列。 + +SELECT story_id 小说编号,story_name 小说名称,views_number 浏览量,type_name 分类名称,author_name 作者姓名,credits 作者积分, vip_name 作者等级名称 FROM story JOIN type ON story.type_id=type.type_id JOIN author ON author.author_id=story.author_id JOIN vip ON author.vip_id=vip.vip_id ORDER BY views_number desc,credits desc; +``` + diff --git "a/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \344\275\234\344\270\2321\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \344\275\234\344\270\2321\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" new file mode 100644 index 0000000000000000000000000000000000000000..e63908b95caec03b8ef6f2e8615bda120c6f8331 --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \344\275\234\344\270\2321\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" @@ -0,0 +1,142 @@ +```mysql +CREATE DATABASE aaa CHARSET utf8; +use aaa; + +CREATE TABLE stuinfo( +stuNo VARCHAR(10), +stuName VARCHAR(10), +stuAge int, +stuAddress VARCHAR(10), +stuSeat int, +stuSex int +); + +CREATE TABLE stuexam( +examNo int, +stuNo VARCHAR(10), +writtenExam int, +labExam int +); + +INSERT INTO stuinfo VALUES +('s2501','张秋利',20,'美国硅谷',1,1), +('s2502','李斯文',18,'湖北武汉',2,0), +('s2503','马文才',22,'湖南长沙',3,1), +('s2504','欧阳俊雄',21,'湖北武汉',4,0), +('s2505','梅超风',20,'湖北武汉',5,1), +('s2506','陈旋风',19,'美国硅谷',6,1), +('s2507','陈风',20,'美国硅谷',7,0); + +INSERT INTO stuexam VALUES +(1,'s2501',50,70), +(2,'s2502',60,65), +(3,'s2503',86,85), +(4,'s2504',40,80), +(5,'s2505',70,90), +(6,'s2506',85,90); + +-- 1.查询学生信息表(stuinfo)中所有列信息,给每列取上中文名称 + +SELECT stuNo 学号,stuName 姓名,stuAge 年龄,stuAddress 地址,stuSeat 座位号,stuSex 性别 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 GROUP BY stuNo; + +-- 6.查询学生信息表(stuInfo)中学生来自哪几个地方 + +SELECT stuAddress FROM stuinfo GROUP BY stuAddress; + +-- 7.查询学生信息表(stuInfo)中学生有哪几种年龄,并为该列取对应的中文列名 + +SELECT stuAge 年龄 FROM stuinfo GROUP BY stuAge; + +-- 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 stuAddress='湖北武汉' AND stuAge=20; + +-- 12.将机试成绩在60-80之间的信息查询出来,并按照机试成绩降序排列 + +SELECT * FROM stuexam WHERE labExam BETWEEN 60 AND 80 ORDER BY labExam DESC; + +-- 13.查询来自湖北武汉或者湖南长沙的学生的所有信息 + +SELECT * FROM stuinfo WHERE stuAddress='湖南长沙' OR stuAddress='湖北武汉'; + +-- 14.查询出笔试成绩不在70-90之间的信息,并按照笔试成绩升序排列 + +SELECT * FROM stuexam WHERE writtenExam not BETWEEN 70 AND 90 ORDER BY writtenExam asc; + +-- 15.查询年龄没有写的学生所有信息 + +SELECT * FROM stuinfo WHERE stuAge is 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 ORDER BY stuAge desc; + +-- 22.按学生的年龄降序和座位号升序来显示所有学生的信息 + +SELECT * FROM stuinfo ORDER BY stuAge desc,stuSeat ASC; + +-- 23显示笔试第一名的学生的考试号,学号,笔试成绩和机试成绩 + +SELECT examNo 考试号,stuNo 学号,writtenExam 笔试成绩,labExam 机试成绩 FROM stuexam WHERE writtenExam=(SELECT MAX(writtenExam) FROM stuexam); + +-- 24.显示机试倒数第一名的学生的考试号,学号,笔试成绩和机试成绩 + +SELECT examNo 考试号,stuNo 学号,writtenExam 笔试成绩,labExam 机试成绩 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 stuAddress,stuSex,AVG(stuAge) 平均年龄,SUM(stuAge) 年龄总和 FROM stuinfo GROUP BY stuAddress,stuSex; + + + + +``` + diff --git "a/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \344\275\234\344\270\2322\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \344\275\234\344\270\2322\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" new file mode 100644 index 0000000000000000000000000000000000000000..f1b8a98ff3dec5f776bad95a9d44b8d8d3330910 --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \344\275\234\344\270\2322\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" @@ -0,0 +1,66 @@ +```mysql +CREATE DATABASE sss charset utf8; +use sss; + +CREATE TABLE orders( +orderID int PRIMARY KEY, +orderDate datetime +); + +CREATE TABLE orderitem( +itemID int, +orderid int, +itemType VARCHAR(10), +itemName VARCHAR(10), +theNumber int, +theMoney int +); + +INSERT INTO orders VALUES +(1,'2008-01-12'), +(2,'2008-02-10'), +(3,'2008-02-15'), +(4,'2008-03-10'); + +INSERT INTO orderitem 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 sum(theNumber) FROM orderitem; + +-- 2.查询订单编号小于3的,平均单价小于10 每个订单订购的所有物品的数量和以及平均单价 + +SELECT orderid,sum(theNumber),AVG(theMoney) FROM orderitem WHERE orderid<3 GROUP BY orderid HAVING AVG(theMoney)<10; + +-- 3.查询平均单价小于10并且总数量大于 50 每个订单订购的所有物品数量和以及平均单价 + +SELECT orderID,SUM(theNumber),AVG(theMoney) FROM orderitem group BY orderID HAVING AVG(theMoney)<10 AND SUM(theNumber)>50; + +-- 4.查询每种类别的产品分别订购了几次 + +SELECT itemType,COUNT(itemType) FROM orderitem GROUP BY itemType; + +-- 5.查询每种类别的产品的订购总数量在100以上的订购总数量和平均单价 + +SELECT itemType,SUM(theNumber),AVG(theMoney) FROM orderitem GROUP BY itemType HAVING SUM(theNumber)>100; + +-- 6.查询每种产品的订购次数,订购总数量和订购的平均单价 + +SELECT itemName,COUNT(itemName),SUM(theNumber),AVG(theMoney) FROM orderitem GROUP BY itemName; +``` + diff --git "a/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \344\275\234\344\270\2323\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \344\275\234\344\270\2323\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" new file mode 100644 index 0000000000000000000000000000000000000000..a81b586b008b1d65701826dcaacb49bdd9a4b9dc --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \344\275\234\344\270\2323\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" @@ -0,0 +1,93 @@ +```mysql +CREATE DATABASE ddd CHARSET utf8; +use ddd; + +CREATE TABLE stuinfo( +stuId int, +stuName VARCHAR(10), +stuAge int, +stuSex int, +time datetime +); + +CREATE TABLE courseinfo( +courseID int, +courseName VARCHAR(15), +courseMarks int +); + +CREATE TABLE scoreinfo( +scoreID int, +stuID int, +courseID int, +score int +); + +INSERT INTO stuinfo VALUES +(1,'Tom',19,1,NULL), +(2,'Jack',20,0,NULL), +(3,'Rose',21,1,NULL), +(4,'Lulu',19,1,NULL), +(5,'Lili',21,0,NULL), +(6,'abc',20,1,'2007-01-07 01:11:36.590'); + +INSERT INTO courseinfo VALUES +(1,'JavaBase',4), +(2,'HTML',2), +(3,'JavaScript',2), +(4,'SqlBase',2); + +INSERT INTO scoreinfo VALUES +(1,1,1,80), +(2,1,2,85), +(3,1,4,50), +(4,2,1,75), +(5,2,3,45), +(6,2,4,75), +(7,3,1,45), +(8,4,1,95), +(9,4,2,75), +(10,4,3,90), +(11,4,4,45); + +-- 1.查询出每个学生所选修的课程的数量和所选修的课程的考试的平均分 + +SELECT stuID 学号,courseID 课程号,COUNT(courseID) 选修数量,AVG(score) 选秀课程考试平均分 FROM scoreinfo GROUP BY stuID,courseID; + +-- 2.查询出每门课程的选修的学生的个数和学生考试的总分 + +SELECT courseID 选修课程,COUNT(stuID) 课程选修学生数,sum(score)考试总分 FROM scoreinfo GROUP BY courseID; + +-- 3.查询出性别一样并且年龄一样的学生的信息 + +SELECT * FROM stuinfo a WHERE (SELECT COUNT(*) FROM stuinfo WHERE stuAge=a.stuAge AND stuSex=a.stuSex)>1; + +-- 4.查询出学分一样的课程信息 + +SELECT * FROM courseinfo a WHERE (SELECT COUNT(*) FROM courseinfo WHERE courseMarks=a.courseMarks)>1; + +-- 5.查询出参加了考试的学生的学号,姓名,课程号和分数 + +SELECT stuinfo.stuId 学号,stuName 姓名,courseID 课程号,score 分数 FROM stuinfo LEFT JOIN scoreinfo ON stuinfo.stuId=scoreinfo.stuID WHERE score is not NULL; + +-- 6.查询出参加了考试的学生的学号,课程号,课程名,课程学分和分数 + +SELECT stuID 学号,scoreinfo.courseID 课程号,courseName 课程名,courseMarks 课程学分,score 分数 FROM scoreinfo LEFT JOIN courseinfo ON courseinfo.courseID=scoreinfo.courseID ORDER BY stuID asc; + +-- 7.查询出没有参加考试的学生的学号和姓名 + +SELECT stuinfo.stuId 学号,stuName 姓名 FROM stuinfo LEFT JOIN scoreinfo ON stuinfo.stuId=scoreinfo.stuID WHERE score is NULL; + +-- 8.查询出是周六周天来报到的学生 + +SELECT * FROM stuinfo WHERE weekday(time)=6 or weekday(time)=5; + +-- 9.查询出姓名中有字母a的学生的信息 + +SELECT * FROM stuinfo WHERE stuName LIKE '%a%'; + +-- 10.查询出选修了2门课程以上的并且考试平均分在70以上的学生的学号和考试平均分以及选修课程的数量 + +SELECT stuID 学号,AVG(score) 考试平均分,COUNT(courseID) 选修课程的数量 FROM scoreinfo GROUP BY stuID HAVING COUNT(courseID)>2 and AVG(score)>70; +``` + diff --git "a/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \345\244\215\344\271\240\351\242\2301\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \345\244\215\344\271\240\351\242\2301\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" new file mode 100644 index 0000000000000000000000000000000000000000..f9cf7b7eeff2d4f835be404884d8d78221c0cb0a --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \345\244\215\344\271\240\351\242\2301\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" @@ -0,0 +1,52 @@ +```mysql +-- 1、创建商品数据库(GoodsDB),然后建立两张表,GoodsType(商品类型表),GoodsInfo(商品信息表) + +CREATE DATABASE GoodsDB CHARSET utf8; +use GoodsDB; + +CREATE TABLE GoodsType( +TypeID int not null auto_increment PRIMARY KEY COMMENT'商品类型编号', +TypeName VARCHAR(20) not null COMMENT'商品类型名称' +); + +CREATE TABLE GoodsInfo( +GoodsID int not null auto_increment PRIMARY KEY COMMENT'商品编号', +GoodsName VARCHAR(20) not null COMMENT'商品名称', +GoodsColor VARCHAR(20) not null COMMENT'商品颜色', +GoodsBrand VARCHAR(20) COMMENT'商品品牌', +GoodsMoney DECIMAL(10,2) not null COMMENT'商品价格', +TypeID int COMMENT'商品类型编号', +FOREIGN KEY (TypeID) REFERENCES GoodsType(TypeID) +); + +-- 2、使用插入语句为两张表添加数据 + +INSERT INTO GoodsType VALUES +(1,'服装内衣'), +(2,'鞋包配饰'), +(3,'手机数码'); + +INSERT INTO Goodsinfo VALUES +(1,'提花小西装','红色','菲曼琪',300,1), +(2,'百搭短裤','绿色','哥弟',100,1), +(3,'无袖背心','白色','阿依莲',700,1), +(4,'低帮休闲鞋','红色','菲曼琪',900,2), +(5,'中跟单鞋','绿色','哥弟',400,2), +(6,'平底鞋','白色','阿依莲',200,2), +(7,'迷你照相机','红色','尼康',500,3), +(8,'硬盘','黑色','希捷',600,3), +(9,'显卡','黑色','技嘉',800,3); + +-- 3、查询价格最贵的商品名称,商品颜色和商品价格,要求使用别名显示列名 + +SELECT GoodsName 商品名称,GoodsColor 商品颜色,GoodsMoney 商品价格 FROM goodsinfo WHERE GoodsMoney=(SELECT MAX(GoodsMoney) FROM goodsinfo); + +-- 4、按商品类型编号分组查询商品最高价格,最低价格和平均价格,要求使用别名显示列名 + +SELECT TypeID 商品类型编号,MAX(GoodsMoney) 最高价格,MIN(GoodsMoney) 最低价格,AVG(GoodsMoney) 平均价格 FROM goodsinfo GROUP BY TypeID; + +-- 5、查询商品信息所有列,要求商品颜色为红色,价格在300~600之间 + +SELECT * FROM goodsinfo WHERE GoodsColor='红色' AND GoodsMoney BETWEEN 300 AND 600; +``` + diff --git "a/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \345\244\215\344\271\240\351\242\2302\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \345\244\215\344\271\240\351\242\2302\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" new file mode 100644 index 0000000000000000000000000000000000000000..459b1228f2d42f8f28e856c52a4b49bfa5cd8674 --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \345\244\215\344\271\240\351\242\2302\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" @@ -0,0 +1,82 @@ +```mysql +-- 1、创建数据库HOUSE_DB + + + +CREATE DATABASE HOUSE_DB CHARSET utf8; + +use HOUSE_DB; + + + +-- 2、创建数据表 + + + +CREATE TABLE HOUSE_TYPE( + +type_id int not null auto_increment PRIMARY KEY COMMENT'类型编号', + +type_name VARCHAR(50) not null UNIQUE COMMENT'类型名称' + +); + + + +CREATE TABLE HOUSE( + +house_id int not null auto_increment PRIMARY KEY COMMENT'房屋编号', + +house_name VARCHAR(50) not null COMMENT'房屋名称', + +house_price FLOAT not null DEFAULT 0 COMMENT'房租', + +type_id int not null COMMENT'房屋类型', + +FOREIGN KEY (type_id) REFERENCES HOUSE_TYPE(type_id) + +); + + -- 3、添加表数据 + +INSERT INTO HOUSE_TYPE VALUES + +(1,'小户型'), + +(2,'经济型'), + +(3,'别墅'); + + + +INSERT INTO HOUSE VALUES + +(1,'茅草屋',200,1), + +(2,'鬼屋',500,2), + +(3,'临海木屋',800,3); + +-- 查询所有房屋信息 + +SELECT * FROM house; + +-- 使用模糊查询包含”型“字的房屋类型信息 + +SELECT * FROM house_type WHERE type_name LIKE '%型%'; + +-- 查询出房屋的名称和租金,并且按照租金降序排序 + +SELECT house_name 房屋名称,house_price 租金 FROM house ORDER BY house_price desc; + +-- 使用连接查询,查询信息,显示房屋名称和房屋类型名称 + +SELECT house_name 房屋名称,type_name 房屋类型 FROM house JOIN house_type ON house.type_id=house_type.type_id; + +-- 查询所有房屋中月租最高的房屋,显示最高的租金和房屋名称 + +SELECT house_name,MAX(house_price) FROM house WHERE house_price=(SELECT max(house_price) FROM house); + + +``` + diff --git "a/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \345\244\215\344\271\240\351\242\2303\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \345\244\215\344\271\240\351\242\2303\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" new file mode 100644 index 0000000000000000000000000000000000000000..1bc92f1ea327607e0c9cf92c592f5d43080f7c9c --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/20230311\344\275\234\344\270\232/20230311 \345\244\215\344\271\240\351\242\2303\351\242\230\347\233\256\345\217\212\347\255\224\346\241\210.md" @@ -0,0 +1,49 @@ +```mysql +-- 1.创建明星数据库(StarManagerDB),然后建立两张表,StarType(明星类型表),StarInfo(明星信息表) + +CREATE DATABASE StarManagerDB CHARSET utf8; +use StarManagerDB; + +CREATE TABLE StarType( +T_NO int not null PRIMARY KEY auto_increment COMMENT'明星类型编号', +T_NAME VARCHAR(20) COMMENT'明显类型' +); + +CREATE TABLE StarInfo( +S_NO int not null PRIMARY KEY auto_increment COMMENT'明星编号', +S_NAME VARCHAR(20) not null COMMENT'明星姓名', +S_AGE int not null COMMENT'明星年龄', +S_HOBBY VARCHAR(20) COMMENT'特技', +S_NATIVE VARCHAR(20) DEFAULT'中国大陆' COMMENT'明星籍贯', +S_T_NO int COMMENT '明星类型编号', +FOREIGN KEY (S_T_NO) REFERENCES StarType(T_NO) +); + +-- 2、使用插入语句为两张表添加数据 + +INSERT INTO StarType VALUES +(1,'体育明星'), +(2,'IT明星'), +(3,'相声演员'); + +INSERT INTO StarInfo VALUES +(1,'梅西',30,'射门','阿根廷',1), +(2,'科比',35,'过人','美国',1), +(3,'蔡景现',40,'敲代码','中国',2), +(4,'马斯克',36,'造火箭','外星人',2), +(5,'郭德纲',50,'相声','中国',3), +(6,'黄挣',41,'拼多多','中国',2); + +-- 3、查询年龄最大的3个明星的姓名,特技和籍贯信息,要求使用别名显示列名。 + +SELECT S_NAME 明星姓名,S_HOBBY 明星特技,S_NATIVE 明星籍贯 FROM starinfo ORDER BY S_AGE DESC LIMIT 0,3; + +-- 4、按明星类型编号分类查询明星人数,明星平均年龄,显示明星人数大于2的分组信息,要求使用别名显示列名。 + +SELECT S_T_NO 明星类型编号,COUNT(S_T_NO) 明星人数,AVG(S_AGE) 明星平均年龄 FROM starinfo GROUP BY S_T_NO HAVING COUNT(S_T_NO)>2; + +-- 5、查询明星类型为“体育明星”中年龄最大的姓名、特技、籍贯信息,要求显示列别名。 + +SELECT S_NAME 明星姓名,S_HOBBY 特技,S_NATIVE 明星籍贯 FROM starinfo LEFT JOIN StarType on starinfo.S_T_NO=startype.T_NO WHERE S_AGE=(SELECT MAX(S_AGE) FROM starinfo LEFT JOIN StarType on starinfo.S_T_NO=startype.T_NO WHERE T_NAME='体育明星'); +``` + diff --git "a/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.txt" "b/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.txt" new file mode 100644 index 0000000000000000000000000000000000000000..e08829ec4c9d406cc26d61e5868cb99deb52c2b2 --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232.txt" @@ -0,0 +1,13 @@ +CREATE TABLE student( +`学号` VARCHAR(20), +`姓名` VARCHAR(20), +`性别` VARCHAR(20), +`爱好` VARCHAR(20), +`住址` VARCHAR(20), +`联系方式` VARCHAR(20), +`邮箱` VARCHAR(20), +`QQ号` VARCHAR(20) +); + +INSERT INTO student VALUES('2244310414','吴俊明','男','玩游戏','福建泉州','18960230904','1282453552@qq.com','1282453552'); +SELECT * FROM student; \ No newline at end of file diff --git "a/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\270\200\351\242\230\347\255\224\346\241\210.txt" "b/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\270\200\351\242\230\347\255\224\346\241\210.txt" new file mode 100644 index 0000000000000000000000000000000000000000..502811428ee0045dcf8f068bcbdc09dca09ddcf7 --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\270\200\351\242\230\347\255\224\346\241\210.txt" @@ -0,0 +1,26 @@ +CREATE TABLE customers( +c_num int(11), +c_name VARCHAR(50), +c_contact VARCHAR(50), +c_city VARCHAR(50), +c_birth date +); + +DESC customers; + +alter table customers MODIFY c_contact VARCHAR(50) AFTER c_birth; +desc customers; + +alter table customers modify c_name VARCHAR(70); +desc customers; + +alter table customers change c_contact c_phone VARCHAR(50); +desc customers; + +alter table customers add c_gender char(1) after c_name; +desc customers; + +alter table customers rename customers_info; + +alter table customers_info drop c_city; +desc customers_info; diff --git "a/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\270\211\351\242\230\347\255\224\346\241\210.txt" "b/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\270\211\351\242\230\347\255\224\346\241\210.txt" new file mode 100644 index 0000000000000000000000000000000000000000..038bb4a89b1f8005f999688daa070fa5e93cf113 --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\270\211\351\242\230\347\255\224\346\241\210.txt" @@ -0,0 +1,54 @@ +CREATE TABLE books( +id int(11) PRIMARY KEY not null auto_increment, +title VARCHAR(100) not null, +author VARCHAR(100) not null, +price double(11,2) not null, +sales int(11) not null, +stock int(11) not null, +img_path VARCHAR(100) not null +); +desc books; + +INSERT INTO books VALUES(1,'解忧杂货店','东野圭吾',27.2,102,98,'upload/books/解忧杂货店.jpg'),(2,'边城','沈从文',23,102,98,'upload/boosk/边城.jpg'); +SELECT * FROM books; + +CREATE TABLE users( +id int(11) PRIMARY KEY not null auto_increment, +username VARCHAR(100) UNIQUE KEY not null, +password VARCHAR(100) not null, +email VARCHAR(100) +); +desc users; + +INSERT INTO users VALUES(1,'admin','112233','admin@mxdx.com'); +SELECT * FROM users; + +CREATE TABLE orders( +id VARCHAR(100) PRIMARY KEY not null, +order_time datetime not null, +total_count int(11) not null, +total_amount double(11,2) not null, +state int(11) not null, +user_id int(11) not null, +CONSTRAINT orders_suers_id_fk FOREIGN KEY (user_id) REFERENCES users(id) +); +desc orders; + +INSERT INTO orders VALUES('15294258455691','2018-06-20 00:30:45',2,50.2,0,1); +SELECT * FROM orders; + +CREATE TABLE order_items( +id int(11) PRIMARY KEY not null auto_increment, +count int(11) not null, +amout double(11,2) not null, +title VARCHAR(100) not null, +author VARCHAR(100) not null, +price DOUBLE(11,2) not null, +img_path VARCHAR(100) not null, +order_id VARCHAR(100) not null, +CONSTRAINT orders_items_orders_id_fk FOREIGN KEY (order_id) REFERENCES orders(id) on DELETE CASCADE +); +desc order_items; + +INSERT INTO order_items VALUES(1,1,27.2,'解忧杂货店','东野圭吾',27.2,'static/img/default.jpg','15294258455691'),(2,1,23,'边城','沈从文',23,'static/img/default.jpg','15294258455691'); +SELECT * FROM order_items; \ No newline at end of file diff --git "a/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\272\214\351\242\230\347\255\224\346\241\210.txt" "b/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\272\214\351\242\230\347\255\224\346\241\210.txt" new file mode 100644 index 0000000000000000000000000000000000000000..81acf51c3127aa89e2b48896418f5ecfdb387022 --- /dev/null +++ "b/34 \346\235\216\344\275\263\351\271\217/MySQL\344\275\234\344\270\232/MySQL\344\275\234\344\270\232/\347\254\254\344\272\214\351\242\230\347\255\224\346\241\210.txt" @@ -0,0 +1,29 @@ +create table books( +b_id int(11) PRIMARY KEY not null, +b_name VARCHAR(50) not null, +authors VARCHAR(100) not null, +price FLOAT not null, +pubdate year not null, +note VARCHAR(100), +num int(11) not null +); +desc books; + +INSERT INTO books(b_id,b_name,authors,price,pubdate,note,num) VALUES(1,'Tal of AAA','Dickes',23,'1995','novel',11); +SELECT * FROM books; + +INSERT INTO books VALUES(2,'EmmaT','Jane lura',35,1993,'joke',22); +SELECT * FROM books; + +INSERT INTO books VALUES(3,'Story of Jane','Jane Tim',40,'2001','novel',0),(4,'Lovey Day','George Byron',20,'2005','novel',30), +(5,'Old land','Honore Blade',30,'2010','law',0),(6,'The Battle','Upton Sara',30,'1999','medicine',40),(7,'Rose Hood','Richard haggard',28,'2008','cartoon',28); +SELECT * FROM books; + +update books set price=price+5 where note='novel'; +SELECT * FROM books; + +update books set price=40 where b_name='EmmaT'; +SELECT * FROM books; + +delete from books where num=0; +SELECT * FROM books; \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 1c7d50c1d18686c02bbad936479803d6292386ca..0000000000000000000000000000000000000000 --- a/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# MySQL数据库基础_笔记 - -这就是一个普通的,22级软件04班MySQL课堂笔记 - -# 必看 -1. 自己的笔记都放到自己的姓名的文件夹里面, -2. 笔记要求用markdown格式书写 -3. 文件名格式要求:日期+空格+笔记的标题 如 `20230216 MySQL的安装和登录.md` - - -- 时间,你不开拓它,它就悄悄长出青苔,爬上你生命的庭院,把你一生掩埋。加油! - -# 简易的命令行入门教程: - -1. 先在自己电脑上配置好git客户端的帐号: - -- ``` - git config --global user.name "你的姓名" - ``` - -- ``` - git config --global user.email "你的邮箱地址" - ``` - -2. 自己电脑上创建一个 git 仓库的文件夹: - - - 1. 在这个文件夹里 右键,选择 `Git Base Here` 运行git客户端 输入以下命令: - - git clone https://gitee.com/class-22-class-03/mysql-base.git - - 2. 会得到一个子名字为 `mysql-base` 子文件夹 - - 3. **关闭**git客户端的窗口 - - 4. 进入`mysql-base`文件夹 - - 5. 创建一个 `自己座号+空格+姓名` 的文件夹,例如 `25 蔡坤坤` - - 6. 打开刚创建的`25 蔡坤坤`,在里面创建自己的笔记,比如 `20230216 MySQL的安装和登录.md` - - 7. 在这个文件夹里再次右键,选择 `Git Base Here` 运行git客户端 ,依次输入以下命令: - - 1、添加 - - ``` - git add . - ``` - - 2、备注 - - ``` - git commit -m "本次笔记的备注内容" - ``` - - 3、提交 - - ``` - git push -3. 提交后,登录gitee.com 查看自己的仓库里有没有这个刚提交的笔记,有的点,点一下` Pull Request` - - 1. `Pull Request` 是指将自己的仓库里这个笔记,合并到班级的仓库,在`Pull Request` 页面里填写一下必要信息后就可以点提交 - - 2. 最后在班级的`Pull Requests` 确认一下,有没有看到自己刚提交的,如果有,就等待管理员通过即可。 -4. 完毕