From fe71d2781d0fb80fc7ed29fb73610e8dbcf382d5 Mon Sep 17 00:00:00 2001 From: jackfrued Date: Sat, 18 May 2019 23:40:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=92=8C=E4=BB=A3=E7=A0=81=E4=B8=AD=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Day01-15/Day04/code/for1.py | 3 +- Day16-20/Python语言进阶.md | 1 + Day36-40/code/SRS_create_and_init.sql | 2 +- Day36-40/code/学校选课系统.spf | 184 ++++++++++++++++++++------ Day36-40/关系型数据库MySQL.md | 2 +- 5 files changed, 148 insertions(+), 44 deletions(-) diff --git a/Day01-15/Day04/code/for1.py b/Day01-15/Day04/code/for1.py index 062179a..659724d 100644 --- a/Day01-15/Day04/code/for1.py +++ b/Day01-15/Day04/code/for1.py @@ -8,6 +8,5 @@ Date: 2018-03-01 sum = 0 for x in range(1, 101): - if x % 2 == 0: - sum += x + sum += x print(sum) diff --git a/Day16-20/Python语言进阶.md b/Day16-20/Python语言进阶.md index ab7c6fc..2ca177e 100644 --- a/Day16-20/Python语言进阶.md +++ b/Day16-20/Python语言进阶.md @@ -555,6 +555,7 @@ ```Python from functools import wraps + from threading import Lock def singleton(cls): diff --git a/Day36-40/code/SRS_create_and_init.sql b/Day36-40/code/SRS_create_and_init.sql index 17ad397..301c7bc 100644 --- a/Day36-40/code/SRS_create_and_init.sql +++ b/Day36-40/code/SRS_create_and_init.sql @@ -216,7 +216,7 @@ select stuname as 姓名, year(now())-year(stubirth) as 年龄 from tb_student w ); -- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算) -select stuname from tb_student where stuid=( +select stuname from tb_student where stuid in ( select stuid from tb_score group by stuid having count(stuid)>2 ) diff --git a/Day36-40/code/学校选课系统.spf b/Day36-40/code/学校选课系统.spf index 373bb6d..1f60a4a 100644 --- a/Day36-40/code/学校选课系统.spf +++ b/Day36-40/code/学校选课系统.spf @@ -10,8 +10,6 @@ connection - database - school host 120.77.222.217 kcid @@ -47,22 +45,17 @@ 1 contentSelection - YnBsaXN0MDDUAQIDBAUGOTpYJHZlcnNpb25YJG9iamVjdHNZJGFy - Y2hpdmVyVCR0b3ASAAGGoK0HCBUWFxgZHSQoLDE2VSRudWxs0wkK - CwwQFFdOUy5rZXlzWk5TLm9iamVjdHNWJGNsYXNzow0OD4ACgAOA - BKMREhOABYAGgAiADFR0eXBlVHJvd3NUa2V5c18QJlNlbGVjdGlv - bkRldGFpbFR5cGVQcmltYXJ5S2V5ZWREZXRhaWxz0wkKCxobHKCg - gAfSHh8gIVokY2xhc3NuYW1lWCRjbGFzc2VzXxATTlNNdXRhYmxl - RGljdGlvbmFyeaMgIiNcTlNEaWN0aW9uYXJ5WE5TT2JqZWN00goL - JSehJoAJgAvSCykqK1lOUy5zdHJpbmeAClRzY2lk0h4fLS5fEA9O - U011dGFibGVTdHJpbmejLS8wWE5TU3RyaW5nWE5TT2JqZWN00h4f - MjNeTlNNdXRhYmxlQXJyYXmjMjQ1V05TQXJyYXlYTlNPYmplY3TS - Hh8iN6IiOFhOU09iamVjdF8QD05TS2V5ZWRBcmNoaXZlctE7PFRk - YXRhgAEACAARABoAIwAtADIANwBFAEsAUgBaAGUAbABwAHIAdAB2 - AHoAfAB+AIAAggCHAIwAkQC6AMEAwgDDAMUAygDVAN4A9AD4AQUB - DgETARUBFwEZAR4BKAEqAS8BNAFGAUoBUwFcAWEBcAF0AXwBhQGK - AY0BlgGoAasBsAAAAAAAAAIBAAAAAAAAAD0AAAAAAAAAAAAAAAAA - AAGy + YnBsaXN0MDDUAQIDBAUGJSZYJHZlcnNpb25YJG9iamVjdHNZJGFy + Y2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJX + TlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAF + gAdUdHlwZVRyb3dzXxAdU2VsZWN0aW9uRGV0YWlsVHlwZU5TSW5k + ZXhTZXTSFwsYGVxOU1JhbmdlQ291bnQQAIAG0hscHR5aJGNsYXNz + bmFtZVgkY2xhc3Nlc1pOU0luZGV4U2V0oh8gWk5TSW5kZXhTZXRY + TlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiRYTlNPYmplY3Rf + EA9OU0tleWVkQXJjaGl2ZXLRJyhUZGF0YYABAAgAEQAaACMALQAy + ADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwB8AIEAoQCmALMA + tQC3ALwAxwDQANsA3gDpAPIA9wEEAQcBEAEiASUBKgAAAAAAAAIB + AAAAAAAAACkAAAAAAAAAAAAAAAAAAAEs contentSortColIsAsc @@ -289,7 +282,7 @@ select stuname as 姓名, year(now())-year(stubirth) as 年龄 from tb_student w ); -- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算) -select stuname from tb_student where stuid=( +explain select stuname from tb_student where stuid in ( select stuid from tb_score group by stuid having count(stuid)>2 ) @@ -314,8 +307,6 @@ select stuname, avgmark from tb_student t1 inner join -- 查询每个学生的姓名和选课数量(左外连接和子查询) select stuname, ifnull(total, 0) from tb_student t1 left outer join (select stuid, count(stuid) as total from tb_score group by stuid) t2 on t1.stuid=t2.stuid; - table - tb_score view SP_VIEW_CUSTOMQUERY windowVerticalDividerPosition @@ -330,6 +321,137 @@ select stuname, ifnull(total, 0) from tb_student t1 left outer join (select stui queryHistory + -- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算) +explain select stuname from tb_student where stuid=any( + select stuid from tb_score group by stuid having count(stuid)>2 +) + explain select stuname from tb_student where stuid in ( + select stuid from tb_score group by stuid having count(stuid)>2 +) + select stuname from tb_student where stuid in ( + select stuid from tb_score group by stuid having count(stuid)>2 +) + select stuname from tb_student where stuid=( + select stuid from tb_score group by stuid having count(stuid)>2 +) + -- 如果存在名为school的数据库就删除它 +drop database if exists school; +-- 创建名为school的数据库并设置默认的字符集和排序方式 +create database school default charset utf8 collate utf8_bin; +-- 切换到school数据库上下文环境 +use school; +-- 创建学院表 +create table tb_college +( +collid int not null auto_increment comment '编号', +collname varchar(50) not null comment '名称', +collmaster varchar(20) not null comment '院长', +collweb varchar(511) default '' comment '网站', +primary key (collid) +); +-- 创建学生表 +create table tb_student +( +stuid int not null comment '学号', +stuname varchar(20) not null comment '姓名', +stusex bit default 1 comment '性别', +stubirth date not null comment '出生日期', +stuaddr varchar(255) default '' comment '籍贯', +collid int not null comment '所属学院', +primary key (stuid), +foreign key (collid) references tb_college (collid) +); +-- alter table tb_student add constraint fk_student_collid foreign key (collid) references tb_college (collid); + +-- 创建教师表 +create table tb_teacher +( +teaid int not null comment '工号', +teaname varchar(20) not null comment '姓名', +teatitle varchar(10) default '助教' comment '职称', +collid int not null comment '所属学院', +primary key (teaid), +foreign key (collid) references tb_college (collid) +); +-- 创建课程表 +create table tb_course +( +couid int not null comment '编号', +couname varchar(50) not null comment '名称', +coucredit int not null comment '学分', +teaid int not null comment '授课老师', +primary key (couid), +foreign key (teaid) references tb_teacher (teaid) +); +-- 创建选课记录表 +create table tb_score +( +scid int auto_increment comment '选课记录编号', +stuid int not null comment '选课学生', +couid int not null comment '所选课程', +scdate datetime comment '选课时间日期', +scmark decimal(4,1) comment '考试成绩', +primary key (scid), +foreign key (stuid) references tb_student (stuid), +foreign key (couid) references tb_course (couid) +); +-- 添加唯一性约束(一个学生选某个课程只能选一次) +alter table tb_score add constraint uni_score_stuid_couid unique (stuid, couid); +-- 插入学院数据 +insert into tb_college (collname, collmaster, collweb) values +('计算机学院', '左冷禅', 'http://www.abc.com'), +('外国语学院', '岳不群', 'http://www.xyz.com'), +('经济管理学院', '风清扬', 'http://www.foo.com'); +-- 插入学生数据 +insert into tb_student (stuid, stuname, stusex, stubirth, stuaddr, collid) values +(1001, '杨逍', 1, '1990-3-4', '四川成都', 1), +(1002, '任我行', 1, '1992-2-2', '湖南长沙', 1), +(1033, '王语嫣', 0, '1989-12-3', '四川成都', 1), +(1572, '岳不群', 1, '1993-7-19', '陕西咸阳', 1), +(1378, '纪嫣然', 0, '1995-8-12', '四川绵阳', 1), +(1954, '林平之', 1, '1994-9-20', '福建莆田', 1), +(2035, '东方不败', 1, '1988-6-30', null, 2), +(3011, '林震南', 1, '1985-12-12', '福建莆田', 3), +(3755, '项少龙', 1, '1993-1-25', null, 3), +(3923, '杨不悔', 0, '1985-4-17', '四川成都', 3); +-- 插入老师数据 +insert into tb_teacher (teaid, teaname, teatitle, collid) values +(1122, '张三丰', '教授', 1), +(1133, '宋远桥', '副教授', 1), +(1144, '杨逍', '副教授', 1), +(2255, '范遥', '副教授', 2), +(3366, '韦一笑', '讲师', 3); +-- 插入课程数据 +insert into tb_course (couid, couname, coucredit, teaid) values +(1111, 'Python程序设计', 3, 1122), +(2222, 'Web前端开发', 2, 1122), +(3333, '操作系统', 4, 1122), +(4444, '计算机网络', 2, 1133), +(5555, '编译原理', 4, 1144), +(6666, '算法和数据结构', 3, 1144), +(7777, '经贸法语', 3, 2255), +(8888, '成本会计', 2, 3366), +(9999, '审计学', 3, 3366); +-- 插入选课数据 +insert into tb_score (stuid, couid, scdate, scmark) values +(1001, 1111, '2017-09-01', 95), +(1001, 2222, '2017-09-01', 87.5), +(1001, 3333, '2017-09-01', 100), +(1001, 4444, '2018-09-03', null), +(1001, 6666, '2017-09-02', 100), +(1002, 1111, '2017-09-03', 65), +(1002, 5555, '2017-09-01', 42), +(1033, 1111, '2017-09-03', 92.5), +(1033, 4444, '2017-09-01', 78), +(1033, 5555, '2017-09-01', 82.5), +(1572, 1111, '2017-09-02', 78), +(1378, 1111, '2017-09-05', 82), +(1378, 7777, '2017-09-02', 65.5), +(2035, 7777, '2018-09-03', 88), +(2035, 9999, curdate(), null), +(3755, 1111, date(now()), null), +(3755, 8888, date(now()), null), +(3755, 9999, '2017-09-01', 92) select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 5 offset 10 select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 10, 5 select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid where scmark is not null order by scmark desc limit 5, 5 @@ -347,29 +469,11 @@ select stuname, couname, scmark from tb_student t1, tb_course t2, tb_score t3 wh select stuname, avgmark from tb_student t1, (select stuid, avg(scmark) as avgmark from tb_score group by stuid) t2 where t1.stuid=t2.stuid select stuname, ifnull(total, 0) from tb_student t1 left outer join (select stuid, count(stuid) as total from tb_score group by stuid) t2 on t1.stuid=t2.stuid select stuname, ifnull(total,0) from tb_student t1 left outer join (select stuid, count(stuid) as total from tb_score group by stuid) t2 on t1.stuid=t2.stuid - -- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算) -select stuname from tb_student where stuid=( - select stuid from tb_score group by stuid having count(stuid)>2 -) - --- 查询学生姓名、课程名称以及成绩(连接查询) - --- 查询选课学生的姓名和平均成绩(子查询和连接查询) - --- 外连接(outer join):左外连接 / 右外连接 / 全外连接 --- 查询每个学生的姓名和选课数量(左外连接和子查询) -select stuname, ifnull(total, 0) from tb_student t1 left outer join (select stuid, count(stuid) as total from tb_score group by stuid) t2 on t1.stuid=t2.stuid - select stuname, total from tb_student t1 left outer join -(select stuid, count(stuid) as total from tb_score group by stuid) t2 on t1.stuid=t2.stuid - select stuname, total from tb_student t1 inner join -(select stuid, count(stuid) as total from tb_score group by stuid) t2 on t1.stuid=t2.stuid - select stuid, count(stuid) from tb_score group by stuid - select stuname, couname, scmark from tb_student t1 inner join tb_score t3 on t1.stuid=t3.stuid inner join tb_course t2 on t2.couid=t3.couid rdbms_type mysql rdbms_version - 5.5.60-MariaDB + 5.7.26 version 1 diff --git a/Day36-40/关系型数据库MySQL.md b/Day36-40/关系型数据库MySQL.md index 57e7dce..dc82382 100644 --- a/Day36-40/关系型数据库MySQL.md +++ b/Day36-40/关系型数据库MySQL.md @@ -401,7 +401,7 @@ ); -- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算) - select stuname from tb_student where stuid=( + select stuname from tb_student where stuid in ( select stuid from tb_score group by stuid having count(stuid)>2 )