• sql多对多探讨


    --用sql语句探讨一对多 多对多关系
    /****
    你有3个表 
    学生表(学生id 学生姓名)
    课程表(课程id 课程名)
    成绩表 (学生id 课程id 分数)
    班级表(班级id 学生id)
    这里的班级表跟学生表就是一对多 一个班级包含了很多学生 反过来就是多对一
    这里的课程表就是多对多 一门课对应多个学生选择 一个学生也可以有多个课程可以选 
    ****/
    create database tk
    go
    use tk
    create table class(id int identity(1,1) primary key ,name varchar(255))
    create table student(s_id int identity(1,1) primary key,s_name varchar(255) ,id int )
    create table course(c_id int identity(1,1) primary key,c_name varchar(255),c_hourse datetime)
    create table score(s_id int identity(1,1) primary key,c_id int, s_score int,student_id int)
    go
    --给学生添加学校信息
    alter table student add constraint FK_student_class foreign key(id) references class(id)
    go
    ---给成绩添加学生信息
    alter table score add constraint FK_score_student foreign key(student_id) references student(s_id)
    go--多对多【学生和课程表是多对多,多对多需要中间表】
    ---给成绩添加课程信息
    alter table score add constraint FK_score_course foreign key(c_id) references course(c_id)
    go
    insert into class values('耶鲁大学')
    go
    insert into student values('Tom',1)
    go
    insert into course values('计算机',NULL)
    go
    insert into score values(1,90,1)
    go
    ---查询成绩
    select student.id 班级, student.s_name as 姓名 ,course.c_name as 课程 ,score.s_score as 成绩 from student student
    left join class class on student.id= class.id
    left join score score on student.s_id=score.student_id
    left join course course on course.c_id = score.c_id
    --中间表的处理
    --结束测试
    use master
    drop database tk
  • 相关阅读:
    学习:Radio Button和Check Box
    学习:访问Edit Control的七种方法
    实现:EDIT控件字符个数与长度的计算
    学习:GDI基础
    学习:MFC的CWinApp和CFrameWnd
    学习:远程代码注入
    实现:获取指定进程PID
    学习:远程线程实现DLL注入和shellcode注入以及OD调试原理
    学习:内存映射文件
    实现 Trie (前缀树)
  • 原文地址:https://www.cnblogs.com/zhanghaiyublog/p/3583327.html
Copyright © 2020-2023  润新知