2017-10-20课堂代码-多表数据操作
创建五张表
- 学生表t_student
| id | code | name | id_card_number | clazz_id |
|---|---|---|---|---|
| 1 | 01 | 张三 | 123 | 1 |
| 2 | 02 | 李四 | 456 | 1 |
| 3 | 01 | 王五 | 236 | 2 |
| 4 | 03 | 赵六 | 249 | null |
-- 创建学生表
DROP TABLE IF EXISTS t_student;
CREATE TABLE t_student(
id INT PRIMARY KEY AUTO_INCREMENT,
code VARCHAR(255),
name VARCHAR(255),
id_card_number VARCHAR(255),
clazz_id INT,
CONSTRAINT fk_student_clazz FOREIGN KEY (clazz_id) REFERENCES t_clazz(id)
);
2.班级表t_clazz
| id | name |
|---|---|
| 1 | Java96班 |
| 2 | Java93班 |
-- 创建班级表
DROP TABLE IF EXISTS t_clazz;
CREATE TABLE t_clazz(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255)
);
3.课程表t_course
| id | name |
|---|---|
| 1 | HTML |
| 2 | CSS |
| 3 | JavaScript |
DROP TABLE IF EXISTS t_course;
CREATE TABLE t_course(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255)
);
4.账号表t_account
| id | student_id | userName | password |
|---|---|---|---|
| 1 | 1 | zhangsan | 123456 |
| 2 | 2 | lisi | 123456 |
| 3 | 3 | wangwu | 123456 |
-- 创建学生账号表
DROP TABLE IF EXISTS t_account;
CREATE TABLE t_account(
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT UNIQUE,
userName VARCHAR(255),
password VARCHAR(255),
CONSTRAINT fk_account_student FOREIGN KEY (student_id) REFERENCES t_student(id)
);
5.学生课程表t_student_course
| id | student_id | course_id |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 1 |
| 5 | 2 | 2 |
-- 创建学员课程中间表
DROP TABLE IF EXISTS t_student_course;
CREATE TABLE t_student_course(
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
CONSTRAINT fk_middle_student FOREIGN KEY (student_id) REFERENCES t_student(id),
CONSTRAINT fk_middle_course FOREIGN KEY (course_id) REFERENCES t_course(id)
);
查询语句
1.自然连接查询,查询学员学号,姓名,所在班级名称
-- 自然连接查询,查询学员学号,姓名,所在班级名称
SELECT s.clazz_id,s.code,s.name,c.id,c.name
FROM t_student AS s,t_clazz AS c
WHERE s.clazz_id = c.id;
2.内连接查询
-- 内连接查询
SELECT s.code AS '学号',s.name AS '姓名',c.name AS '班级名称' FROM t_student AS s
INNER JOIN t_clazz AS c ON s.clazz_id = c.id;
3.左连接查询
-- 左外连接,符合条件的被显示,没有的显示null
SELECT s.code AS '学号',s.name AS '姓名',c.name AS '班级名称' FROM t_student AS s
LEFT JOIN t_clazz AS c ON s.clazz_id = c.id;
4.综合查询
-- 综合查询,查询学生班级,学号,姓名,账号,账号密码,课程名称
SELECT cl.name AS '班级名称',s.code AS '学号',s.name AS '姓名',
a.userName AS '账号名称',a.password AS '密码',c.name AS '课程名称'
FROM t_student_course AS sc
LEFT JOIN t_student AS s ON sc.student_id = s.id
LEFT JOIN t_course AS c ON sc.course_id = c.id
LEFT JOIN t_clazz AS cl ON s.clazz_id = cl.id
LEFT JOIN t_account AS a ON a.student_id = s.id;
本文档详细介绍了如何通过五个具体实例来创建并操作数据库表,包括学生表、班级表、课程表、账号表及学生课程表。通过这些实例,读者可以了解到如何进行自然连接查询、内连接查询、左连接查询及综合查询等操作。

被折叠的 条评论
为什么被折叠?



