2017-10-20課堂代碼

2017-10-20課堂代碼-多表數據操作

創建五張表

  1. 學生表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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章