sql多对多探讨
来源:互联网 发布:oracle数据库还原dmp 编辑:程序博客网 时间:2024/05/01 21:18
--用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
/****
你有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
- sql多对多探讨
- 深入探讨SQL Server 2000对XML的支持
- [转贴]深入探讨SQL Server 2000对XML的支持
- 深入探讨SQL Server 2000对XML的支持
- 深入探讨SQL Server 2000对XML的支持(一)
- 深入探讨SQL Server 2000对XML的支持(二)
- 深入探讨SQL Server 2000对XML的支持(四)
- 深入探讨SQL Server 2000对XML的支持(三)
- Sql 多对多关系
- 单条commit与多条commit对系统产生的IOPS影响的探讨
- 对enum的探讨
- 深入探讨SQL Server 2000对XML的支持 选择自 cyz1980 的 Blog
- 深入探讨SQL Server 2000对XML的支持 选择自 softj 的 Blog
- sql优化器探讨
- SQL 语法探讨
- SQL注入详细探讨
- sql server cube多对多关系
- 多对多,sql语句写法
- [转]鉴于最近找工作的同学询问我华…
- Android学习笔记之屏幕横竖设置
- 最好不相见【有一个人】
- matlab-simulink中s-function函数…
- 【转】据说是世界上最健康的作息,…
- sql多对多探讨
- 每隔一段时间看一次 保证你越来越…
- 更改MFC程序图标
- 使用simulink函数创建系统/子系统
- [转]应该知道的~
- 万灵公式——卡瑞尔万灵公式
- 办公室办公常见病预防:颈椎病...
- win7下在虚拟机中安装xp系统
- 虚拟机共享主机文件夹