2017-10-20课堂代码

2017-10-20课堂代码-多表数据操作

创建五张表

  1. 学生表t_student
idcodenameid_card_numberclazz_id
101张三1231
202李四4561
301王五2362
403赵六249null
-- 创建学生表
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

idname
1Java96班
2Java93班
-- 创建班级表
DROP TABLE IF EXISTS t_clazz;
CREATE TABLE t_clazz(
    id      INT PRIMARY KEY AUTO_INCREMENT,
    name    VARCHAR(255)
);

3.课程表t_course

idname
1HTML
2CSS
3JavaScript
DROP TABLE IF EXISTS t_course;
CREATE TABLE t_course(
    id      INT PRIMARY KEY AUTO_INCREMENT,
    name    VARCHAR(255)
);

4.账号表t_account

idstudent_iduserNamepassword
11zhangsan123456
22lisi123456
33wangwu123456
-- 创建学生账号表
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

idstudent_idcourse_id
111
212
313
421
522
-- 创建学员课程中间表
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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值