博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORACLE1.12-事实表,维表,多对多
阅读量:4570 次
发布时间:2019-06-08

本文共 1334 字,大约阅读时间需要 4 分钟。

-- 多对多的秘密:项目中,往往把关系分拆出一张单独表

--维表(学生维度)

create table t_stu(

   id number primary key,

   user_name varchar2(10)

);

insert into t_stu values(1,'小军');

insert into t_stu values(2,'小黄');

commit

select * from t_stu

drop table t_ke

--维表(课程维度)

create table t_ke(

   id number primary key,

   ke_name varchar2(100)

);

insert into t_ke values(1,'高等数学');

insert into t_ke values(2,'离散数学');

insert into t_ke values(3,'牛顿法');

insert into t_ke values(4,'大学英语');

insert into t_ke values(5,'马克思主义');

insert into t_ke values(6,'江泽明思想');

insert into t_ke values(7,'邓小平理论');

commit

select * from t_ke

-- 事实表

CREATE TABLE t_stu_ke(

  id NUMBER PRIMARY KEY,

  user_id NUMBER(5),

  ke_id NUMBER(5)

);

delete from t_stu_ke

insert into t_stu_ke values(1,1,1);

insert into t_stu_ke values(2,1,2);

insert into t_stu_ke values(3,1,6);

commit;

insert into t_stu_ke values(4,2,4);

insert into t_stu_ke values(5,2,6);

commit;

 

select sk.id,s.user_name,k.ke_name from t_stu_ke sk

left join t_stu s on sk.user_id =s.id

left join t_ke k on sk.ke_id=k.id

 

insert into t_stu_ke values(6,3,3);

insert into t_stu_ke values(7,2,8);

commit

 

select

   sk.id,

   nvl(s.user_name,'未知学生:'||sk.user_id) 学生,

   nvl(k.ke_name,'未知课程:'||sk.ke_id) 选课

from t_stu_ke sk

   left join t_stu s on sk.user_id =s.id

   left join t_ke k on sk.ke_id=k.id

  

-- 站在不通的维度看世界  

   group by

转载于:https://www.cnblogs.com/wyj1212/p/8567717.html

你可能感兴趣的文章
EL表达式概述
查看>>
word中批量修改图片大小
查看>>
第四次scrum冲刺
查看>>
Ext4 中 日期和时间的控件
查看>>
最长子序列问题
查看>>
python中一些有用的函数------持续更新中
查看>>
第三次作业—张淑华
查看>>
python 实现字符串的切片功能
查看>>
Centos 文件权限修改
查看>>
使用Amazon Simple Queues Service (SQS)实现与AutoCAD远程交互
查看>>
oracle 游标
查看>>
滚动条滚动到最底部的方法总结
查看>>
想不劳而获的人太多了,而我就是其中一个
查看>>
hexo改造
查看>>
Python模块NumPy中的tile(A,rep) 函数
查看>>
JS实现打开本地文件或文件夹 ActiveXObject
查看>>
python中split函数的使用
查看>>
优化 SQL SELECT 语句性能
查看>>
Spring3 MVC 类型转换
查看>>
算法训练 Cowboys(DP)
查看>>