熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

PL/SQL學習筆記(一)

2022-06-13   來源: Oracle 

  基本概念
                                                       
數據庫對象                                         
                                                          
表                                                   
                                                      
約束條件保證數據完整性                            
                                                   
視圖虛表命名的查詢語句                        
                                                     
索引加速查詢(加快查詢的速度)                 
                                                    
序列一串連續遞增或遞減的數字步長相同(代理鍵)
                                                                                                   
同義詞一個對象的另外一個叫法(對象的別名)                                                                                                
                                                                                             
存儲過程用於操作

  函數用作復雜運算的用於計算                                                                                         
                                                                                               
觸發器由事件觸發的存儲過程                                                                                         

  包

  數據庫安全

  用戶

  方案或模式(Schema)是用戶所對應的對象的集合用戶名等於方案名

  權限

  角色權限組一組權限
                                                      
配額(quota)允許被使用的空間用戶可以在表空間上可以使用的空間                                            
                                               
端口

  環境變量

  ORACLE_BASE基本目錄

  ORACLE_NAME 當前的主目錄

  ORACLE_NLS
使用USASCLL字符集時不用設

  PATH 路徑

  ////////////////////////////////////////////////////////////////////////////////////////////////////////////

  基本的SQL SELECT 語句

  口令中的第一個字符不能為數字

  語句

  (一)查詢SELECT
數據操作語句DML(數據的插入INSERT刪除DELETE修改UPDATE合並MERGE)

  (二)合並把一個表中的數據合並到另一個表中去如果數據在原表中存在做UPDATE否則INSERT(I獨有)

  (三)事務控制語句COMMIT 提交ROLLBACK 回滾

  SAVEPOINT 存儲點(與 ROLLBACK 搭配使用)在回滾的時候可以回滾到某個存儲點上否則回滾到最初起點上

  (四)數據定義語句對對象操作TRUNCATE 清除表中所有數據 /CREATE 創建 /DROP 刪除 /ALTER 修改 

  (五)權限控制語句(DCL)GRANT 授予權限 /REVOKE 移除權限

  SELECT

  SELECT 查詢列表 FROM 數據源

  *&* SQL命令必須加分號

  ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK
修改用戶   解鎖
給HR解鎖

  CONNECT(conn) HR/HR(密碼) 用HR用戶連接數據庫 
*&*(不是SQL命令 是 SQLPLUS 命令)不用加分號

  DESCRIBE(desc) DEPARTMENTS
關鍵字  表名

  描述表命令(SQLPLUS 命令)

  SQL語句說明

  ()語句文本的書寫不區分大小寫(但字符串在作為值的時候要注意大小寫)
)語句可以寫單行也可以寫多行
)關鍵字不能縮寫或跨行
)語句通常被分多行書寫
)縮進被用於提高語句的可讀性

  數字和日期都可以使用數學運算符建立表達式
+*/ <>不等於

  日期可以加減數字數字默認為天

  日期不能加日期但日期可以減日期

  字符不能加減

  定義空(NULL)值

  空值出現在表達式中會導致整個表達式的值為空

  NVL(字段名將要賦予的值)函數
作用將空值轉換成其他有ASCLL碼的值

  annual_salary年薪

  別名

  可以加中文的字段別名

  如果想強制地改變列名的大小寫可以在別名的定義時加上雙引號列名有空格時也要在列名上加雙引號

select lastname as employees name from employees;

  spool +路徑
保存命令(將顯示保存)

  連接操作符
 
 ||

  select lastname || work in || department_id from tablename;

  select last_name || s salary is || salary 員工月薪 from employees;
     ~~~ 
     在單引號中還要使用單引號的話就必須使用兩個單引號來實現一個單引號的功能 

  文本字符串

  *可以代表字符數字或是日期
*當代表字符或日期的時候用單引號括起來數字不需要

  在查詢時默認顯示所有的行包括有重復值的行

  DISTINCT 消除重復行關鍵字放在整查詢列表的最前面

  作用范圍整個查詢列表的組合

  消除重復行後會按字段的特性做升序排列(執行過程先排序再消除重復)

  select distinct department_idjob_id from employees;

  SQLPLUS 與 SQL 的關系

  SQL     *是一種語言
 *ANSI標准
 *關鍵字不能縮寫
 *用於操作數據庫中的數據和表的定義
  
SQLPLUS命令的功能

  *描述表的結構
*編輯SQL語句

  查詢 SQLPLUS 命令

  help + 命令

  SQLPLUSW 在 WINDOWS 下運行的分析器
 

  登陸ISQLPLUS

  ()先到服務中啟動OracleOraHomeHTTPServer

  ()在浏覽器中輸入//wnj:/isqlplus
       ~~~~~~~~~~~~~~~ 
       URL(網頁中的地址)
      
 

  SQLPLUS 命令

  與文件相關的命令
  spool + 路徑
 
 
 
 
   spool off

  save
把當前內存中的語句保存為文本文件

  run 或  /
運行當前內存中的語句

  clear buffer(cl buff)
清空當前內存中的語句

  start @
讀取並執行

  get
讀取不執行

  編輯命令

  list
列出一條語句
*表示當前行

  change
修改命令
原來c/jj/kk
c/jjj/xxx

  input
在當前行之後插入一行新的數據

  append
在當前行中插入新的東西

  n
寫數字顯示對應行

  delete
del + 回車 刪除當前行
del 刪除第一到第三行

  edit

  lciande

  查看當前用戶

  SHOW USER

  默認的日期格式
DDMONRR

  日期可以進行比較

  字符可以進行比較(以字母的ASCLL碼比較)

  IN(set)或NOT IN 匹配任何列表中的值

  LIKE 模糊匹配字符串值

  IS NULL 是否空值
IS NOT NULL 是否不為空

  BETWEEN 可以做數字日期和字符的比較

  通配符

  %
S_mith

  WHERE first_name like s/_%escape/;
    解釋這個符號後的下劃線為正常的字符
    如果不加將被視為通配符作用的下劃線

  _只能通配一個字符
主要用於通配固定位數的字符例如查詢月收入五位數以上的員工五位就可以用_來查詢

  邏輯操作符(用在WHERE子句中)

  AND

  OR

  NOT

  先執行 NOT 再執行 AND 最後執行 OR

  ORDER BY

  ORDER BY子句在 SELECT 語句的最後 

  ASC升序
DESC降序

  空值作為無窮大來處理

  rownum 顯示行數量約束的關鍵字(在結果中可以做代理鍵使用)

  可以按照查詢列表中序號進行排序

  系統在用戶寫出查詢列表的同時就賦予每個列名一個序號升序賦予

SELECT namephoneadress from;
                         

  單行函數對單行數據進行計算並返回一個值的函數

  *修改數據項
*接受參數返回一個值
*對每行進行操作
*每行返回一個結果
*可以修改數據類型
*可以嵌套

  character字符類型函數

  LOWER()強制小寫

  UPPER()強制大寫

  INITCAP()每個單詞首字母大寫

  可以用在WHERE子句中

  CONCAT()連接函數
    {
 SUBSTR(stringa[b])返回string的一部分a和b以字符為單位

  SUBSTRB(stringa[b])返回string的一部分a和b是以字節為單位

  SUBSTRC(stringa[b])返回string的一部分a和b是以UNICODE完全字符為單位

  SUBSTR(stringa[b])返回string的一部分a和b是以UCS代碼點為單位

  SUBSTR(stringa[b])返回string的一部分a和b是以UCS代碼點為單位

  以上函數都是返回string的一部分從字符位置A開始長為B個字符如果A是那它就被認為是(字符串的開始位置)如果A是正數那麼字符從左邊開始數如果是負數則從STRING的末尾開始從右邊數如果B不存在那麼缺省是整個字符串如果B小於將返回NULL如果A或B使用了浮點數那麼該數值首先被節取成一個整數返回類型與STRING相同
    }

  {
 LENGTH(string)
 LENGTHB(string)
 LENGTHC(string)
 LENGTH(string)
 LENGTH(string)
以上函數返回string的長度因為CHAR類型的值是填充空格的所以如果string是CHAR數據類型那麼末尾的空格算在長度之內如果string是NULL函數返回NULL
}

  {
 INSTR(stringstring[a][b])   返回string中包含string的位置a和b以字符為單位
 
 INSTRB(stringstring[a][b]) 返回string中包含string的位置a和b是以字節為單位 

  INSTRC(stringstring[a][b])返回string中包含string的位置a和b是以UNICODE完全字符為單位

  INSTR(stringstring[a][b]) 返回string中包含string的位置a和b是以UCS代碼點為單位

  INSTR(stringstring[a][b]) 返回string中包含string的位置a和b是以UCS代碼點為單位
以上函數返回string中包含string的位置從左邊開始掃描string起始位置是A如果A為負數那麼從右邊開始掃描第B次出現的位置將被返回A和B缺省都為即返回在string中第一次出現string的位置如果string在A和B的規定下沒有找到那麼就返回位置的計算是相對於string的開始位置的而不關A和B的取值
}

  LPAD(列名數字要補上的字符)左補位

  RPAD(列名數字要補上的字符)右補位

  TRIM(child_str FROM parents_str)將連續子串(只能有一個字符)從主串的兩邊截取出來區分大小寫
默認為截取空格

  LTRIM()左截取

  RTRIM()右截取

  ascii(x)函數返回X字符的十進制數即X的ASCII碼值

  chr(x)函數返回ASCII碼為X的字符

  length(x)函數求串X的長度與之相似的是lengthb(x)函數用在多字節字符中

  replace(xy[z])函數返回值為將串X中的Y串用Z串替換後的結果字符串若省略Z參數則將串X中為Y串的地方刪除

  soundex(x)函數返回串X的語音描述這個描述由個字符組成說明串X的聲音表示形式發音有時在只知道一個名字的發音而不知道拼寫情況下或許能用到
select soundex(smith) from dual; 返回值為S
 
translate(xyz)函數返回將X串中每個字符按它在Y串中出現的位置翻譯成Z串中相應位置的字符後的結果相當與替換
select translate(this is an examplemy is@#$%^&) from dual;

  NLS函數
除了NCHR這些函數都是以字符類型為參數返回字符類型值

  CONVERT(stringdest_charset[source_charset])

  將輸入string轉換為指定字符集dest_charsetsource_charset是輸入值的字符集——如果它沒有被指定則缺省為數據庫字符集輸入值可以是CHARVARCHARNCHARNVARCHARCLOB和NCLOB類型返回值為
VARCHAR類型如果dest_charset中沒有輸入字符串中的一個字符將會使用一個代替字符(由dest_charset定義)

  NCHR(X)

  返回數據庫國家字符集中值為X的字符NCHR(X) 等價於CHR(x USING NCHAR_CS)

  NLS_CHARSET_DECL_LEN(byte_widthcharset)

  返回一個NCHAR值的聲明寬度(以字符為單位)byte_width是該值以字節為單位的長度charset是該值的字符集ID

  NLS_CHARSET_ID(charset_name)

  返回指定字符集charset_name的數字ID為charset_name指定CHAR_CS將返回數據庫字符集的ID為charset_name指定NCHAR_CS將返回數據庫國家字符集的ID如果charset_name是一個無效字符集名將返回
NULLNLS_CHARSET_ID和NLS_CHARSET_NAME是互為反函數

  NLS_CHARSET_NAME([charset_id])

  返回指定字符集ID charset_id 的名字如果 charset_id 是一個無效字符集ID將返回NULL;

  NLS_INITCAP(string[nlsparams])

  以字符串中每個單詞第一個字符大寫而單詞中其余字母小寫的形式返回stringnlsparams指定了一個與該會話缺省的不同的排序次序如果沒有指定該參數NLS_INITCAP與INITCAP相同nlsparams應該采取下面的形式
NLS_SORT=sort其中sort是一個語言排序序列

  NLS_UPPER(string[nlsparams])

  以大寫形式返回string不是字母的字符不受影響如果沒有指定nlsparamsNLS_UPPER與UPPER相同

  NLS_LOWER

  以小寫形式返回string不是字母的字符不受影響如果沒有指定nlsparamsNLS_LOWER與LOWER相同

  NLSSORT(string[nlsparams])

  返回用於排序string的字符串字節所有值都被轉換為字節字符串這樣在不同數據庫之間就保持了一致性
如果沒有指定nlsparams那麼就會使用會話中缺省排序序列

  TRANSLATE(string USING {CHAR_CSINCHAR_CS})

  TRANSLATEUSING 將輸入string參數轉換為數據庫字符集(指定CHAR_CS)或數據庫國家字符集(指定NCHAR_CS)string可以是CHARVARCHARNCHARNVARCHAR類型如果指定CHAR_CS返回類型為VARCHAR如果指定NCHAR_CS返回類型為NVARCHARTRANSLATEUSING是CONVERT功能的子集
如果輸入值包含UCS字符或反斜線符號要使用UNSTR函數

  例
SQL> select translate(asd using NCHAR_CS) from dual;數據庫國家字符集

  TRANSL

asd

  SQL> select translate(asd using CHAR_CS) from dual;數據庫字符集

  TRA

asd

  UNSTR(s)

  返回轉換為數據庫UNICODE字符集的字符串s可包含escaped UCS 代碼點字符它由一個反斜線符號加上十六進制代碼點數字組成因此要在字符串中包含一個反斜線符號就必須使用雙反斜線符號(\\)UNISTR與
TRANSLATEUSING相似差別是它僅能轉換為UNICODE而且可以包含escaped 字符

  general
//number
//conversion
//date

  多行函數對多行數據(一組數據)進行計算並返回一個值的函數


From:http://tw.wingwit.com/Article/program/Oracle/201311/18007.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.