empinfo Oracle数据库,Oracle数据库中相关技术详细操作
1.Distinct消除重復(fù)行數(shù)據(jù):SELECT?DISTINCT?DEPTNO?FROM?EMP
2.NULL操作
如果某條記錄中有缺少的數(shù)據(jù)值,就是空值(NULL值)??罩挡坏扔?或者空格,空值是指未賦值、未知或不可用的值。
任何數(shù)據(jù)類型的列都可以包括NULL值,除非該列被定義為非空或者主鍵。
在查詢條件中NULL值用IS NULL作條件,非NULL值用IS NOT NULL做條件:SELECT?ENAME,JOB,SAL,COMM?FROM?EMP?WHERE?SAL<2000?AND?COMM?IS?NULL;
3.IN 操作在Where子句中可以使用IN操作符來(lái)查詢其列值在指定的列表中的行。對(duì)應(yīng)IN操作的還有NOT IN,用法一樣,結(jié)果相反。:SELECT?ENAME,JOB,SAL?FROM?EMP???WHERE?job?IN?('SALESMAN',?'PRESIDENT',?'ANALYST');
4.BETWEEN…AND
5.
在WHERE子句中,可以使用BETWEEN操作符來(lái)查詢列值包含在指定區(qū)間內(nèi)的行。BWTWEEN操作所指定的范圍也包括邊界。SELECT?ename,job,sal?FROM?EMP?WHERE?sal?BETWEEN?1000?AND?2000
oracle 集合運(yùn)算
?集合運(yùn)算就是將兩個(gè)或者多個(gè)結(jié)果集組合成為一個(gè)結(jié)果集。集合運(yùn)算包括:
INTERSECT(交集),返回兩個(gè)查詢共有的記錄。
UNION ALL(并集),返回各個(gè)查詢的所有記錄,包括重復(fù)記錄。
UNION(并集),返回各個(gè)查詢的所有記錄,不包括重復(fù)記錄。
MINUS(補(bǔ)集),返回第一個(gè)查詢檢索出的記錄減去第二個(gè)查詢檢索出的記錄之后剩余的記錄。
當(dāng)使用集合操作的時(shí)候,要注意:查詢所返回的列數(shù)以及列的類型必須匹配,列名可以不同。
例子:查詢出dept表中哪個(gè)部門下沒有員工。只需求出dept表中的部門號(hào)和emp表中的部門號(hào)的補(bǔ)集即可SELECT?DEPTNO?FROM?DEPT?MINUS?SELECT?DEPTNO?FROM?EMP
?把一個(gè)結(jié)果集插入到另一張結(jié)構(gòu)相同的表中 ,使用union把若干條記錄一次性插入到一張表中
INSERT INTO DEPT ? SELECT 50,'公關(guān)部','臺(tái)灣' FROM DUAL ? UNION ? ?SELECT 60,'研發(fā)部','西安' FROM DUAL ? UNION ? SELECT 70,'培訓(xùn)部','西安' FROM DUAL
?like模糊查詢
一般like模糊查詢 如下:select?b.*?from?b_city_info?b?where?b.c_name?like?'%西藏%';---用時(shí):0.062?,此查詢將會(huì)進(jìn)行全表掃描
修改為如下的語(yǔ)句:select?b.*?from?b_city_info?b?where?b.c_name?like?'西藏%';--用時(shí):0.009
查詢執(zhí)行計(jì)劃將會(huì)變成(INDEX RANGE SCAN),成功的利用了name字段的索引
使用rowId實(shí)現(xiàn)分頁(yè)
--分頁(yè)第一步 獲取數(shù)據(jù)物理地址select?t.rowid?rid,?t.c_id?from?b_city_info?t?order?by?t.c_id?desc;
--分頁(yè)第二步 取得最大頁(yè)數(shù)select?rownum?rn,?rid
from?(select?t.rowid?rid,?t.c_id?from?b_city_info?t?order?by?t.c_id?desc)
where?rownum?<=?10;
--分頁(yè)第三步 取得最小頁(yè)數(shù)select?rn,rid
from?(select?rownum?rn,?rid
from?(select?t.rowid?rid,?t.c_id?from?b_city_info?t?order?by?t.c_id?desc)
where?rownum?<=?10)
where?rn?>?5;
--分頁(yè)第四步 再根據(jù)物理地址,查詢出具體數(shù)據(jù)select?t1.*,t1.rowid
from?b_city_info?t1
where?t1.rowid?in
(select?dt.rid
from?(select?rownum?rn,?rid
from?(select?t.rowid?rid,?t.c_id?from?b_city_info?t?order?by?t.c_id?desc)
where?rownum?<=?10000)dt
where?rn?>?5000);
Oracle日期和字符串、數(shù)字的格式化
1.select SYSDATE from dual t;--系統(tǒng)日期
2.select TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') from dual t;--格式化日期
3.select TO_DATE('20140630 18:28:20','YYYY/MM/DD HH24:MI:SS') from dual t;--格式化日期
4.select sysdate,sysdate - interval '7' MINUTE from dual;--當(dāng)前時(shí)間減去7分鐘的時(shí)間
5.select sysdate - interval '7' hour from dual;--當(dāng)前時(shí)間減去7小時(shí)的時(shí)間
6.select sysdate - interval '7' day from dual;--當(dāng)前時(shí)間減去7天的時(shí)間
7.select sysdate,sysdate - interval '7' month from dual;--當(dāng)前時(shí)間減去7月的時(shí)間
8.select sysdate,sysdate - interval '7' year from dual;--當(dāng)前時(shí)間減去7年的時(shí)間
9.select sysdate,sysdate - 8*interval '7' hour from dual;--時(shí)間間隔乘以一個(gè)數(shù)字
10.select to_number('222.2') from dual t;--輸出222.2
11.select to_char(10000000000,'$999,999,999,99') from dual;--按格式輸出
12.select to_char(1000000,'L99,999,99') from dual;--輸出 RMB10,000,00
13.select trunc(to_number('1000000.123'),3) from dual;--保留三位有效數(shù)字
?Dual虛擬表,只有一列
當(dāng)查詢時(shí)間或者日期這些對(duì)象的時(shí)候就需要使用這個(gè)表select?sysdate?from?dual
查詢當(dāng)前連接用戶select?user?from?dual;
?把字符串按照分割符分解成不同的部分select?regexp_substr('A,B,C,D,E',?'[^,]+',?1,?level,?'i')?as?str
from?dual
connect?by?level?<=
length('A,B,C,D,E')?-?length(regexp_replace('A,B,C,D,E',?',',?''))?+?1;
?將一張表的數(shù)據(jù)導(dǎo)入到另一張表中
前提:兩表結(jié)構(gòu)一樣insert?into?表A?select?*?from?表B
如果兩表的數(shù)據(jù)結(jié)構(gòu)不一樣
INSERT INTO 表1(字段1,字段2,字段n)
select 表2.字段1,表2.字段2,表2.字段n from 表2
?oracle 表數(shù)據(jù)恢復(fù)
第一中方式:創(chuàng)建一個(gè)備份表,存放三小時(shí)前的數(shù)據(jù)create?table?tabletest_2014bak?nologging?as
select?*?from?tabletest?as?of?timestamp?sysdate-21/24?where?name?!=?'boat';
第二種方式:回復(fù)表tabletest中的數(shù)據(jù)到某一個(gè)時(shí)間點(diǎn),這個(gè)時(shí)間點(diǎn)一定要前于當(dāng)前時(shí)間alter?table?tabletest?enable?row?movement;
Flashback?table?tabletest?to?timestamp?to_timestamp('2014-12-30?17:00:00','yyyy-mm-dd?hh24:mi:ss');
?Oracle修改原始表中字段的數(shù)據(jù)類型
方法一:
//?創(chuàng)建一樣的臨時(shí)表
create?table?T_BUSINESS_MODEL_TEMP??as?select?*?from??T_BUSINESS_MODEL?where?1=2?;
//?對(duì)臨時(shí)表改數(shù)據(jù)類型
alter?table?T_BUSINESS_MODEL_TEMP?modify?MODEL_MONEY?NUMBER(10,2);
//?將原表數(shù)據(jù)賦值到最新的表中
insert?into?T_BUSINESS_MODEL_TEMP?select?*?from?T_BUSINESS_MODEL;
//?刪掉原來(lái)的表
drop?table?T_BUSINESS_MODEL;
//?將臨時(shí)表重新命名為原表
alter?table?T_BUSINESS_MODEL_TEMP?rename?to?T_BUSINESS_MODEL;
//?添加原表的約束?(主鍵,外鍵,索引)
alter?table?T_BUSINESS_MODEL
add?constraint?PK_T_BUSINESS_MODEL?primary?key?(ID);
方法二:--?字段重命名
alter?table?PROJECT?rename?column?NAME?to?NAME1;
-----??把字段名稱改成原來(lái)的名稱
alter?table?PROJECT?add??NAME?VARCHAR2(300);
---?賦值
update?PROJECT?np
set?np.name=np.name1;
commit;
---?刪掉原來(lái)重命名的字段
alter?table?PROJECT?drop?column??NAME1;
?Oracle?遞歸查詢??START?WITH....CONNECT?BY?PRIOR......
SELECT?*?FROM?B_CITY_INFO???START?WITH?c_id=540000
CONNECT?BY?PRIOR?c_id=p_c_id?;
Oracle數(shù)據(jù)庫(kù)調(diào)用存儲(chǔ)過程和刪除該文由職坐標(biāo)整理并發(fā)布,了解更多相關(guān)內(nèi)容,請(qǐng)關(guān)注職坐標(biāo)Oracle數(shù)據(jù)庫(kù)頻道!
?
調(diào)用:set?serveroutput?on;
exec 存儲(chǔ)過程名;
刪除:
drop procedure 存儲(chǔ)過程名
該文由職坐標(biāo)整理并發(fā)布,了解更多相關(guān)內(nèi)容,請(qǐng)關(guān)注職坐標(biāo)Oracle數(shù)據(jù)庫(kù)頻道!
總結(jié)
以上是生活随笔為你收集整理的empinfo Oracle数据库,Oracle数据库中相关技术详细操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的工作网怎么样_分享一下我在珍爱网的相
- 下一篇: 日本字全角字符linux,Linux命令