欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
ORACLE 基礎 - xlisan的日志 - 網(wǎng)易博客

一.Oracle數據類(lèi)型
1.字符數據類(lèi)型
  .>   char:可以存儲字母數字值,長(cháng)度在1到2000個(gè)字節。
  .>   varchar2:存儲可變長(cháng)度的char類(lèi)型字符串,大小在1到4000個(gè)字節范圍內。
   .>   long:存儲可變長(cháng)度的字符數據,最多存儲2GB。
 long類(lèi)型的使用限制:       
 **************************************
 *{
 *..  一個(gè)表中只有一列可以為long數據類(lèi)型。
 *..  long列不能定義為唯一約束或主鍵約束。
 *..  long列上不能建立索引。
 *..  過(guò)程或存儲過(guò)程不能接受long數據類(lèi)型的參數。
 *}
 ***************************************
2.數字數據類(lèi)型
.>   number:存儲正數,負數,零,定點(diǎn)書(shū)和精度為38位的浮點(diǎn)數。
     number類(lèi)型的格式:
  number[(p[,s])]
         其中p為精度,表示數字的總位數; s為范圍,表示小數點(diǎn)右邊的位數,它在-84至127之間。
3.日期時(shí)間數據類(lèi)型
.>   date:存儲表的日期和時(shí)間數據,使用7個(gè)字節固定長(cháng)度,
    每個(gè)字節分別存儲世紀,年,月,日,小時(shí),分和秒;值從公元前4712年1月1日到公元9999年12月31日。
    {
       Oracle中的sysdate函數功能是返回當前的日期和時(shí)間。
    }
.>   timestamp:存儲日期的年,月,日以及時(shí)間的小時(shí),分和秒值。其中秒值精確到小數點(diǎn)后6位,同時(shí)包含時(shí)區信息。
    {
       Oracle中的systimestamp函數功能是返回當前日期,時(shí)間和時(shí)區。
    }
4.raw和long raw數據類(lèi)型(二進(jìn)制數據)
.>  raw: 存儲基于字節的數據。最多存儲2000個(gè)字節,使用需指定大小。raw數據類(lèi)型可以建立索引。
.>  long raw: 存儲可變長(cháng)度的二進(jìn)制數據。最多能存儲2GB;不能索引。與long類(lèi)型的限制同效。
5.lob數據類(lèi)型('大對象')
    ***********************************
    * lob類(lèi)型可以存儲多達4GB的非結構化信息。
    * Oracle中的表可以有多個(gè)lob列,每個(gè)lob列可以是不同的lob類(lèi)型。
    ***********************************
.>  clob: 存儲大量的單字節字符數據和多字節字符數據。例:非結構化的XML文檔。
.>  blob: 存儲較大的二進(jìn)制對象。例:圖形,視頻,音頻等。
.>  bfile: 文件定位器;指向位于服務(wù)器文件系統是的二進(jìn)制文件(存儲一個(gè)文件路徑)。
     -----------------------------------------------------------------------------------------------------------------------
6.Oracle中偽列
.> rowid: 返回行地址,可用來(lái)定位表中的一行??梢晕ㄒ坏貥俗R數據庫中的一行。
 重要的用途
 ****************************
 *..  能一最快的方式訪(fǎng)問(wèn)表中的一行
 *..  能顯示表的行是如何存儲的
 *..  可以作為表中行的唯一標識
 ****************************
.> rownum: 對于一個(gè)查詢(xún)返回的每一行進(jìn)行標識;可用于限制查詢(xún)返回的行數。(不是數據表的實(shí)際列)

二.Oracle中的sql操作符
.>算數操作符:
 包括: +(加),-(減),*(乘),/(除)
  *和/具有相同的優(yōu)先級,+和-j具有相同的優(yōu)先級,*和/的優(yōu)先級高于+和-??捎眯±ㄌ杹?lái)控制計算順序。
.>比較操作符:
 包括:=(相等),!=(不相等),<(小于),>(大于),<=(小于等于),>=(大于等于)
       between....and...(檢查是否在兩個(gè)值之間)
       in(與列表中的值相匹配)
       link(匹配字符模式<模糊匹配>)
       is null(檢查是否為空)
.>邏輯操作符:
 包括:
      and(與),or(或),not(非)
.>集合操作符:
 包括:
      union(聯(lián)合):返回兩個(gè)查詢(xún)選定的所有不重復的行。
      union all(聯(lián)合所有):合并兩個(gè)查詢(xún)選定的所有行,包括重復的行。
      intersect(交集):返回兩個(gè)查詢(xún)共有的行。
             minux(減集):返回有第一個(gè)查詢(xún)選定但是沒(méi)有被第二個(gè)查詢(xún)選定的行。
.>連接操作符:
      || : 將兩個(gè)或多個(gè)字符串合并成一個(gè)字符串,或者將一個(gè)字符串與一個(gè)數值合并在一起。


操作符的優(yōu)先級
************************************************
*算數操作符  高
*連接操作符  |
*比較操作符  |
*not邏輯操作符  |        
*and邏輯操作符  |
*or邏輯操作符           低                              
************************************************

三.SQL函數
.>日期函數
 add_months(d,n)<d是日期,n是月數>:返回指定日期加上指定月數后的日期值。
 months_between(d1,d2)<d1,d2都是兩個(gè)日期>:返回兩個(gè)日期之間的月數。
 last_day(d)<d是日期>:返回指定日期當月的最后一天的日期值。
 round(d,[fmt])<d是日期,fmt指定格式模型>:返回日期值,此日期四舍五入為格式模型指定的單位。
   (fmt是一個(gè)選項,默認舍入為最靠近的那一天。
   如果格式為‘year’則舍入到年的開(kāi)始,即1月1日;
   如果格式為‘month’則舍入到月的第一天;
   如果格式為‘day’則舍入到最靠近的星期天。
   )    
 next_day(d,day)<d是日期,day指定周內任何一天 如‘星期一’>:返回指定的下一個(gè)星期幾的日期。
 trunc(d,[fmt])<d是日期,fmt指定格式模型>:返回日期值,指定日期截斷為格式模型指定的單位的日期。
   (與round函數類(lèi)似,不同的是它只舍不入。)
 extract(fmt from d)<fmt指定格式模型,d是日期>:提取日期時(shí)間類(lèi)型中的特定部分。  
   (fmt取值可以是:year,month,day,hour,minute,second;注意此處的格式不能使用單引號。)
.>字符函數  
 函數     說(shuō)明  輸入         輸出結果
 initcp(char)       首字母大寫(xiě) select initcap('hell0') from dual     Hello
 lower(char)    轉換為小寫(xiě) select lower('FUN') from dual      fun
 upper(char)    轉換為大寫(xiě) select upper('sun') from dual      SUN
 ltrim(char,set)    左剪裁  select ltrim('xyzadams','xyz') from dual    adams
 rtrim(char,set)    右剪裁  select rtrim('xyzadams','ams')from dual            xyzad
 translate(char,from,to)   按字符翻譯 select translate('jack','abcd','1234') from dual   j12k
 peplace(char,search_str,replace_str) 字符串替換 select replace('jack and jue','j','bl') from dual  jack and blue
 instr(char,substr[,pos])  查找子串位置    select instr('worldwide','d') from dual     5 
 substr(char,pos,len)   取子字符串      select substr('abcdefg',3,2) from dual     cd
 concat(char1,char2)   連接字符串      select concat('Hello','world') from dual     Helloworld 
 =================================
 ..  chr(int)<int是ASCII碼>:根據ASCII碼返回對應的字符。
 ..  lpad(str,int,char)和rpad(str,int,char)<str是源字符串,int指定總長(cháng)度,char是填充的字符>:用指定的字符(左|右)填充源字符串到指定長(cháng)度。
 ..  trim([[leading|trailing] trim_char] from trim_sourse)<trim_char指定裁剪的字符,trim_sourse是源字符串>
  (
   此函數組合了ltrim和rtrim的功能。
   leading選項時(shí)與ltrim相似,裁減與trim_char相等的開(kāi)頭字符。
   trailing選項時(shí)與rtrim相似,裁減與trim_char相等的結尾字符。
  )
 ..  length(str)<str是字符串>:返回字符串的長(cháng)度。
 ..  decode(expr,search1,trsult1,search2,trult2...[,default])<expr是字符變量或數據表字段,search是expr的預期值,trsult是返回值,default是無(wú)匹配是返回的值>
  (
   decode函數進(jìn)行逐個(gè)值的替換。
  ) 
.>數字函數
 函數  說(shuō)明  輸入     輸出結果
 abs(n)  取絕對值 select abs(-15) from dual  15
 ceil(n)  向上取整 select ceil(44.778) from dual  45
 sin(n)  正弦  select sin(1.571) from dual  0.999999979
 cos(n)  余弦  select cos(0) from dual   1
 sign(n)  取符號  select sign(-32) from dual  -1
 floor(n) 向下取整 select fllor(100.2) from dual  100
 power(n) m的n次冪 select power(4,2) from dual  16
 mod(m,n) 取余數  select mod(10,3) from dual  1
 round(m,n) 四舍五入 select round(100.256,2) from dual 100.26
 trunc(m,n) 截斷  select trunc(100.256,2) from dual 100.25
 sqrt(n)  平放根  select sqrt(4) from dual  2
.>轉換函數
 to_char(d|n[,fmt])<d是日期,n是數字,fmt是指定日期或數字的格式>:將指定的日期或數字轉換成字符串(varchar2)。
 to_date(char[,fmt])<char是日期格式的字符串,fmt是日期的格式>:將char或varchar數據類(lèi)型轉換為日期類(lèi)型。
 to_number(char)<char是包含數字的字符串>:將包含數字的字符串轉換為數字。
.>其他函數
 nvl(expression1,expression2)<exprission1是變量或數據表字段,exprission2是一個(gè)值>:將空值替換為指定的值。
  (
   如果expression1為NULL,則nvl返回expression2
   如果expression1不為NULL,則nvl返回expression1
   <sexpression2的類(lèi)型將轉換為expression1的類(lèi)型>
  )
 nvl2(expression1,expression2,expression3)<exprission1是變量或數據表字段,exprission2和exprission3是一個(gè)值>:與nvl類(lèi)似
  (
   如果expression1不為NULL,則nvl返回expression2
   如果expression1為NULL,則nvl返回expression3
  )
 nullif(expr1,expr2)<expr1,expr1分別為表達式>:比較兩個(gè)表達式,如果相等,則返回空值(null),否則返回expr1。
.>分組函數
 avg(column)<column是列名>:返回參數中指定列的平均值。
 min(column)<column是列名>: 返回參數中指定列的最小值。
 max(column)<column是列名>: 返回參數中指定列的最大值。
 sum(column)<column是列名>: 返回記錄集中值的總和。
 count([distinct]*|column[,column..])<distinct選項指定去除重復項,column是列名>: 返回記錄集中的行數。
 <group by子句用于將信息表化分為組,having字句用來(lái)指定group by的檢索條件>
.>分析函數
 row_number() over ([partition by column] order by clause[,多列] [desc|esc])<column指定分組列名,clause指定排列列名>:為有序組中的每一行(化分部分的行或查詢(xún)返回的行)返回一個(gè)唯一的排序
 值,序號由order by字句指定,從1開(kāi)始。(值相同,而排位不相同)

 rank () over ([partition by column] order by clause[,多列] [desc|esc])<column指定分組列名,clause指定排列列名>:計算一個(gè)值在一組值中的排位,排位是以1開(kāi)頭的連續整數,具有相等值的行排
 位相同,序數隨后跳躍相應的數值。(值相同,排位相同,排位有可能不連續)

 dense_rank() over ([partition by column] order by clause[,多列] [desc|esc])<column指定分組列名,clause指定排列列名>:計算一個(gè)行在一組有序行中的排位,排位是以1開(kāi)頭的連續整數,具有相同
 值的排位相同,并且排位是連續的。(值相同,排位相同,排位連續)

四.Oracle鎖
 鎖定是數據庫用來(lái)控制共享資源并發(fā)訪(fǎng)問(wèn)的機制。
.>行級鎖(用于特定行)
 行級鎖是一中排他鎖,防止其他事務(wù)修改此行,當是不會(huì )阻止讀取此行的操作。
 在使用insert,update,delete和select ...for update等語(yǔ)句時(shí),Oralce會(huì )自動(dòng)應用行級鎖定。
 select...for update語(yǔ)句允許用戶(hù)每次選擇多行記錄進(jìn)行更新,這些記錄會(huì )被鎖定,且只能有發(fā)起查詢(xún)的用戶(hù)進(jìn)行編輯。只有在回滾或提交事務(wù)后,鎖定才會(huì )釋放,其他用戶(hù)才可以編輯這些記錄。
 {
  select ...for update [of column_list] [wait n | nowait ]<column_list是列的列表,n是等待的秒數,nowait指定不等待>
  > of 子句用于指定即將更新的列,即鎖定行上的特定列。
  > wait 子句指定等待其他用戶(hù)釋放鎖的秒數,防止無(wú)限制的等待。
 }
.>表級鎖(用于整個(gè)表)
 表級鎖定將保護表數據,在事務(wù)處理過(guò)程中,表級鎖會(huì )限制對整個(gè)表的訪(fǎng)問(wèn)??梢允褂胠ock table語(yǔ)句顯示地鎖定表。表級鎖用來(lái)限制對表執行添加,更新和刪除等修改操作。
        {
  lock table <table_name> in <lock_mode> mode [nowait];<table_name是鎖定表的名稱(chēng),lock_mode是鎖定的模式,nowait指定不等待>
  >lock_mode是鎖定的模式。
  >nowait 關(guān)鍵字用于防止無(wú)限期的等待其他用戶(hù)釋放鎖。
  (
  表級鎖的模式包括:
   >行共享(row share,rs): 允許其他用戶(hù)訪(fǎng)問(wèn)和鎖定該表,但是禁止排他鎖定整個(gè)表。
   >行排他(row exclusive,rx):與行共享相同,同時(shí)禁止其他用戶(hù)在此表上用共享鎖。
   >共享(share, s):僅允許其他用戶(hù)查詢(xún)表中的行,但不允許插入,更新和刪除。
   >共享行排他(share row exclusive,srx):執行比共享鎖更多的限制。防止其他事物在表上應用共享鎖,共享排他鎖以及排他鎖。
   >排他(exclusive,x):對表執行最大限制。除了允許其他用戶(hù)查詢(xún)該表的記錄,排他鎖防止其他事務(wù)對表做任何更改或在表上應用任何類(lèi)型的鎖。 
  )
  * 執行commit或rollback命令可以釋放鎖定。
 }
五.Oracle表分區
       表分區的優(yōu)點(diǎn):
  ..  改善表的查詢(xún)性能。
  ..  表更容易管理。
  ..  便于備份和恢復。 
  ..  提高數據安全性。
.>范圍分區
 范圍分區根據表的某一列或一組列的值范圍,決定數據存儲在那個(gè)區上。
 在create table語(yǔ)句中增加parition子句可以創(chuàng )建表分區。
 語(yǔ)法:
 partition by rang (column_name)
 (
  partition part1 value less than(range1) [tablespace tbs1],
  partition part2 value less than(range2) [tablespace tbs2],
  ...... 
  partition partn value less than(MAXVALUE) [tablespace tbsN]
 );
 其中:
  column_name:是以其為基礎創(chuàng )建范圍分區的列,特定列的該列值稱(chēng)為分區鍵。
  part1..partn:是分區的名稱(chēng)。
  range1...MAXVALUE:是分區的邊界值。
  tbs1...tbsn:是分區所在的表空間(可選項)。
.>散列分區
 散列分區通過(guò)分區鍵值上執行一個(gè)散列函數來(lái)決定數據的物理位置。(散列分區把記錄平均分布到不同的分區,減少了磁盤(pán)I/O爭用的可能性)
 語(yǔ)法:
 partition by hash (column_name)
 partitions number_of_partitions [store in (tablespace_list)];
 或
 partition by hash (column_name)
 (
  partition part1 [tablespace tbs1],
  partition part2 [tablespace tbs2],
  .....
  partition partn [tablespace tbsn]
 )
 其中:
 column_name:是以其為基礎創(chuàng )建散列分區的列。
 number_of_partitions:是散列分區的數目,使用這種方法系統會(huì )自動(dòng)生成分區的名稱(chēng)。
 tablespace_list:指定分區使用的表空間,如果分區數目比表空間的數目多,分區將會(huì )以循環(huán)的方式分配到表空間中。
.>復合分區
 復合分區是范圍分區和散列分區的結合。
 語(yǔ)法:
 partition by rang (column_name1)
 subpartition by hash (column_name2)
 subpartitioins number_of_partitions [store in (tablespace_list)]
 (
  partition part1 value less than(range1) [tablespace tbs1],
  partition part2 value less than(range2) [tablespace tbs2],
  ...... 
  partition partn value less than(MAXVALUE) [tablespace tbsN]
 ) 
 其中:
 column_name1:是以其為基礎創(chuàng )建范圍分區的列。
 column_name2:是以其為基礎創(chuàng )建散列分區的列。
 number_of_partitions:是散列分區的數目。
 part1..partn:是分區的名稱(chēng)。
 range1...MAXVALUE:是分區的邊界值。
.>列表分區
 列表分區允許用戶(hù)明確地控制行到分區的映射。
 語(yǔ)法:
 partition by list (column_name) 
 (
    partition part1 values (values_list1),
   partition part2 values (values_list2), 
  ....
  partition partn values (DEFAULT)
 )
 其中:
 column_name:是以其為基礎創(chuàng )建列表分區的列。
 part1..partn:是分區的名稱(chēng)。 
 values_list:是對應分區鍵值的列表。
 DEFATLT:關(guān)鍵字允許存儲前面的分區不能存儲的記錄。
***************************************************************
*在分區表中插入記錄:與在普通表中插入數據完全相同。
*在分區表中查詢(xún)記錄:select * from 表名 partition (分區名)
*刪除分區中的記錄: delete from 表名 partitioin (分區名)
***************************************************************

<*>分區維護操作
.>添加分區
 alter table ... ADD partition語(yǔ)句用于在現所有的最后一個(gè)分區(稱(chēng)為'高'端)之后添加新的分區。
 例:
 alter table sales add partitions p4 values less than (4000);
.>刪除分區
 alter table ... drop partition 語(yǔ)句用于刪除分區。(刪除分區時(shí),分區中的數據也隨之刪除)
 例:
 alter table sales drop partition p4;
.>截斷分區
 alter table ... truncate partition 語(yǔ)句用于截斷分區,截斷分區將刪除分區中的所有記錄。
 例:
 alter table sales truncate partition p3;
.>合并分區
 合并分區可將范圍分區表或復合分區表的兩個(gè)相鄰分連接起來(lái)。結果分區將繼承被合并的兩個(gè)分區的較高上界。
 語(yǔ)法:
 alter table table_name
 merge partitions partitions1_name,partitions2_name
 into partition3_name;
 其中: 
 table_name:是表名。
 partitions1_name,partitions2_name:是已有分區。
 partitions3_name:合并到分區的名稱(chēng)。
.>拆分分區
 使用split partition語(yǔ)句在表的開(kāi)頭或中間添加分區。拆分分區允許用戶(hù)將一個(gè)分區拆分為兩個(gè)分區。當分區過(guò)大,可以對分區進(jìn)行拆分。
 語(yǔ)法:
 alter table table_name split partition partiton_name at (value)
 into (partition partiton1,partition partiton2);
 其中:
 table_name:是表名。
 partiton_name:已有分區名。
 value:拆分分隔值。
 partition partiton1,partition partiton2:表示拆分后的新分區。
六.同義詞
 同義詞是數據庫對像的一個(gè)別名,這些對象可以是表,視圖,序列,過(guò)程,函數,程序包,甚至其他同義詞。 
 同義詞用途:
 {
  .. 簡(jiǎn)化sql語(yǔ)句
  .. 隱藏對象的名稱(chēng)和所有者
  .. 為分布式數據庫的遠程對象提供了位置透明性
  .. 提供對象的公共訪(fǎng)問(wèn)
 }
 同義詞允許應用程序訪(fǎng)問(wèn)數據庫對象,不論哪個(gè)用戶(hù)或哪個(gè)數據庫擁有該對象。但是同義詞不能代替權限,在使用同義詞前要確保用戶(hù)已得到訪(fǎng)問(wèn)對象的權限。
 可以通過(guò)同義詞執行select,insert,update,delete,lock table,grant和revoke等語(yǔ)句。同義詞只是表的一個(gè)別名,因此對它的所有操作都會(huì )影響到表。
.>私有同義詞
 私有同義詞只能被當前模式的用戶(hù)訪(fǎng)問(wèn)。
 私有同義詞名稱(chēng)不可與當前模式的對象名稱(chēng)相同。
 要在自身的模式創(chuàng )建私有同義詞,用戶(hù)必須擁有create sysnonym系統權限。
 要在其他用戶(hù)模式創(chuàng )建同義詞,用戶(hù)必須擁有create any synonym系統權限。
 語(yǔ)法:
 create [or replace] synony [schema.]synonym_name for [schema.]object_name
 其中:
 or relaoce:表示在同義詞存在的情況下替換該同義詞。
 synonym_name:表是要創(chuàng )建的同義詞的名稱(chēng)。
 object_name:指定要為之創(chuàng )建同義詞的對象的名稱(chēng)。
.>公有同義詞
 公有同義詞可被所有的數據庫用戶(hù)訪(fǎng)問(wèn)。
 創(chuàng )建公有同義詞,用戶(hù)必須擁有g(shù)reate public synonym系統權限。
 create [or replace] public synonym synonym_name for [schema.]object_name
 其中:
 or relaoce:表示在同義詞存在的情況下替換該同義詞。
 synonym_name:表是要創(chuàng )建的同義詞的名稱(chēng)。
 object_name:指定要為之創(chuàng )建同義詞的對象的名稱(chēng)。
<*>刪除同義詞
 drop synonym語(yǔ)句用于從數據庫中刪除同義詞。要刪除同義詞用戶(hù)必須有相應的權限。
 語(yǔ)法:
 drop [public] synonym [schema.]synonym_name;
七.序列
 序列是用來(lái)生成唯一,連續的整數的數據庫對象。
 序列通常用來(lái)自動(dòng)生成主鍵或唯一的值。
 序列可以按升序排列,也可以按降序排列。
 語(yǔ)法:
 create sequence sequence_name
 [stare with integer]
 [increment by integer]
 [maxvalue integer|nomaxvalue]
 [minvalue integer|nominvalue]
 [cycle|nocycle]
 [cache integer|nocache];
 其中:
 sequence_name:是創(chuàng )建的序列名稱(chēng)。
 stare with:指定要生成的第一個(gè)序列號。
 increment by:用于指定序列好之間的間隔。
 maxvalue:指定序列可以生成的最大值。
 nomaxvalue:如果指定了nomaxvalue,oracle將升序序列的最大值設為10的27次方;將降序序列的最大值設為-1。
 minvalue:指定序列可以生成的最小值。
 nominvalue:無(wú)最小值,oracle將升序序列的最小值設為1;將降序序列的最小值設為10的-26次方。
 cycle:指定序列在達到最大值或最小值后,將繼續從頭開(kāi)始生成值。
 nocycle:指定序列在達到最大值或最小值后,將不能在繼續生成值。這是默認選項。
 cyche:使用cyche選項可以預先分配一組序列號,并將其保存在內存中。這樣可以更快地訪(fǎng)問(wèn)序列號,但用完緩存中的所有序列號,Oralce將生成另一組數值,并將其保留在緩存中。
 nocyche:不緩存序列號。 如果創(chuàng )建序列時(shí)忽略了cyche和nocyche選項,Oracle將默認緩存20個(gè)序列號。
<*>訪(fǎng)問(wèn)序列
        語(yǔ)法;
 sequence_name . nextval|currval
 其中:
 sequence_name:是已創(chuàng )建的序列名稱(chēng)。
 nextvla:創(chuàng )建序列后第一次使用nextval時(shí),將返回該序列的初始值。以后在引用nextval時(shí),將使用increment by子句的值來(lái)增加序列值,并返回這個(gè)新值。
 currval:返回序列的當前值。
<*>更改序列
 alter sequence 命令用于修改序列的定義。
 {
  .. 設置或刪除minvalue或maxvale。
  .. 修改增量值。
  .. 修改緩存中的序列號的數目。
 }
 語(yǔ)法:
 alter sequence [schema.]sequence_name
 [increnment by integer]
 [maxvalue integer|nomaxvalue]
 [minvalue integer|nomaxvalue]
 [cycle|nocycle]
 [cache ingeter|nocache];
    注意:不能修改序列的start with參數。
<*>刪除序列
 drop sequence命令用于刪除序列。
 語(yǔ)法:
 drop sequence 序列名
八.視圖
 視圖一經(jīng)過(guò)定制的方式顯示包含愛(ài)一個(gè)或多個(gè)表(或其他視圖)中的數據。
 語(yǔ)法:
 create [or replace] [force|noforce] view view_name
 [(alias[,alias]...)]
 as select_statement
 [with check option [constraint constraint]]
 [with read only];
 其中:
 or relaoce:表示在視圖存在的情況下替換該視圖。
 force:無(wú)論基表是否存在,都將創(chuàng )建視圖。
 noforce:僅當基表存在才創(chuàng )建視圖。
 view_name:創(chuàng )建視圖的名稱(chēng)。
 alias:指定有視圖的查詢(xún)所選擇的表達式或列的別名。別名的數目必須與視圖所選擇的表達式的數目相匹配。
 select_statement:表示select語(yǔ)句。
 with check option:指定只能插入或更新視圖可以訪(fǎng)問(wèn)的行。術(shù)語(yǔ)constraint表示check option約束指定的名稱(chēng)。
 with read only:確保不能在此視圖上執行任何修改操作。(只瀆)
<*>在視圖上使用DML語(yǔ)句的限制:
 > 在視圖中使用DML語(yǔ)句只能修改一個(gè)底層的基表。
 > 如果記錄的修改違反了基表的約束條件,則無(wú)法更新視圖。
 > 如果創(chuàng )建的視圖包含連接運算符,distinct運算符,集合運算符,聚合運算符和Group by子句,則無(wú)法更新視圖。
 > 如果創(chuàng )建的視圖包含偽劣或表達式,則將無(wú)法更新視圖。
<*>鍵保留表
 在聯(lián)結視圖中,如果視圖包含了一個(gè)表的主鍵,并且也是這個(gè)視圖的主鍵,則這個(gè)鍵被保留,這個(gè)表稱(chēng)為鍵保留表。
<*> 刪除試圖
 語(yǔ)法:
  drop view 視圖名稱(chēng)
九.索引
 索引只是一種快速訪(fǎng)問(wèn)數據的途徑,它只影響執行的速度。
.>唯一索引
 索引可以是唯一的,也可以是非唯一的。唯一索引可以確保在定義索引的列中,表的任意兩個(gè)值都不相同。 
 語(yǔ)法:
 create unique index 索引名 on 表名(唯一列名);
 其中:
 unique:指定為唯一索引。
.>組合索引
 組合索引是在表中的多列上創(chuàng )建的索引。
 語(yǔ)法:
 create index 索引名 on 表名(列名,列名);
.>反向鍵索引
 可以在create index語(yǔ)句中指定關(guān)鍵字Reverse創(chuàng )建反向鍵索引。
 語(yǔ)法:
 create index 索引名 on 表名(列名) reverse;
 其中:
 reveerse:指定為反向鍵索引。
 使用noreverse可以將反向鍵索引重建為標準索引。
  例: alter index 索引名 rebuild noreverse;
 注意:  不能將標準索引重建為反向鍵索引。
.>位圖索引
 使用位圖索引的優(yōu)點(diǎn)在于,它最適用于低基數列,也就是不同值的數目比表的行數少的列(枚舉列)。 
 語(yǔ)法:
 create bitmap index 索引名 on 表名 (列名);
 其中:
 bitmap:指定為位圖索引。
<*>位圖索引優(yōu)點(diǎn)
 > 對于大批即席查詢(xún),可以減少響應時(shí)間。
 > 相比其他索引技術(shù),占用空間明顯減少。
 > 即使在配置很低的終端硬件上,也嫩個(gè)獲得顯著(zhù)的性能。
.>索引組織表
 索引組織表與普通表的不同之處在于,該表的數據存儲在與關(guān)聯(lián)的索引中。對表數據進(jìn)行的修改,如添加新行,更新和刪除行,只會(huì )導致對索引的更新。
 語(yǔ)法:
 create table 表名
 (
  列名  類(lèi)型 primary key,
  ...
 )
 organization index;
 其中:
 organization index: 指定為索引組織表。
<*>注釋
 primary key是創(chuàng )建索引組織表所必需的。
.>索引中分區
 > 局部分區索引
 局部分區索引是在分區表上創(chuàng )建的一中索引,在局部分區中Oracle為表的每個(gè)分區建立一個(gè)獨立的索引。
 語(yǔ)法:
 create index 索引名 on 表名(列名) local;
 其中:
 local:指定為本地分區創(chuàng )建索引。
 > 全局分區索引
 全局分區索引是指在分區表或非分區表上創(chuàng )建的索引。
 語(yǔ)法: 
 create index 索引名 on 表名(列名) global
 partition onrange (列名)
 (
  ...分區  
 )
 其中:
 global:指定為全局分區創(chuàng )建索引。
 >全局非分區索引
 全局非分區索引是在分區表上創(chuàng )建的全局索引,它類(lèi)似于非分區表上的索引,索引的結構不會(huì )被分割。
十.pL/Sql編程
 優(yōu)點(diǎn):
 >支持sql。
 >支持面向對象編程(oop)。
 >更好的性能。
 >可移植性。
 >與sql集成。
 >安全性。
<*> PL/SQL塊
 >聲明塊:聲明塊中使用的變量,游標和自定義異常。這些聲明的作用域僅限于它們所在的塊。此外,局部子程序也可以在PL/SQL塊的聲明部分中聲明。
 >可執行部分:執行命令并操作在聲明部分聲明的變量和游標。
 >異常處理部分:處理執行塊時(shí)引發(fā)的異常。
 pl/sql塊聲明語(yǔ)法:
 [declare
  所有聲明]
 begin
  執行語(yǔ)句
 [exception
  異常處理]
 end;
 >pl/sql對大小寫(xiě)不敏感,但是用戶(hù)和用戶(hù)的開(kāi)發(fā)團隊應該選擇一個(gè)合適的編碼標準,以確保最好的使用共享池。
 >pl/sql中一些復合符號的含義:
  :=     賦值操作符
  ||     連接操作符
  --     單行注釋
  /*,*/  多行注釋
  <<,>>  標簽分隔符
  ..     范圍操作符
  **     求冪操作符 
<*>數據類(lèi)型
   標量數據類(lèi)型
 >數字數據類(lèi)型
 數字數據類(lèi)型存儲的數據為數字,用此數據類(lèi)型存儲的數據可用于計算。
 數字類(lèi)型包括:
 a: binary_integer
 {
 用于存儲帶符號的整數。值的大小范圍介于-2的31次方減1到2的31次方減1之間。
 binary_integer的子類(lèi)型:
   .. natural:可以限制變量存儲非負整數值,即自然數。
  .. naturaln:可以限制變量存儲自然數,且非空。
  .. positive:可以限制變量存儲正整數。
  .. positiven:可以限制變量存儲正整數,且非空。
  .. signtype:可以限制變量只存儲-1,0和1三個(gè)值。 
 }
 b: number
 {
 用于存儲整數,定點(diǎn)數和浮點(diǎn)數。 
 語(yǔ)法:
 number[(presision,scale)]
 其中: 
  presision:是精度。
  scale:是小數位數。
 只能用整數文字指定精度和小數位數,而不能用常量或變量指定精度和小數位數。
 number數據類(lèi)型的一些子類(lèi)型包括:
  .. decimal:用于聲明最高精度為38位的十進(jìn)制數字的定點(diǎn)數。
  .. float:聲明最高精度為126位的二進(jìn)制數字的浮點(diǎn)數。
  .. ingeter:聲名最高精度為38為的十進(jìn)制數字的整數。
  .. real: 聲明最高精度為63位的二進(jìn)制數字的浮點(diǎn)數。 
 }
 c: pls_integer
 {
 存儲帶符號的整數。pls_integer的大小范圍介于-2的31次方到2的31次方之間。與number和binary_integer類(lèi)型相比,它執行運算的速度更快。
 pls_integer運算以機器算術(shù)運算為基礎,而number和binary_integer運算以庫算術(shù)為基礎。此外,與number數據類(lèi)型相比,pls_integer需要的
 存儲空間更小。通常建議在執行處于pls_integer的數值范圍類(lèi)的所有計算時(shí)使用此數據類(lèi)型以提高效率。
 }
 >字符數據類(lèi)型
 字符數據類(lèi)型勇于存儲字符串或字符數據。
 a: char
 {
 存儲固定長(cháng)度的字符數據。(不超過(guò)32767個(gè)字節的最大長(cháng)度)
 語(yǔ)法:
 char[(maximum_size[char|btye])]
 其中:
 maximum_size:是最大長(cháng)度。
 char|byte:指定長(cháng)度為字符數或字節數。
 }
 b: raw
 {
 存儲二進(jìn)制數據或字節串。(類(lèi)似于char,不同之處是它們不在字符集中轉換)
 語(yǔ)法:
 raw(maximum_size)
 其中:
 miximum_size:是最大長(cháng)度。(最大長(cháng)度是32767個(gè)字節) 
 }
 c:long和long Raw
 {
 pl/sql中 long類(lèi)型是可變長(cháng)度字符串。最大長(cháng)度為32760個(gè)字節。類(lèi)似Oralce中的varchar2。
 long row類(lèi)型類(lèi)似于raw數據類(lèi)型,存儲二進(jìn)制數據或字節串,最大長(cháng)度是32760個(gè)字節。
 }
 d: varchar
 {
 此類(lèi)型可容納可變長(cháng)度字符串。
 語(yǔ)法:
 varchar2(maximum_size [char|byte])
 其中:
 maximum_size:是最大長(cháng)度。
 char|byte:指定長(cháng)度為字符數或字節數。
 varchar2類(lèi)型的子類(lèi)型包括:
  .. string
  .. varchar  
 子類(lèi)型的數值范圍與基本類(lèi)型相同。
 }
 >日期時(shí)間數據類(lèi)型
 日期時(shí)間數據類(lèi)型用于存儲日期和時(shí)間值。
 a:date
 {
 用于存儲固定長(cháng)度的日期和時(shí)間數據。它支持的日期范圍為:從公元前(B.C.E)4712年1月1日到公元(C.E)9999年12月31日。
 date數據類(lèi)型包括時(shí)間。
 日期函數sysdate返回當前日期和時(shí)間。
 初使化參數NLS_DATE_FORMAT用于設置默認日期格式。 
 }
 b: timestamp
 {
 用于存儲日期和時(shí)間。是date數據類(lèi)型的擴展,它存儲年,月,日,小時(shí),分鐘和秒。
 日期函數SYSTIMESTAMP返回當前的日期時(shí)間信息。
 語(yǔ)法: 
 timestamp [(precision)]
 其中:
 precision:是精度。它代表秒字段小數部分中的位數。必須使用0到9之間的整數文字。默認為6。
 初使化參數NLS_TIMESTAMP_FORMAT用于設置默認的timestamp格式。
 }
 >布爾數據類(lèi)型
 用于存儲邏輯值。
 boolean
 {
  用于存儲邏輯值true,false和null。
  只允許對boolean變量執行邏輯操作。
 }
   lob類(lèi)型
 大對象(lob)數據類(lèi)型用于存儲非結構化數據。大小限于4GB。DBMS_LOB程序包用于操作lob數據。
 >bfile
 用于將大型二進(jìn)制對象存儲在操作系統文件中。即文件定位器。
 定位器包含一個(gè)目錄的別名,用于指定目錄的完整路徑。
 bfile數據類(lèi)型的數據是只讀的,不能修改。
 語(yǔ)法:
 bfilename('目錄別名','文件名')
 其中:
 目錄別名使用create directiry語(yǔ)句創(chuàng )建。
 >blob
 用于將大型二進(jìn)制對象存儲在數據庫中。blob數據類(lèi)型可用于事務(wù)處理。
 例:
 要在表中插入圖象,先使用create directory 目錄名 as  '系統目錄';創(chuàng )建一個(gè)目錄名。
 使用grant read on directory 目錄名 to 用戶(hù);授予讀取權限。 
 declare
  l_bfile bfile;
  l_blob blob;
 begin
  insert into 表名('blob類(lèi)型的列名')
  values (EMPTY_BLOB()) return 列名 into l_blob;
  l_bfile :=BFILENAME('目錄別名','文件名');
  DBMS_LOB.OPEN(l_bfile,DDMS_LOB.FILE_READONLY);  --打開(kāi)文件
  DBMS_LOB.LOADFROMFIFE(l_blob,l_bfile,DBMS_LOB.GETLENGTH(l_bfile)); --加載到l_blob變量中。
  DBMS_CLOSE(l_bfile); --關(guān)閉l_bfile文件。
  commit;
 END;
 /
 *****************************************************
 oracle中插入一個(gè)blob數據 (來(lái)自Google)
 create or replace directory utllobdir as 'c:\xxx'; --你的BLOB文件所在位置。
 create table bfile_tab (bfile_column BFILE);
 create table t (blob_column BLOB);
 ----------------------------------------
 declare
    a_blob  BLOB;
    a_bfile BFILE := BFILENAME('UTLLOBDIR','BLOB文件名');
 begin
    insert into bfile_tab values (a_bfile)
      returning bfile_column into a_bfile;
    insert into t values (empty_blob())
      returning blob_column into a_blob;
    dbms_lob.fileopen(a_bfile);
    dbms_lob.loadfromfile(a_blob, a_bfile, dbms_lob.getlength(a_bfile));
    dbms_lob.fileclose(a_bfile);
    commit;
 end;
 --------------------------------------------------------------------
 >clob
 用于將大型字符數據存儲在數據庫中。clob變量中的定位器指向大型字符數據的地址。
 插入數據到clob列與普通字符串類(lèi)似。
 讀取clob數據
 DBMS_LOB.READ(clob類(lèi)型變量,要讀的字符數,啟始位置(1為最前端),varchar2類(lèi)型變量)
 --讀取指定clob到varchar2,從開(kāi)始位置讀多少。
 >nclob
 將大型 nchar數據存儲在數據庫中。nclob數據類(lèi)型同時(shí)支持固定寬度字符和可變寬度字符(Unicode字符數據)。nclob類(lèi)型的使用方 法與clob類(lèi)似。
    屬性類(lèi)型
 屬性用于引用變量或數據庫列的數據類(lèi)型,以及表示表中一行的記錄類(lèi)型。
 {
 優(yōu)點(diǎn):
  .. 不需要知道被引用的列或表的具體數據類(lèi)型。
  .. 如果更改了被引用對象的數據庫定義,那么pl/sql在運行時(shí)變量的數據類(lèi)型也會(huì )隨之更改。
 }
 >%type
 引用某個(gè)變量或數據庫列的數據類(lèi)型來(lái)聲名變量。
 語(yǔ)法:
 icode itemfile.itemcode%TYPE;
 其中;
 icode:是變量名稱(chēng)。
 itemfile.itemcode:是表名.列名。
 **icode的數據類(lèi)型與itemfile表中itemcode列的數據類(lèi)型相同。
 >%ROWTYPE
 提供表中一行的記錄類(lèi)型。
 例:
 emp_rec emp%ROWTYPE;
 **emp_rec被聲明為emp一行的類(lèi)型。
<*>邏輯比較
 運算符      描述
 =  等于   
 <>,!=  不等于
 <  小于 
 >  大于
 <=  小于等于
 >=  大于等于
 關(guān)系運算符用于比較sql和過(guò)程語(yǔ)句中的變量和常量,這些表達式稱(chēng)為布爾表達式。
 布爾表達式的結果為true,false或null,通常有邏輯運算符and,or和not連接,主要用在條件控制語(yǔ)句中。
 布爾表達式共有3中類(lèi)型,即數字布爾型,字符布爾型和日期布爾型。
<*>控制結構
 pl/sql提供可通過(guò)控制結構來(lái)控制命令執行的流程。
 >條件控制
  .. if 條件 then
   執行語(yǔ)句....
     end if;
  .. if 條件 then
      執行語(yǔ)句1....
     else
   執行語(yǔ)句2....
     end if;
  .. if 條件 then
   執行語(yǔ)句1....
     elsif 條件 then
   執行語(yǔ)句2....
     end if;
  .. case 待比較值
   when 比較值 then 執行語(yǔ)句....
     when 比較值 then 執行語(yǔ)句....
   when 比較值 then 執行語(yǔ)句....
   [else when 執行語(yǔ)句....]
     end case;
 >循環(huán)控制
  .. loop
   執行語(yǔ)句....
   [EXIT<表示強行跳出循環(huán)<|EXIT then (條件)<條件不為true就跳出>]
     end loop;
  .. while 條件 loop
   執行語(yǔ)句....
     end loop;
  .. for counter in [ reverse] value1..value2
     loop
   執行語(yǔ)句....  
     end loop;
     關(guān)鍵字reverse在for循環(huán)中屬于可選項。只有在需要對值從大到小執行循環(huán)時(shí),才會(huì )使用reverse關(guān)鍵字。 
 >順序控制 
  >goto語(yǔ)句
  無(wú)條件地將控制權轉到標簽指定的語(yǔ)句。
  語(yǔ)法:
  goto 標簽名
  標簽定義方法:<<標簽名>>
  >null語(yǔ)句
  什么都不做,只是將控制權轉到下一個(gè)語(yǔ)句。
<*>動(dòng)態(tài)sql
 Oracle中的動(dòng)態(tài)sql可以通過(guò)本地動(dòng)態(tài)sql命令執行,也可以通過(guò)DBMS_SQL程序包來(lái)執行。
 語(yǔ)法:
 execute immediate 動(dòng)態(tài)sql語(yǔ)句字符串
 [into select語(yǔ)句選擇的記錄值<參數類(lèi)型>]
 [using  綁定輸入參數變量<參數值>]
<*>錯誤處理
 >預定義異常
 pl/sql支持的預定義異常:
 異常    說(shuō)明
 ACCESS_INTO_NULL  在未初始化對象時(shí)出現
 CASE_NOTE_FOUND   在case語(yǔ)句中的選項與用戶(hù)輸入的數據不匹配是出現
 COLLECTION_IS_NULL  在給尚未初始化的表或數組賦值時(shí)出現
 CURSOR_ALREADY_OPEN  在用戶(hù)試圖打開(kāi)已經(jīng)打開(kāi)的游標是出現,在重先打開(kāi)游標前必須先將其關(guān)閉
 DUP_VAL_ON_INDEX  在用戶(hù)試圖將重復的值存儲在使用唯一索引的數據庫列中時(shí)出現。
 INVALID_CURSOR   在執行非法的游標運算是出現。
 INVALIE_NUMBER   在將字符串轉換為數字時(shí)出現。
 LOGIN_DENIED   在輸入用戶(hù)名或密碼無(wú)效時(shí)出現
 NO_DATA_FOUND   在表中不存在請求的行是出現。
 STORAGE_ERROR   在內存損壞或pl/sql耗盡內存時(shí)出現。
 TOO_MANY_ROWS   在執行select into語(yǔ)句后返回多行時(shí)出現。
 VALUE_ERROR   在產(chǎn)生大小限制錯誤時(shí)出現。
 ZERO_DIVIDE   以零做除數時(shí)出現。
 使用異常的語(yǔ)法:
 exception 異常名稱(chēng) then
  執行異常處理語(yǔ)句....
 >用戶(hù)自定義異常
 語(yǔ)法:
  聲明: 自定義異常名稱(chēng) EXCEPTION;
  使用raise語(yǔ)句顯示引發(fā):raise 自定義異常名稱(chēng)
  處理: exception 自定義異常名稱(chēng) then
    執行異常處理語(yǔ)句....
 >引發(fā)應用程序錯誤
 過(guò)程RAISE_APPLICATION_ERROR用于創(chuàng )建用戶(hù)定義的錯誤信息。
 語(yǔ)法:
 RAISE_APPLICATION_ERROR(error_number,error_message)
 其中:
 error_number:指定的異常編號,必須在-20000和-20999之間的負整數。
 error_message:異常指定的消息文本。長(cháng)度可答2048字節,錯誤消息是與error_number表示關(guān)聯(lián)的文本。 
十一.游標管理
 游標是構建在pl/sql中,用來(lái)查詢(xún)數據,獲取記錄集合的指針。
<*>靜態(tài)游標
 靜態(tài)游標是在編譯時(shí)知道其select語(yǔ)句的游標。
 >隱式游標 
 Oracle預定義了一個(gè)sql的隱式游標,通過(guò)檢查隱式游標的屬性可以獲取與最近執行的sql語(yǔ)句相關(guān)的信息。
 隱式游標的屬性:
  .. %found:在dml語(yǔ)句影響一行或多行時(shí),%found屬性在返回true。
  .. %notfound:與%found的作用正好相反,如果沒(méi)有影響任何行,則返回true。
  .. %rowcount:返回dml語(yǔ)句影響的行數,如果沒(méi)有影響行則返回0。
  .. %isopen:返回游標是否已經(jīng)打開(kāi)的值。在執行sql語(yǔ)句之后,Oracle自動(dòng)關(guān)閉sql游標,所以隱式游標的%isopen屬性始終為false。
 >顯示游標
 顯示游標是由用戶(hù)顯示聲明的游標。根據在游標中定義的查詢(xún),查詢(xún)返回的行集合可以包含零行或多行,這些行稱(chēng)為活動(dòng)集。游標將指向活動(dòng)集中的當前行。
 顯示游標的標準操作過(guò)程:
 1.聲明游標
 2.打開(kāi)游標
 3.從游標中獲取記錄
 4.關(guān)閉游標
 顯示游標在declare部分的聲明語(yǔ)法:
 cursor cursor_name [(parameter[,parameter..])] 
 [return return_type] is select_statement;
 其中: 
 cursor_name:是游標的名稱(chēng)。
 parameter:用于為游標指定輸入參數。
 return_type:定義游標提取的行的類(lèi)型。
 select_statement:指定游標的查詢(xún)語(yǔ)句。
 在聲明游標后可以用下列語(yǔ)句控制游標:
 open:打開(kāi)游標。
 fetch: 從游標中提取行。
 close: 關(guān)閉游標。
 顯示游標同樣有隱式游標的屬性并起相同。
 使用顯示游標刪除或更改:
 如果處理過(guò)程中需要刪除或更新行,在定義游標時(shí)必須使用select...for update語(yǔ)句,而在執行delete或update時(shí)使用where current of 字句指定游標的當前行。
 **提示:select語(yǔ)句必須只包括一個(gè)表,而且delete和update語(yǔ)句只有在打開(kāi)游標并提取特定行之后才能使用
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
圣誕快樂(lè ):Oracle Database 19c 的10大新特性一覽
oracle按時(shí)間創(chuàng )建分區表
珍藏 | Java 崗位 【數據庫】 面試題及答案詳解
數據庫SQL調優(yōu)的幾種方式(轉)
[整理]Oracle面試題(基礎篇)
常見(jiàn) SQL Server 規范集錦
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久