MySQL:DQL(数据查询)语句(二):日期处理函数date、关联查询

一、日期处理函数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 关联条件

子查询:

子查询(嵌套查询):在一条查询语句内部,又包含另一条查询语句

注意:重新派生的新表需要加上 别名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值