日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle insert 当前时间_Oracle知识点总结

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle insert 当前时间_Oracle知识点总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1、Oracle的安裝與下載
2、基礎查詢
3、條件查詢
?? ?1)對比運算符
?? ?2)邏輯運算符
?? ?3)模糊查詢
?? ?4)排序
4、函數
?? ?1)數值函數
?? ?2)字符函數
?? ?3)時間日期函數
?? ?4)轉換函數
?? ?5)通用函數
5、聚合函數
6、分組查詢

在學習Oracle之前,需要先有一定的數據庫基礎知識。

一、Oracle的安裝與下載

Oracle的安裝與下載,請看博客:https://blog.csdn.net/wei_li_2015/article/details/80835614

二、基礎查詢

1.sql語言的類型有哪些

DDL:數據定義語言,創建(create),修改(alter),移除(drop)
DML:數據操作語言, 增加(insert),刪除(delete),修改(update)
DQL:數據查詢語言,查詢(select)
DCL:數據控制語言,對用戶授權撤權(grant,revoke)
TCL:事務控制語言,提交(commit),回滾(rollback),保存點(savepoint)

2. Scott用戶表的說明

3. 查詢的語法

語法說明:

????<> :表示必須的
????[]:表示可選。

select [distinct] *| [as 別名]? from ? [別名] [where ]


示例:

--查詢所有的員工信息

select * from emp;

--需求:查詢員工的姓名,去重復

select distinct ename from emp;

--需求:查詢員工的姓名,返回的字段名使用表的別名指定

select distinct a.ename from emp a;

--需求:查詢員工的姓名,返回的字段名使用表的別名指定.將返回的字段修改為‘c’

select distinct a.ename as 員工姓名 from emp a;

二、條件查詢

1、對比運算符

運算符

說明

=

等于

>?

大于

小于

>=

大于等于

<=

小于等于

<>?

!=

不等于,沒有區別。

<>這個是標準SQL的不等于,所有的數據庫都支持,!=非SQL標準的不等于,就有某一些數據庫不支持。

in

列表對比運算符

is [not] null

判空

between .. and..

范圍對比運算符

?

--需求:查詢員工部門編號為10,或者20的員工。

select * from dept where deptno in (10,20);

--需求:查詢員工的獎金不為null的員工。

select * from emp where COMM is not null;

--需求:查詢員工的工資在1600和3000 之間的員工。包括上下限。

select * from emp where sal between 1600 and 3000;

select * from emp where sal>= 1600 and sal<=3000;

--需求:查詢員工的入職時間在1981-9-28至1982-1-23的員工,包括上下限。

select * from emp where hiredate between to_date('1981-09-28','yyyy-mm-dd') and to_date('1982-01-23','yyyy-mm-dd');

在該示例中涉及時間的轉換,在后面會總結到,該處不做過多的總結。

2、邏輯運算符

運算符

說明

AND

與,并且

OR

或,或者

NOT

非,不

--邏輯運算符

--AND

--需求:查詢員工的工資在1600和3000 之間的員工。不包括上下限。

select * from emp where sal > 1600 and sal<3000;

--OR

--需求:查詢員工部門編號為10,或者20的員工。

select * from emp where deptno =10 or deptno=20;

--NOT

--需求:查詢員工的工資不在1600和3000 之間的員工。包括上下限。

--1600以下

--3000以上

select * from emp where sal not between 1600 and 3000;

3、模糊查詢

1、特殊字符

  • 如果遇到,匹配的字符就是一個特殊字符,那么需要轉義。

  • 定義一個轉義字符來實現,定義的轉義符可以是任何字符,只是我們習慣使用\

  • ?_代表是匹配一個字符

  • %代表是匹配任何的字符

--模糊查詢

--like

--需求:查詢第三個字母為A,的員工

select * from emp where ename like '__A%';

--需求:查詢名字有_的員工

select * from emp where ename like '%\_%' escape '\';

4、排序

關鍵字:desc 和 asc

--需求:根據工資的從高到低排序

select * from emp order by sal desc;

--需求:根據部門編號從低到高排序

select * from dept order by deptno asc;

--需求,按部門編號升序排序,然后每個部門按工資從高到低排序。

select * from emp order by deptno asc,sal desc;

三、函數

1、數值函數

數值函數,就是處理數值。

1)四舍五入函數round(p,s)
??? p:原值

??? s:精度,如果是正數,表示小數點后的位數,如果是0,表示忽略小數點后的位數,如果是負數,即使從右到左,精確正數部分。

--需求:統計所有員工的平均工資,保留四位小數,四舍五入

select round(avg(sal),4) from emp;

--需求:統計所有員工的平均工資,保留三位小數,四舍五入

select round(avg(sal),3) from emp;

--需求:統計所有員工的平均工資,保留到個位

select round(avg(sal),0) from emp;

--需求:統計所有員工的平均工資,保留到十位

select round(avg(sal),-1) from emp;

2)數值截取函數??trunc(p,s)

p:原值

s:精度,如果是正數,表示小數點后的位數,如果是0,表示忽略小數點后的位數,如果是負數,即使從右到左,精確正數部分。

--需求:統計所有員工的平均工資,保留四位小數

select trunc(avg(sal),4),avg(sal) from emp;

--需求:統計所有員工的平均工資,保留到十位

select round(avg(sal),-1) from emp;

2、字符函數

字符函數:就是處理字符

1)字符函數 length(p)

字符長度計算函數,p:表示原值

--需求:計算員工的名字的長度

select length(ename),ename from emp;

2)替換函數? replace(p,c1,c2)

p:原值

c1:需要替換的值(舊值)

c2:替換后的值(新值)

--需求:my name is itcast 修改 my 為 your

select replace('my name is liwei','my','your') from dual;

--如果c2沒有值,表示直接刪除c1的值

select replace('my name is liwei','my') from dual;

3)偽表:dual

  • 在Oracle里面,查詢都是使用select關鍵字的。而select關鍵字語法為:select 返回結果 from ?。

  • 但是在查詢一些情況是沒有表的,查詢函數,查詢運算的結果,查詢關鍵字。Oracle在查詢這些沒有表的數據時,使用一個臨時表來存儲。這個臨時表就是偽表dual;

  • dual的作用就是查詢沒有表的數據時,用于維持select的語法的需要。

  • 反正,沒有表的數據查詢時,統一使用dual

--如:查詢7+8的結果

select 7+8 from dual;

--如:查詢當前用戶

select user from dual;

--如:查詢當前的日期

select sysdate from dual;

3、日期時間函數

日期時間函數:就是處理日期時間的

1)日期函數

--如:查詢當前的日期

select sysdate from dual;

2)月份增加函數 add_months(p,m)
p:原值
m:增加的月份數,如果是正數就是加,如果是負數就是減

--需求:計算當前日期的5個月后的日期

select add_months(sysdate,5) from dual;

--需求:計算當前日期的5個月前的日期select add_months(sysdate,-5) from dual;

3)日期月份對比函數 months_between(d1,d2)

日期月份對比函數,返回兩個日期的月份間隔

作用:

用于計算兩個日期的月份區間
對比兩個日期的大小如果d1>d2,返回正數,如果 d1

--需求:計算當前日期,和2017-01-14.的月份間隔

select months_between(sysdate,to_date('2017-01-14','YYYY-MM-DD') ) from dual;

4)日期時間提前函數
extract(year|month|day|hour|minute|seconnd from |)

--需求:提前當前日期的年月日

--提取年

select extract(year from sysdate) from dual;

--提取月

select extract(month from sysdate) from dual;

--提取日

select extract(day from sysdate) from dual;

--提取時

--12小時制

select extract(hour from to_timestamp('2017-08-14 11:48:20','yyyy-mm-dd hh:mi:ss')) from dual;

--24小時制

select extract(hour from to_timestamp('2017-08-14 13:48:20','yyyy-mm-dd hh24:mi:ss')) from dual;

--提取分

select extract(minute from to_timestamp('2017-08-14 13:48:20','yyyy-mm-dd hh24:mi:ss')) from dual;

--提取秒

select extract(second from to_timestamp('2017-08-14 13:48:20','yyyy-mm-dd hh24:mi:ss')) from dual;

--oracle支持另種寫法,不用to_timestamp函數,使用timestamp關鍵字

--提取秒

select extract(second from timestamp '2017-08-14 13:48:20') from dual;

4、轉換函數

轉換函數:就是實現類型的轉成

1)字符串轉成日期? to_date(p,f)
p:原值
f:格式,年YYYY,月MM,日DD,時HH24,分MI,秒SS

select to_date('2017-08-14','YYYY-MM-DD') from dual;

2)字符串轉時間? to_timestamp(p,f)
p:原值
f:格式,年YYYY,月MM,日DD,時HH24,分MI,秒SS

select to_timestamp('2017-08-14 13:11:30','YYYY-MM-DD HH24:MI:SS') from dual;

3)將其他類型的值轉成字符串

將其他類型的值轉成字符串

將當前日期轉成字符串
to_char(p,f)

p:原值
f:格式,年YYYY,月MM,日DD,時HH24,分MI,秒SS

select to_char(sysdate,'yyyy-mm-dd') from dual;

select to_char(sysdate,'yyyy/mm/dd') from dual;

4)將數值類型轉成字符串? to_char(p,f)
p:原值
f:數值的占位符是9

--需求:將8978767976,轉為$8,978,767,976

select to_char(8978767976,'$9,999,999,999') from dual;

5、通用函數

通用函數:一些幫助函數,空處理

1)空處理函數
nvl(p,v1):如果p的值為null,就返回v1.
nvl2(p,v1,v2):如果p的值不為null,返回v1,為null返回v2;

--需求:查詢有獎金員工

--nvl

select comm,nvl(comm,0) from emp;

select * from emp where nvl(comm,0)<>0;

--nvl2

select comm,nvl2(comm,comm,0) from emp;

select * from emp where nvl2(comm,comm,0)<>0;

四、聚合函數

聚合函數:就是用于統計

?max()
?min()
?count()
?sum()
?avg()
所謂的多行函數就是聚合函數,非聚合函數的其他函數就是單行函數。

五、分組查詢

1、分組查詢時什么

數據庫是支持統計數據功能,統計包括了最大值,最小值,平均值,總數,總記錄數
如果我們需要按某種字段分類后再統計呢?
我們將按某個字段分類稱為分組。

2、分組的作用

分組的作用實現將某種字段分類,再統計這個類型的統計數據。

--需求:統計員工工資的最大值,最小值,平均值,總數

select max(sal),min(sal),avg(sal),sum(sal) from emp;

--需求:按部門分組,求每個部門的最大工資和平均工資

select deptno,max(sal),avg(sal) from emp group by deptno;

--需求:按部門分組,求每個部門的最大工資和平均工資,平均工資在2000以上

--問題:使用where,還是having?

--答:因為平均工資是在分組后才可以獲得,所以使用優先級別在group by后面的having來判斷

--查詢語句的關鍵字是有優先級別的

--from > where > group by >having > select > order by

select deptno,max(sal),avg(sal) from emp group by deptno having avg(sal)>2000;

--問題:如果判斷的條件不需要分組就可以獲得,使用where.

--為什么:如果在分組前就可以過濾掉這些數據,就可以查詢時的效率。

總結

以上是生活随笔為你收集整理的oracle insert 当前时间_Oracle知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。