oracle 小知識

1.給數字加上千分位分隔符git

  select to_char(11111111111111111.25,'FM999,999,999,999,999,990.00') from dual;sql

另外:select to_char(0.3,'99.00') from dual 結果:‘   .30’;select to_char(0.3,'90.00') from dual 結果:‘  0.30’數據庫

2.顯示單引號字符oracle

(1)select 'it''s a bird' as phrase from dual;ide

(2)select q'(it's a bird)' as phrase from dual;函數

3.關於日期的獲取post

取當前日期前一個月的第一天的日期測試

SELECT last_day(add_months(SYSDATE, -2)) + 1  FROM dual;
 
取當前日期前一個月的最後一天的日期
SELECT last_day(add_months(SYSDATE, -1)) FROM dual;
 
本月的第一天和最後一天
select to_char(trunc(sysdate,'MONTH'),'yyyy-mm-dd') First_DayOfMonth,to_char(last_day(trunc(sysdate,'MONTH')),'yyyy-mm-dd') Last_DayOfMonth  from dual;
 
任意日期的最後一天
SELECT LAST_DAY(DATE'2016-09-23') FROM DUAL;
4.select 字段加雙引號 「字段」問題

  一、oracle表和字段是有大小寫的區別。oracle默認是大寫,若是咱們用雙引號括起來的就區分大小寫,若是沒有,系統會自動轉成大寫。大數據

  二、咱們在使用navicat使用可視化建立數據庫時候,navicat自動給咱們加上了「」。
5.oracle中惟一性約束unique與主鍵/主碼primary key的區別在於:
  Primary key既限制了惟一性又不容許爲空;而unique只限制了非空字段的惟一性,它是容許爲空的,並且容許重複的空值。
6.關於NULL
  NULL空值是比較特殊的類型,在進行數據處理時應給予關注或作NVL非空處理。
  不能用 = 或 <> 與空值判斷,而應是IS/NOT NULL;NOT/IN()數據包含空值均爲空;與空值比較時始終爲真;order by字段包含空值則空值在末尾......
7.between...and...先後爲同一值時,sql 結果集爲0。
  SELECT * FROM A009 WHERE COL3 BETWEEN '001' AND '001';
8. TRUNC(number,num_digits)
  trunc是一種函數,功能是截取日期或數字,返回指定的值(根據num_digits決定)。
9. 執行存儲過程
(1)exec procedure_test;
(2)begin
       procedure_test;
       end;
       /
10. Oracle中執行存儲過程call和exec區別

在sqlplus中這兩種方法均可以使用: spa

exec pro_name(參數1..); call pro_name(參數1..); 

區別: 
1. 可是exec是sqlplus命令,只能在sqlplus中使用;call爲SQL命令,沒有限制. 

2. 存儲過程沒有參數時,exec能夠直接跟過程名(能夠省略()),但call則必須帶上().
11. 修改oracle用戶密碼永不過時
  1.  

    查看用戶的proifle是哪一個,通常是default:

    sql>SELECT username,PROFILE FROM dba_users;

  2.  

    查看指定概要文件(如default)的密碼有效期設置:

    sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

  3.  

    將密碼有效期由默認的180天修改爲「無限制」:

    ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

    修改以後不須要重啓動數據庫,會當即生效。

  4.  

    修改後,尚未被提示ORA-28002警告的賬戶不會再碰到一樣的提示;

    已經被提示的賬戶必須再改一次密碼,舉例以下:

     $sqlplus / as sysdba

    sql> alter user smsc identified by <原來的密碼> ----不用換新密碼

 12. 修改oracle用戶密碼
以SYSDBA身份登錄時能夠修改其餘用戶的密碼,好比:
SQL> alter user user01 identified by user01;
13.多個case...when...語句時,若是case條件有重疊,則遵循前面優先的原則進行判斷。
14.給表重命名
   ALTER TABLE old_name RENAME TO new_name
15.取整數
--1.取整(大)    
    select ceil(-1.001) value from dual   ;

--2.取整(小)   

select floor(-1.001) value from dual  ; 

--3.取整(截取) 

select trunc(-1.002) value from dual    ;   

--4.取整(舍入)   

        select round(-1.001) value from dual;

16.在同一個 PLSQL窗口中,不能同時定義執行多個觸發器,不然會報PLS-01003錯誤

17.oracle數據庫對象命名能夠有「.」小數點符號,但使用時必須加雙引號。如:create table "tab.tab1"

18.對於較大數據量的表,create新表要比update錶速度快得多

19.存儲過程調試需在測試窗口

20.分組合並字符串:

select id,WMSYS.WM_CONCAT(oid) oid
from table1
group by id

 21.regexp_like http://blog.csdn.net/qq_21909121/article/details/73469118
--查詢value中以1開頭60結束的記錄而且長度是7位
select * from gyj where value like '1____60';
select * from gyj where regexp_like(value,'1....60');
 
22.PLSQL窗口執行多條數據操做語句時,每條語句後未commit,需全部語句執行完最後在窗口功能按鈕一次提交。
相關文章
相關標籤/搜索