一、日期处理函数date
1)常用的日期格式:
A)yyyy-mm-dd:年,月,日
B)yyyy-mm-dd hh24:mi :ss
年,月,日,时,分,秒;
C)oracle默认的日期格式:dd-mon月-yy
eg:22-12-12 2012年12月22日
2)sysdate:当前的系统时间;sysdate以天为单位;
eg:select sysdate from dual;
3)to_char(日期数据,“日期格式”)函数:
将日期格式转换为字符串格式
a) To_char(日期数据,‘日期格式’)
b) 使用to_char()函数获得日期的某一个部分
Eg:Select sysdate ,to_char(sysdate,’mm’) from dual
4)to_data(“日期char格式”,“日期格式”):转换为对应日期格式
5)months_between(d1,d2):两个日期之间间隔多少个月
6)add_months(d1,数值):日期d1的数值个月后的日期;
7)DATEDIFF(日期1,日期2):计算两个日期之间的间隔,需要+1;eg:DATEDIFF('2019-05-01','2019-03-01')+1
AddDate() 增加一个日期(天、周等)
AddTime() 增加一个时间(时、分等)
CurDate() 返回当前日期
CurTime() 返回当前时间
Date() 返回日期时间的日期部分
DateDiff() 计算两个日期之差
Date_Add() 高度灵活的日期运算函数
Date_Format() 返回一个格式化的日期或时间串
Day() 返回一个日期的天数部分
DayOfWeek() 对于一个日期,返回对应的星期几
Hour() 返回一个时间的小时部分
Minute() 返回一个时间的分钟部分
Month() 返回一个日期的月份部分
Now() 返回当前日期和时间
Second() 返回一个时间的秒部分
Time() 返回一个日期时间的时间部分
Year() 返回一个日期的年份部分
二、关联查询
关联查询一:
所需要查询的数据来源于多张表,使用表的关联(表连接)查询来连接多张表,查询对应的每张表中的数据;
1)格式:select 别名1.*/列名,别名2.*/列名
from 表1 别名1,表2 别名2
Where 关联条件;
2) 笛卡尔积:在多表连接查询中,出现两张表之间数据的任意的组合
现象,在实际企业中,一定不要出现笛卡尔积;多表连接查询中,必须要加入关联条件,去掉笛卡尔积;
3) 关联条件:根据两张表之间的关联关系,设计关联条件,比如:emp表中deptno(员工所属部门的编号)跟dept表
中的deptno(部门编号)对应;
等值连接、非等值连接:
1)关联条件是通过“=”连接起来,称为等值连接。
2)非等值连接:关联条件不是通过“=”来连接;
eg:
select e.ename 姓名,e.sal 薪资,e.eid 编号,
s.grade 工资等级
from emp e,salgrade s
where e.sal between s.losal and hisal
自连接
表中列之间具有关联关系,可以把一张表当成两张表,然后在连接查询。关联条件是表中两个相关联的列值相等;
eg:
select e.ename 姓名,e.empno 编号,e.email 邮箱,e.sal 工资,e.mgr,m.empno 上级编号
from emp e,emp m
where e.mgr=m.empno
内连接
查询先关联的属性(列值),也可以标准sql实现内连接,不常用,知道就好(了解)
格式:
select 别名1.*/列名,别名2.*/列名
from 表1 别名1 inner join 表2 别名2
on 关联条件
外连接:
外连接:在查询的时候可以以某一张表为主,查询所有的所有的数据,以及与之关联的另外一张或者多张表中的数据(常见)
一、仅在Oracle中使用:在关联条件的位置(在要查询所有数据的表的对面的表加)使用“+”,查询某一张表中所有的数据(自己理解:哪边少就在哪边“+”)
4)注意:不能在关联条件的两端都加上关联条件,只能在某一端加“+”
5)Oracle中使用(+)实现外连接操作,仅仅只能在Oracle中使用。
标准左外连接
1)左外连接:以左边的表为主,查询左表中所有的数据以及与之关联的右表中的数据。
格式:
Select 别名1.*/列名,别名2.*/列名
From 左表 别名1 left outer join 右表 别名
On 关联条件
注意:格式中的outer可以省略;
如果还有where条件,where放在on后面
2)右外连接:以右表为主,查询右表中所有的数据以及与之关联的左表中的数据
格式:
Select别名1.*/列名,别名2.*/列名
From 左表 别名1 right outer join 右表 别名2
On 关联条件
注意:格式中的outer可以省略;
3)全外连接:查询所有表中所有的数据
格式:
Select 别名1.*/列名,别名2.*/列名
From 表1 别名1 full outer join 表2 别名2
On 关联条件
子查询:
子查询(嵌套查询):在一条查询语句内部,又包含另一条查询语句
注意:重新派生的新表需要加上 别名