|
|
@@ -10,8 +10,6 @@
|
|
|
<dict>
|
|
|
<key>connection</key>
|
|
|
<dict>
|
|
|
- <key>database</key>
|
|
|
- <string>school</string>
|
|
|
<key>host</key>
|
|
|
<string>120.77.222.217</string>
|
|
|
<key>kcid</key>
|
|
|
@@ -47,22 +45,17 @@
|
|
|
<integer>1</integer>
|
|
|
<key>contentSelection</key>
|
|
|
<data>
|
|
|
- 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
|
|
|
</data>
|
|
|
<key>contentSortColIsAsc</key>
|
|
|
<true/>
|
|
|
@@ -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;
|
|
|
</string>
|
|
|
- <key>table</key>
|
|
|
- <string>tb_score</string>
|
|
|
<key>view</key>
|
|
|
<string>SP_VIEW_CUSTOMQUERY</string>
|
|
|
<key>windowVerticalDividerPosition</key>
|
|
|
@@ -330,6 +321,137 @@ select stuname, ifnull(total, 0) from tb_student t1 left outer join (select stui
|
|
|
<array/>
|
|
|
<key>queryHistory</key>
|
|
|
<array>
|
|
|
+ <string>-- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算)
|
|
|
+explain select stuname from tb_student where stuid=any(
|
|
|
+ select stuid from tb_score group by stuid having count(stuid)>2
|
|
|
+)</string>
|
|
|
+ <string>explain select stuname from tb_student where stuid in (
|
|
|
+ select stuid from tb_score group by stuid having count(stuid)>2
|
|
|
+)</string>
|
|
|
+ <string>select stuname from tb_student where stuid in (
|
|
|
+ select stuid from tb_score group by stuid having count(stuid)>2
|
|
|
+)</string>
|
|
|
+ <string>select stuname from tb_student where stuid=(
|
|
|
+ select stuid from tb_score group by stuid having count(stuid)>2
|
|
|
+)</string>
|
|
|
+ <string>-- 如果存在名为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)</string>
|
|
|
<string>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</string>
|
|
|
<string>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</string>
|
|
|
<string>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</string>
|
|
|
@@ -347,29 +469,11 @@ select stuname, couname, scmark from tb_student t1, tb_course t2, tb_score t3 wh
|
|
|
<string>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</string>
|
|
|
<string>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</string>
|
|
|
<string>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</string>
|
|
|
- <string>-- 查询选了两门以上的课程的学生姓名(子查询/分组条件/集合运算)
|
|
|
-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</string>
|
|
|
- <string>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</string>
|
|
|
- <string>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</string>
|
|
|
- <string>select stuid, count(stuid) from tb_score group by stuid</string>
|
|
|
- <string>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</string>
|
|
|
</array>
|
|
|
<key>rdbms_type</key>
|
|
|
<string>mysql</string>
|
|
|
<key>rdbms_version</key>
|
|
|
- <string>5.5.60-MariaDB</string>
|
|
|
+ <string>5.7.26</string>
|
|
|
<key>version</key>
|
|
|
<integer>1</integer>
|
|
|
</dict>
|