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;