设为首页 收藏本站
查看: 435|回复: 0

[经验分享] Oracle(day3)数据表的连接

[复制链接]

尚未签到

发表于 2016-7-29 11:07:24 | 显示全部楼层 |阅读模式
  上节回顾:
1、order by 子句
order by + 字段名,字段名,字段名...
order by + list列表值,list列表值,list列表值...
  2、where 子句
算术运算符
SQL运算符
逻辑运算符
  3、单行函数
  
作业内容:
1、对员工表中日期值进行排序。
select to_char(start_date,'yyyy-mm-dd')Time from s_emp order by start_date desc;
  
Oracle day3
查询连接
  
等值连接
查询员工表员部门编号为41的员工姓名;
select frist_name || last_name "姓名" from s_emp where dept_id=41;
  查询员工表员姓名为LaDorisNgao的员工信息;
select * from s_emp where first_name = 'LaDoris';
  
非等值连接
查询员工表中部门编号在40到42之间的所有员工信息;
select * from s_emp where dept_id between 40 and 42;
  
查询员工表中员工编号为1,5,9,23的员信息;
select * from s_emp where id in(1,5,9,23);
  
外连接
左外连接
select s_a.last_name "A NAME",s_b.last_name "B NAME" from s_emp s_a ,s_emp s_b where s_a.id= s_b.manager_id(+);
  select s_a.last_name,s_b.last_name from s_emp s_a left outer join s_emp s_b on s_a.id = s_b.manager_id;
  右外连接
select s_a.last_name,s_b.last_name from s_emp s_a ,s_emp s_b where s_a.id(+)= s_b.manager_id;
  select s_a.last_name,s_b.last_name from s_emp s_a right outer join s_emp s_b on s_a.id = s_manager_id;
  from 第一表(A),第二表(B)
A B
  左:B===》A======》只要跟A表内容相匹配,A表内容都显示,B表内容补空
右:A===》B ======》只要跟B表内容相匹配,B表内容都显示, A表内容补空
  
自连接(A表和B表代表同一张表)
select s_a.last_name,s_b.last_name from s_emp s_a ,s_emp s_b where s_a.id= s_b.manager_id;
  
oracle 10g
  笛卡尔积
交叉连接
select s_a.last_name,s_b.last_name from s_emp s_a ,s_emp s_b;
  
  
  组函数
AVG (DISTINCT|ALL|n)平均值
COUNT (DISTINCT|ALL|expr|*)统计个数
MAX (DISTINCT|ALL|expr)最大值
MIN (DISTINCT|ALL|expr)最小值
SUM (DISTINCT|ALL|n)求和
  
select avg(salary),count(salary),max(salary),min(salary),sum(salary) from s_emp;
  
查询员工表中姓名的最大值和最小值
SELECTMIN(last_name), MAX(last_name) FROMs_emp;
  
  Group by ........Having
SELECT字段名 FROM 表名[ where 条件 GROUP BY 分组条件 having(过滤条件) ORDER BY 字段名]
  
  按部门编号分组统计员工表中工资;
select sum(salary) from s_emp group by dept_id;
  查询部门表中对部门名字进行统计
SELECTregion_id, COUNT(name) FROMs_dept; 报错
SELECTregion_id, COUNT(name) FROMs_dept group by region_id order by region_id;
  
查询员工表中按部门编号分组在按标题分组;
SELECTdept_id, title,salary, COUNT(*) FROMs_emp GROUP BYdept_id, title ,salary;
  
group by 字段名,字段名,字段名.....
  查询员工表中对部门编号做统计
SELECTdept_id , count(*) FROMs_emp GROUP BY dept_id order by dept_id;
查询员工表中部门编号统计大于2的记录
SELECTdept_id , count(*) FROMs_emp GROUP BY dept_id having count(*)>2;
  查询员工表中标题数量大于5的记录
select title , 12*avg(salary), count(*) from s_emp group by title having count(*)>5;
  
select title ,avg(salary) from s_emp where title not like'%Stock%' group by title having avg(salary) > 1000;
  
  子查询
  查出所有员工低于平均工资的记录
  select avg(salary) from s_emp;
  select * from s_emp where salary < 平均工资
  select * from s_emp where salary < (select avg(salary) from s_emp);
  
  查询一个名字叫Biri的同一个部门的员工
select dept_id from s_emp where last_name = 'Biri';
  select * from s_emp where dept_id = 部门ID
  select * from s_emp where dept_id = (select dept_id from s_emp where last_name = 'Biri');
  
语法结构:
SELECTselect_list
FROMtable
WHEREexpr operator
(SELECTselect_list
FROMtable where (select ......));

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251133-1-1.html 上篇帖子: Oracle中MERGE语句的使用 下篇帖子: Oracle三种集合数据类型的比较
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表