[原]java专业程序代写(qq:928900200),学习笔记之基础入门<Oracle_查询>(三十四)
2013-12-16 14:15
1176 查看
Oracle多表查询
作者:lulu147 发表于2013-12-16 14:15:17 原文链接
阅读:263 评论:0 查看评论
--部门 create table dept_tb( dept_id number(3) primarykey, dept_no varchar2(5), dept_name varchar2(20), dept_addr varchar2(30) ) -- 创建序列IDSEQENCE create sequence SEQ minvalue 1 maxvalue 9999 startwith 1 incrementby 1 drop sequence SEQ insertinto dept_tb values(SEQ.nextval,'R1011','国际工程系','A13'); insertinto dept_tb values(SEQ.nextval,'R1012','国际酒店管理系','B13'); insertinto dept_tb values(SEQ.nextval,'R1013','水利水电工程系','C13'); insertinto dept_tb values(SEQ.nextval,'R1014','土木工程系','D13'); insertinto dept_tb values(SEQ.nextval,'R1015','电影系','E13'); insertinto dept_tb values(SEQ.nextval,'R1016','工商管理系','F13'); deletefrom dept_tb where dept_id between 2 and 4 truncatetable dept_tb droptable dept_tb update dept_tb set dept_name ='工商管理系' where dept_id = 6 select * from dept_tb --专业表外键在外键表中设置 create table major( mar_id number(3) primary key, mar_no varchar2(4), mar_name varchar2(20), dept_id number(3), foreign key(dept_id) references dept_tb(dept_id) ) insert into major values(1,'M110','应用软件专业',1); insert into major values(2,'M111','客服专业',2); insert into major values(3,'M112','发电专业',3); insert into major values(4,'M113','水电工程专业',3); insert into major values(5,'M114','造桥专业',4); insert into major values(6,'M115','表演专业',5); select * from major --老师表 create table teacher( tea_id number(3) primary key, tea_no varchar2(4), tea_name varchar2(30), tea_age varchar2(30), tea_sex char(2), dept_id number(3), foreign key(dept_id) references dept_tb(dept_id) ) insert into teacher values(1,'T070','刘德华','49','男',5); insert into teacher values(2,'T071','马云','40','男',5); insert into teacher values(3,'T072','马化腾','45','男',5); insert into teacher values(4,'T073','蒋介石','55','男',1); insert into teacher values(5,'T074','曾志伟','50','男',3); update teacher set tea_name='周润发'where tea_id=2 update teacher set tea_name='周星驰'where tea_id=3 update teacher set tea_name='王进喜'where tea_id=5 select * from teacher; --学生表 create table student( s_id number(3) primary key, s_name varchar2(30), s_no varchar2(6), s_sex char(2), s_age number(2), regtime date, mar_id number(3), foreign key(mar_id) references major(mar_id) ) insertinto student values(1,'茹国华','S1010','男','18','8-8月-2008','1'); insertinto student values(2,'小强','S1011','男','1','2-4月-2009','2'); insertinto student values(3,'白骨精','S1012','女','25','1-2月-2010','3'); insertinto student values(4,'球形','S1010','女','26','3-8月-2011','4'); insertinto student values(5,'旺财','S1011','男','21','3-9月-2001','4'); select * from student create table s_t_tb( st_id number(3) primary key, s_id number(3), foreign key(s_id) references student(s_id), tea_id number(3), foreign key(tea_id) references teacher(tea_id) ) insert into s_t_tb values(1,1,1); insert into s_t_tb values(2,2,1); insert into s_t_tb values(3,4,2); select * from s_t_tb; --查询一个系有多少个专业 --系id为3专业数 select dept_id as系别,count(*) as总数from major groupby dept_id having dept_id = 3; --一个专业有多少个学生 select mar_id as所属专业,count(*) as学生总数from student groupby mar_id; --查询在某个时间入学的学生数 select regtime as入学时间,count(*) as学生总数from student groupby regtime; --查询一个学生有多少老师? select s.sname,count(*) as老师数 from s_t_tb st,student s,teacher t where st.st_id=s.s_id and st.tea_id=t.tea_id groupby s.s_id,s.s_name; --简化的写法 select s_id,count(*) from s_t_tb st groupby s_id; --子查询 --把查询的结果作为表一样再次进行查询 select tt.t,count(*) from (select s_name ,to_char(regtime,'yyyy/MM') t from student) tt groupby tt.t; --求平均值 --求学生平均年龄avg,sum select totalage/totalnum from (select sum(s_age) totalage,count(*) totalnum from student); select avg(s_age) 学生平均年龄from student; select sum(s_age)/count(*) 学生平均年龄from student; --简单分页 --查询学生表,查询第一页,显示条数2 select top 2 * from student where s_id not in( select top 2 s_id from student ) select row num,s.* from student s; select * from ((select * from student orderby s_id) s) where s.s_id between (2-1)*2+1and2*2; --连接查询 --oracle把连接分为三种:内连接(inner join),外连接(outer join),全连接(full join) --左连接查询,左连接以左边表作为主表,将左边所有的信息都显示,而右边的表只有在满足条件时才显示 select * from teacher t leftjoin dept_tb d on t.dept_id=d.dept_id; --默认的采用是内连接查询 select * from teacher t innerjoin dept_tb d on t.dept_id=d.dept_id; --同内连接 select * from teacher t,dept_tb d where t.dept_id=d.dept_id; select * from teacher; select * from student; select * from s_t_tb |
阅读:263 评论:0 查看评论
相关文章推荐
- oracle用户授权
- 关于Oracle 10g的schedule job
- RedHat安装oracle 10g系统环境配置脚本
- Oracle 常用的几个命令在SQL*PLUS中
- Oracle查看用户表
- oracle游标的简单学习
- ORACLE的TO_CHAR函数详解
- ORACLE 解锁 scott等用户
- Oracle SID VS Service Name
- Oracle Create Table as Select
- Oracle Reporting 7 - Model Examples
- Oracle Reporting 6 - Model
- Oracle Reporting 5 - Windowing
- oracle11g重置system密码,外二
- Oracle(四)- Oracle的优化器的RBO和CBO方式
- exp/imp导入导出版本问题和ORA-6550报错
- Oracle VM Virtual中CentOS自动获取IP地址设置方法
- Oracle Data Guard 理论知识
- 关于‘_datafile_write_errors_crash_instance = FALSE’的验证
- Oracle 10g Data Guard Broker 配置文档