mysql--基本语句3-多表查询1

 1 use learn_db ;
 2 
 3 # 创建主表
 4 create table class_teachers(
 5     id int primary key auto_increment not null comment '班主任ID',
 6     name varchar(20) not null comment '班主任名字' ,
 7     gender boolean default 0 comment '0:保密,1:男,2:女' ,
 8     age int comment '班主任年龄'
 9 
10 ) ;
11 # 主表插入数据
12 insert into class_teachers(name, gender, age) values ('冰冰', 2, 22),
13                                                      ('丹丹', 2, 25),
14                                                      ('歪歪', 1, 27),
15                                                      ('珊珊', 2, 26),
16                                                      ('小雨', 2, 30);
17 
18 # 创建子表
19 create table class_students(
20     id int primary key auto_increment not null comment '学生ID',
21     name varchar(20) not null comment '学生姓名' ,
22     teacher_id int not null comment '班主任ID'
23 
24 ) engine = innodb ;
25 
26 # 子表插入数据
27 insert into class_students(name, teacher_id) values ('学生1', 2),
28                                                     ('学生2', 4),
29                                                     ('学生3', 1),
30                                                     ('学生4', 3),
31                                                     ('学生5', 1),
32                                                     ('学生6', 3),
33                                                     ('学生7', 2) ;
34 
35 # 查询主表
36 select * from class_teachers ;
37 # 查询子表
38 select * from class_students ;
39 
40 # 创建外键(在子表中创建)
41 drop table class_students;
42 show tables ;
43 
44 create table class_students(
45     id int primary key auto_increment not null comment '学生ID',
46     name varchar(20) not null comment '学生姓名' ,
47     teacher_id int not null comment '班主任ID' ,
48     foreign key (teacher_id) references class_teachers(id)
49 
50 ) engine = innodb ;
51 
52 insert into class_students(name, teacher_id) values ('学生1', 2),
53                                                     ('学生2', 4),
54                                                     ('学生3', 5),
55                                                     ('学生4', 3),
56                                                     ('学生5', 5),
57                                                     ('学生6', 3),
58                                                     ('学生7', 2) ;
59 
60 # teacher
61 select * from class_teachers ;
62 # student
63 select * from class_students ;
64 
65 
66 # 插如外键
67 show create table class_students2 ;
68 alter table class_students2 add constraint teacher_id foreign key (teacher_id) references class_teachers(id) ;
69 show create table class_students2 ;
70 # 删除外键
71 alter table class_students2 drop foreign key teacher_id ;
72 show create table class_students2 ;
73 
74 # 连级删除
75 /*
76     foreign key (子表字段) references + 主表(主表字段) on delete cascade
77     -- 删除连级
78     alter table + 表名 drop foreign key + 外键名
79     -- 连接删除后子表对应字段为Null ,子表的外键不能设置not null
80     alter table + 表名 add constraint + 外键名 foreign key (子表字段) references + 主表(主表字段)
81 
82 */
83 
84 select * from class_students, class_teachers ;
85 select * from class_teachers, class_students ;
86 
87 select * from class_teachers, class_students where class_teachers.id=class_students.teacher_id ;
88 select * from class_students,class_teachers where class_students.teacher_id=class_teachers.id ;
89 select class_students.name, class_teachers.name from class_students,class_teachers where class_students.teacher_id=class_teachers.id and class_students.name='学生3';

 

posted @ 2021-07-27 21:52  关于段主任的一切  阅读(58)  评论(0)    收藏  举报