`
holoblog
  • 浏览: 1226394 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:18918
文章分类
社区版块
存档分类
最新评论

Oracle(day3)数据表的连接

 
阅读更多

上节回顾:
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 ......));

分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。 四、 如何学习 认真听课、多思考问题、多动手操作、有问题一定要问、多参与讨论、多帮组同学 五、 体系结构 ...

    Oracle_Database_11g完全参考手册.part3/3

    13.2.1 Oracle9i以前版本中的外部连接的语法 13.2.2 现在的外部连接语法 13.2.3 用外部连接代替NOTIN 13.2.4 用NOTEXISTS代替NOTIN 13.3 自然连接和内部连接 13.4 UNION、INTERSECT和MINUS 13.4.1 IN子查询 13.4.2 ...

    Oracle_Database_11g完全参考手册.part2/3

    13.2.1 Oracle9i以前版本中的外部连接的语法 13.2.2 现在的外部连接语法 13.2.3 用外部连接代替NOTIN 13.2.4 用NOTEXISTS代替NOTIN 13.3 自然连接和内部连接 13.4 UNION、INTERSECT和MINUS 13.4.1 IN子查询 13.4.2 ...

    最全的oracle常用命令大全.txt

    例:表删除将同时删除表的数据和表的定义 sql&gt;drop table test c、表空间的创建、删除 六、ORACLE逻辑备份的SH文件 完全备份的SH文件:exp_comp.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager ...

    Oracle8i_9i数据库基础

    §3.3.6 将表移动到新的数据段或新的表空间 102 §3.3.7 手工分配表的存储空间 104 §3.3.8 标记不使用的列和删除不使用的列 104 §3.3 主键 106 §3.3.1 创建主键 106 §3.3.2 改变主键 109 §3.3.3 删除主键 109 ...

    Oracle练习笔试大全

    Oracle练习笔试大全 1、select ename, sal * 12 from emp; //计算年薪 2、select 2*3 from dual; //计算一个比较纯的数据用dual表 3、select sysdate from dual; //查看当前的系统时间 4、select ename, sal*12 ...

    oracle数据库经典题目

    18. 表空间是Oracle数据库中数据的逻辑组织,每个数据库至少有一个SYSTEM系统表空间。 19.视图是一个表示表的数据的数据库对象,它允许用户从一个表或一组表中通过一定的查询语句建立一个“虚表”。 20.序列是一种...

    oracle函数大全.doc

    连接两个字符串; SQL&gt; select concat('010-','88888888')||'转23' 高乾竞电话 from dual; 高乾竞电话 ---------------- 010-88888888转23 4.INITCAP 返回字符串并将字符串的第一个字母变为大写; SQL&gt; select initcap...

    Oracle9i的init.ora参数中文说明

    说明: 与 NLS_TIME_FORMAT 相似, 只不过它设置的是 TIMESTAMP 数据类型的默认值, 该数据类型既存储YEAR, MONTH 和 DAY 这几个日期值, 也存储 HOUR, MINUTE 和 SECOND 这几个时间值。 语法: TIMESTAMP '1997-01-31 ...

    MYSQL,SQLSERVER,ORACLE常用的函数

    SQL&gt; select instr('oracle traning','ra',1,2) instring from dual; INSTRING --------- 9 6.LENGTH 返回字符串的长度; SQL&gt; select name,length(name),addr,length(addr),sal,length(to_char(sal)) from ....

    orcale常用命令

    例:表删除将同时删除表的数据和表的定义 sql&gt;drop table test c、表空间的创建、删除 六、ORACLE逻辑备份的SH文件 完全备份的SH文件:exp_comp.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager ...

    KafkaToA_calc_day_power.java

    flink连接kafka,消费数据存入oracle数据库,以及增删改查操作

    2009达内SQL学习笔记

    select:从一个或多个表中检索一个或多个数据列。包含信息:想选择什么表,从什么地方选择。必须要有From子句。(最常用) 当从多张表里查询的时候,会产生笛卡尔积;可用条件过滤它。 当两个表有相同字段时必须加...

    SQL性能优化

     ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换...

    jdbc操作文档,数据库基本操作文档集合

    3. DML:数据操纵语言。对数据库的增、删、改、查。 4.数据库事物处理语言 常用sql语句 1.插入字段 insert into 表名(表里字段,不加括号表示插入所有字段) values (对应的字段值); 2.查看表记录 select *(或字段...

    jdbc笔记(自写)

    Day1–JDBC概述+JDBC完成CRUD+DAO设计 1.JDBC概述 1.1 什么是持久化(persistence): 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。 ​ 保存数据: ​ 内存中: 掉电之后,数据就没了. ​ 磁盘...

    Web安全深度剖析(张柄帅)

    5.5.1 严格的数据类型 100 5.5.2 特殊字符转义 101 5.5.3 使用预编译语句 102 5.5.4 框架技术 103 5.5.5 存储过程 104 5.6 小结 105 第6章 上传漏洞 106 6.1 解析漏洞 106 6.1.1 IIS解析漏洞 106 6.1.2 Apache解析...

    超详细的SQL语句语法汇总

    字符串类型的字段值必须用单引号括起来, 例如: ‘GOOD DAY’如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号”. 字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验. 日期...

Global site tag (gtag.js) - Google Analytics