java 从零开始,学习笔记之基础入门<Oracle_查询>(三十四)
2013-12-16 14:15
936 查看
Oracle多表查询
--部门 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 |
相关文章推荐
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<Oracle_查询>(三十四)
- java 从零开始,学习笔记之基础入门<Oracle_基础>(三十三)
- java 从零开始,学习笔记之基础入门<SQL_Server_常用查询>(二十二)
- java 从零开始,学习笔记之基础入门<Oracle_基础>(三十三)
- java 从零开始,学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<Oracle_函数_触发器_游标_存储过程_视图>(三十五)
- java 从零开始,学习笔记之基础入门<数据类型的转换>(五)
- java 从零开始,学习笔记之基础入门<集合>(十六)
- java 从零开始,学习笔记之基础入门<Struts2_实战演练(上)>(三十八)
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<Oracle_基础>(三十三)
- java 从零开始,学习笔记之基础入门<正则表达式>(三十一)
- java 从零开始,学习笔记之基础入门<jsp>(二十六)
- java 从零开始,学习笔记之基础入门<Jquery>(四十三)
- java 从零开始,学习笔记之基础入门<封装类>(十一)
- java 从零开始,学习笔记之基础入门<运算符表达式和流程控制>(六)
- java 从零开始,学习笔记之基础入门<SQL_Server_视图_函数_存储过程_触发器等>(二十三)
- java 从零开始,学习笔记之基础入门<网络编程_带QQ模拟功能>(二十)
- java 从零开始,学习笔记之基础入门<SQL_Server>(二十一)
- java 从零开始,学习笔记之基础入门<Static>(十二)
- java 从零开始,学习笔记之基础入门<反射>(二十九)