Oracle数据库常识
来源:互联网 发布:数控车床仿真软件下载 编辑:程序博客网 时间:2024/06/05 18:07
Oracle数据库常识:
1.如果两张表做连接查询,并且没有任何条件限制的话,两张表中的记录会随意匹配,最后的查询结果条数是两张表记录数的乘积,这种现象就是著名笛卡尔积现象。
select e.ename,d.dname from emp e,dept d;
2.等值连接
内连接(等值连接):SQL92语法
select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno;
内连接(等值连接):SQL99语法(优点:表连接操作和过滤数据的条件达到了分离,可读性高,维护性好)
select e.ename,d.dname from emp e INNER JOIN dept d ON e.deptno=d.deptno;
select e.ename,d.dname from emp e JOIN dept d ON e.deptno=d.deptno; //INNER 可以省略
3.非等值连接
内连接(非等值连接):SQL92语法
select e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal;
内连接(非等值连接):SQL99语法
select e.ename,e.sal,s.grade from emp e INNER JOIN salgrade s ON e.sal between s.losal and s.hisal;
select e.ename,e.sal,s.grade from emp e JOIN salgrade s ON e.sal between s.losal and s.hisal; //INNER可以省略
4.自连接
内连接(自连接):SQL92语法
select a.ename 员工,b.ename 领导 from emp a,emp b where a.mgr=b.empno;
内连接(自连接):SQL99语法
select a.ename 员工,b.ename 领导 from emp a INNER JOIN emp b ON a.mgr=b.empno;
select a.ename 员工,b.ename 领导 from emp a JOIN emp b ON a.mgr=b.empno; //INNER可以省略
5.外连接
显示dept表中所有记录(不管emp表中有没有不匹配的数据)
外连接(右(外)连接):SQL99语法
select e.ename,d.dname from emp e right outer join dept d on e.deptno=d.deptno;
select e.ename,d.dname from emp e right join dept d on e.deptno=d.deptno; //outer 可以省略
外连接(右(外)连接):SQL92语法
select e.ename,d.dname from emp e,dept d where e.deptno(+)=d.deptno;
注意: 任何一个左(外)连接都可以写为右(外)连接:
外连接(左(外)连接):SQL99语法
select e.ename,d.dname from dept d left outer join emp e on e.deptno=d.deptno;
select e.ename,d.dname from dept d left join emp e on e.deptno=d.deptno; //outer 可以省略
外连接(左(外)连接):SQL92语法
select e.ename,d.dname from emp e,dept d where d.deptno=e.deptno(+);
对于SQL99语法来说,A right(left) outer join B , 以join为中心m,其前的right/left决定了外连接谁,right就是说显示join右边表的所有数据,left反之。
对于SQL92语法来说,没有“+”的是要显示的表的所有数据,“+”是谁的,谁可以有不匹配的数据
6.其他SQL
select d.dname from emp e right join dept d on e.deptno=d.deptno where e.ename is null;
7.to_date函数的作用:将“字符串日期”转换成“日期类型”。VARCHAR2-->DATE
to_date函数的语法:to_date('字符串日期','日期格式'), to_date函数的运算结果是DATE类型。
关于日期格式:
回顾java日期格式:
yyyy 年
MM 月
dd 日
HH 时
mm 分
ss 秒
SSS 毫秒
java语言中:String-->java.util.Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date time = sdf.parse("2008-08-08");
Oracle日期格式:
YYYY 年
MM/MON 月(例如:八月份,如果是MM的话就是"08",如果是MON的话就是"8月")
DD 日
HH24/HH12 时(HH24是采用二十四小时进制,HH12采用十二小时进制)
MI 分
SS 秒
create table stu_tab(
name varchar2(20),
birth date
);
//Error:需要Date类型,不能传递字符串。
insert into stu_tab(name,birth) values('SMITH','1980-10-01');
//可以:birth是日期类型,to_date函数负责将字符串类型转换成日期类型。
insert into stu_tab(name,birth) values('SMITH',to_date('1980-10-01','YYYY-MM-DD'));
insert into stu_tab(name,birth) values('SMITH',to_date('1980-10月-01','YYYY-MON-DD'));
insert into stu_tab(name,birth) values('SMITH',to_date('80-10月-01','YY-MON-DD'));
insert into stu_tab(name,birth) values('SMITH','01-10月-80') --ORACLE数据库默认的日期格式:DD-MON-YY,字符串'01-10月-80'的格式正好和默认的日期格式相同,存在自动类型转换
如何修改ORACLE的默认日期格式:
alter session set nls_date_format = 'YYYY-MM-DD'; //只对当前会话有效。
insert into stu_tab(name,birth) values('SMITH','1981-12-10'); //这次可以了。
综上所述:to_date函数通常使用在插入操作中。一个表中有一个字段是DATE类型,
不能把字符串类型数据传递过去,需要调用to_date函数进行类型转换。
8.①to_char 函数的作用:将“日期类型”转换成“字符串类型”。DATE--->VARCHAR2
to_char 函数的语法:to_char(日期类型,'日期格式'),运算结果类型是字符串类型
回顾java中如何将日期类型转换成字符串:Date-->String
Date time = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(time);
select ename,to_char(hiredate,'YYYY-MON-DD') as hiredate from emp;
to_char经常使用在查询操作中,期望以某种特定的格式显示日期的时候
to_char函数的作用:将“数字”转换成“字符串”。
to_char函数的语法:to_char(数字,'数字格式'),运算结果是字符串类型。
案例:查询每个员工的工资,并且以“L999,999.00”格式显示。
select ename,to_char(sal,'L999,999.00') as sal from emp;
结论:to_char函数还是多用在查询操作中,希望以特定格式显示,就需要调用to_char函数,
起到格式化的作用。
9.to_number函数的作用:将“字符串数字”转换成“数字类型”。VARCHAR-->NUMBER
to_number函数的语法:to_number('字符串数字','数字格式'),运算结果是数字类型。
关于数字格式:
回顾java中的数字格式:
# 任意数字
, 千分位
. 小数点
0 不够补0
Oracle中的数字格式:
9 任意数字
, 千分位
0 不够补0
. 小数点
$ 美元符号
L 本地货币符号
找出工资是'$3,000.00'的员工
select ename,sal from emp where sal=to_number('$3,000.00','$999,999.99');
- ORACLE数据库常识
- oracle数据库常识
- Oracle数据库常识
- Oracle 数据库Patch概念性小常识
- oracle数据库的基本操作和常识
- Oracle常识
- Oracle 常识
- Oracle常识
- oracle常识
- oracle常识
- 数据库常识
- 数据库常识
- 小常识:在Oracle数据库中如何给用户解锁
- 【转Oracle补丁】老托的Oracle 数据库Patch概念性小常识
- 【转Oracle补丁】老托的Oracle 数据库Patch概念性小常识
- 【转Oracle补丁】老托的Oracle 数据库Patch概念性小常识 PSU,CPU,bundle patch
- oracle 小常识
- Oracle小常识(三)
- Installation error: INSTALL_FAILED_UID_CHANGED解决办法总结
- 为什么谷歌CardDAV不是服务器
- 【Java】Java基础知识3. tip1~10
- openwrt上使用openssl对文件加密
- Linux 下如何产生core文件(core dump设置)
- Oracle数据库常识
- 【玩转Android-01】AndroidXML文件解析之Pull解析
- 生产环境参数实例及分析【生产环境实例增加中】
- Android 中解析xml的类、它们 的原理和区别?
- rpm与dpkg yum与apt-get详解,一看这个就知道这些个关系了
- Fragment中包含surfaceView出现闪屏问题解决方法
- freemarker实现动态生成内容
- mssqlserver 复制拷贝附件sql脚本(一)
- CSRF攻击