MySQL 单表 多表查询 练习一

创建班级表:

mysql> create table class1(
    -> cid int auto_increment primary key,
    -> caption varchar(32) not null default ''
    -> )charset=utf8;

insert into class1 (caption) values ('三年二班'),('一年三班'),('三年一班');

mysql> select * from class1;
+-----+--------------+
| cid | caption      |
+-----+--------------+
|   1 | 三年二班     |
|   2 | 一年三班     |
|   3 | 三年一班     |
+-----+--------------+
3 rows in set (0.00 sec)

创建学生表:

mysql> create table stu(
    -> sid int auto_increment primary key,
    -> sname varchar(32) not null default '',
    -> gender varchar(32) not null default '',
    -> class_id int not null default 1,
    ->
    -> constraint fk_stu_class1 foreign key (class_id) references class1(cid)
    -> )charset=utf8;

mysql> insert into stu (sname, gender, class_id) values ('钢蛋','女',1),('铁锤','女',1),('山炮','男',2);

mysql> select * from stu;
+-----+--------+--------+----------+
| sid | sname  | gender | class_id |
+-----+--------+--------+----------+
|   1 | 钢蛋   | 女     |        1 |
|   2 | 铁锤   | 女     |        1 |
|   3 | 山炮   | 男     |        2 |
+-----+--------+--------+----------+
3 rows in set (0.00 sec)

创建老师表:

mysql> create table tea(
    -> tid int auto_increment primary key,
    -> tname varchar(32) not null default ''
    -> )charset=utf8;

insert into tea (tname) values ('Allen'),('Frank'),('Julie');

mysql> select * from tea;
+-----+-------+
| tid | tname |
+-----+-------+
|   1 | Allen |
|   2 | Frank |
|   3 | Julie |
+-----+-------+
3 rows in set (0.00 sec)

创建课程表:

mysql> create table cour(
    -> cid int auto_increment primary key,
    -> cname varchar(32) not null default '',
    -> tea_id int not null default 1,
    ->
    -> constraint fk_cour_tea foreign key (tea_id) references tea(tid)
    -> )charset=utf8;

insert into cour (cname, tea_id) values ('生物',1),('体育',1),('物理',2);

mysql> select * from cour;
+-----+--------+--------+
| cid | cname  | tea_id |
+-----+--------+--------+
|   1 | 生物   |      1 |
|   2 | 体育   |      1 |
|   3 | 物理   |      2 |
+-----+--------+--------+
3 rows in set (0.00 sec)

成绩表:

mysql> create table sco(
    -> sid int auto_increment primary key,
    -> stu_id int not null default 1,
    -> cou_id int not null default 0,
    -> number int not null default 0,
    
    -> constraint fk_sco_stu foreign key (stu_id) references stu(sid),
    -> constraint fk_sco_cour foreign key (cou_id) references cour(cid)
    -> )charset utf8;

mysql> insert into sco (stu_id, cou_id, number) values (1,1,60),(1,2,59),(2,2,100);

mysql> select * from sco;
+-----+--------+--------+--------+
| sid | stu_id | cou_id | number |
+-----+--------+--------+--------+
|   1 |      1 |      1 |     60 |
|   2 |      1 |      2 |     59 |
|   3 |      2 |      2 |    100 |
+-----+--------+--------+--------+
3 rows in set (0.00 sec)

--1、查询所有大于60分的学生的姓名和学号 (DISTINCT: 去重)

mysql> select distinct stu.sid,stu.sname from sco left join stu on stu.sid=stu_id where number>=60;
+------+--------+
| sid  | sname  |
+------+--------+
|    1 | 钢蛋   |
|    2 | 铁锤   |
+------+--------+
2 rows in set (0.01 sec)

猜你喜欢

转载自www.cnblogs.com/allenchen168/p/11769032.html