當前位置:首頁 » 編程語言 » oracleplsql基礎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracleplsql基礎

發布時間: 2022-08-17 02:10:53

❶ Oracle PLsql 如何建立視圖

1、首先打開第三方工具,PLSQL
2、登錄
3、打開sql窗口
4、在新打開的頁面寫自己的視圖創建語句即可,要根據自己的需求來寫。
如:
CREATEVIEWygb_viewASSELECT*FROM員工表WHERE員工表.性別=『女』withcheckoption
5、寫好後,點執行,即菜單中形似齒輪的圖標。
6、創建成功。

❷ 關於oracle PLSQL

PL/SQL是ORACLE對標准資料庫語言的擴展,ORACLE公司已經將PL/SQL整合到ORACLE 伺服器和其他工具中了,近幾年中更多的開發人員和DBA開始使用PL/SQL,本文將講述PL/SQL基礎語法,結構和組件、以及如何設計並執行一個PL/SQL程序。

PL/SQL的優點

從版本6開始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的優點以及其獨有的數據管理的便利性,那麼你很難想像ORACLE缺了PL/SQL的情形。PL/SQL 不是一個獨立的產品,他是一個整合到ORACLE伺服器和ORACLE工具中的技術,可以把PL/SQL看作ORACLE伺服器內的一個引擎,sql語句執行者處理單個的sql語句,PL/SQL引擎處理PL/SQL程序塊。當PL/SQL程序塊在PL/SQL引擎處理時,ORACLE伺服器中的SQL語句執行器處理pl/sql程序塊中的SQL語句。

PL/SQL的優點如下:

. PL/SQL是一種高性能的基於事務處理的語言,能運行在任何ORACLE環境中,支持所有數據處理命令。通過使用PL/SQL程序單元處理SQL的數據定義和數據控制元素。

. PL/SQL支持所有SQL數據類型和所有SQL函數,同時支持所有ORACLE對象類型

. PL/SQL塊可以被命名和存儲在ORACLE伺服器中,同時也能被其他的PL/SQL程序或SQL命令調用,任何客戶/伺服器工具都能訪問PL/SQL程序,具有很好的可重用性。

. 可以使用ORACLE數據工具管理存儲在伺服器中的PL/SQL程序的安全性。可以授權或撤銷資料庫其他用戶訪問PL/SQL程序的能力。

. PL/SQL代碼可以使用任何ASCII文本編輯器編寫,所以對任何ORACLE能夠運行的操作系統都是非常便利的

. 對於SQL,ORACLE必須在同一時間處理每一條SQL語句,在網路環境下這就意味作每一個獨立的調用都必須被oracle伺服器處理,這就佔用大量的伺服器時間,同時導致網路擁擠。而PL/SQL是以整個語句塊發給伺服器,這就降低了網路擁擠。

PL/SQL塊結構

PL/SQL是一種塊結構的語言,組成PL/SQL程序的單元是邏輯塊,一個PL/SQL 程序包含了一個或多個邏輯塊,每個塊都可以劃分為三個部分。與其他語言相同,變數在使用之前必須聲明,PL/SQL提供了獨立的專門用於處理異常的部分,下面描述了PL/SQL塊的不同部分:

聲明部分(Declaration section)

聲明部分包含了變數和常量的數據類型和初始值。這個部分是由關鍵字DECLARE開始,如果不需要聲明變數或常量,那麼可以忽略這一部分;需要說明的是游標的聲明也在這一部分。

執行部分(Executable section)

執行部分是PL/SQL塊中的指令部分,由關鍵字BEGIN開始,所有的可執行語句都放在這一部分,其他的PL/SQL塊也可以放在這一部分。

異常處理部分(Exception section)

這一部分是可選的,在這一部分中處理異常或錯誤,對異常處理的詳細討論我們在後面進行。

PL/SQL塊語法

[DECLARE]
---declaration statements
BEGIN
---executable statements
[EXCEPTION]
---exception statements
END

PL/SQL塊中的每一條語句都必須以分號結束,SQL語句可以使多行的,但分號表示該語句的結束。一行中可以有多條SQL語句,他們之間以分號分隔。每一個PL/SQL塊由BEGIN或DECLARE開始,以END結束。注釋由--標示。

PL/SQL塊的命名和匿名

PL/SQL程序塊可以是一個命名的程序塊也可以是一個匿名程序塊。匿名程序塊可以用在伺服器端也可以用在客戶端。

命名程序塊可以出現在其他PL/SQL程序塊的聲明部分,這方面比較明顯的是子程序,子程序可以在執行部分引用,也可以在異常處理部分引用。

PL/SQL程序塊可背獨立編譯並存儲在資料庫中,任何與資料庫相連接的應用程序都可以訪問這些存儲的PL/SQL程序塊。ORACLE提供了四種類型的可存儲的程序:

. 函數

. 過程

. 包

. 觸發器

函數

函數是命名了的、存儲在資料庫中的PL/SQL程序塊。函數接受零個或多個輸入參數,有一個返回值,返回值的數據類型在創建函數時定義。定義函數的語法如下:

FUNCTION name [{parameter[,parameter,...])] RETURN datatypes IS
[local declarations]
BEGIN
execute statements
[EXCEPTION
exception handlers]
END [name]

過程

存儲過程是一個PL/SQL程序塊,接受零個或多個參數作為輸入(INPUT)或輸出(OUTPUT)、或既作輸入又作輸出(INOUT),與函數不同,存儲過程沒有返回值,存儲過程不能由SQL語句直接使用,只能通過EXECUT命令或PL/SQL程序塊內部調用,定義存儲過程的語法如下:

PROCEDURE name [(parameter[,parameter,...])] IS
[local declarations]
BEGIN
execute statements
[EXCEPTION
exception handlers ]
END [name]

包(package)

包其實就是被組合在一起的相關對象的集合,當包中任何函數或存儲過程被調用,包就被載入入內存中,包中的任何函數或存儲過程的子程序訪問速度將大大加快。
包由兩個部分組成:規范和包主體(body),規范描述變數、常量、游標、和子程序,包體完全定義子程序和游標。

觸發器(trigger)

觸發器與一個表或資料庫事件聯系在一起的,當一個觸發器事件發生時,定義在表上的觸發器被觸發。

變數和常量

變數存放在內存中以獲得值,能被PL/SQL塊引用。你可以把變數想像成一個可儲藏東西的容器,容器內的東西是可以改變的。

聲明變數

變數一般都在PL/SQL塊的聲明部分聲明,PL/SQL是一種強壯的類型語言,這就是說在引用變數前必須首先聲明,要在執行或異常處理部分使用變數,那麼變數必須首先在聲明部分進行聲明。

聲明變數的語法如下:

Variable_name [CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]

注意:可以在聲明變數的同時給變數強制性的加上NOT NULL約束條件,此時變數在初始化時必須賦值。

給變數賦值

給變數賦值有兩種方式:

. 直接給變數賦值

X:=200;
Y=Y+(X*20);

. 通過SQL SELECT INTO 或FETCH INTO給變數賦值

SELECT SUM(SALARY),SUM(SALARY*0.1)
INTO TOTAL_SALARY,TATAL_COMMISSION
FROM EMPLOYEE
WHERE DEPT=10;

常量

常量與變數相似,但常量的值在程序內部不能改變,常量的值在定義時賦予,,他的聲明方式與變數相似,但必須包括關鍵字CONSTANT。常量和變數都可被定義為SQL和用戶定義的數據類型。

ZERO_VALUE CONSTANT NUMBER:=0;

這個語句定了一個名叫ZERO_VALUE、數據類型是NUMBER、值為0的常量。

標量(scalar)數據類型

標量(scalar)數據類型沒有內部組件,他們大致可分為以下四類:

. number
. character
. date/time
. boolean

表1顯示了數字數據類型;表2顯示了字元數據類型;表3顯示了日期和布爾數據類型。

表1 Scalar Types:Numeric

Datatype
Range
Subtypes
description

BINARY_INTEGER
-214748-2147483647
NATURAL
NATURAL
NPOSITIVE
POSITIVEN
SIGNTYPE
用於存儲單位元組整數。
要求存儲長度低於NUMBER值。
用於限制范圍的子類型(SUBTYPE):
NATURAL:用於非負數
POSITIVE:只用於正數
NATURALN:只用於非負數和非NULL值
POSITIVEN:只用於正數,不能用於NULL值
SIGNTYPE:只有值:-1、0或1.

NUMBER
1.0E-130-9.99E125
DEC
DECIMAL
DOUBLE
PRECISION
FLOAT
INTEGERIC
INT
NUMERIC
REAL
SMALLINT
存儲數字值,包括整數和浮點數。可以選擇精度和刻度方式,語法:
number[([,])]。
預設的精度是38,scale是0.

PLS_INTEGER
-2147483647-2147483647

與BINARY_INTEGER基本相同,但採用機器運算時,PLS_INTEGER提供更好的性能 。

表2 字元數據類型

datatype
rang
subtype
description

CHAR
最大長度32767位元組
CHARACTER
存儲定長字元串,如果長度沒有確定,預設是1

LONG
最大長度2147483647位元組

存儲可變長度字元串

RAW
最大長度32767位元組

用於存儲二進制數據和位元組字元串,當在兩個資料庫之間進行傳遞時,RAW數據不在字元集之間進行轉換。

LONGRAW
最大長度2147483647

與LONG數據類型相似,同樣他也不能在字元集之間進行轉換。

ROWID
18個位元組

與資料庫ROWID偽列類型相同,能夠存儲一個行標示符,可以將行標示符看作資料庫中每一行的唯一鍵值。

VARCHAR2
最大長度32767位元組
STRINGVARCHAR
與VARCHAR數據類型相似,存儲可變長度的字元串。聲明方法與VARCHAR相同

表3 DATE和BOOLEAN

datatype
range
description

BOOLEAN
TRUE/FALSE
存儲邏輯值TRUE或FALSE,無參數

DATE
01/01/4712 BC
存儲固定長的日期和時間值,日期值中包含時間

❸ Oracle資料庫教程之利用plsqldev進行資料庫操作的步驟

方法/步驟
1、打開PLSQL
Developer,輸入用戶名和口令,進行連接,如下圖所示:
2、依次點擊「文件(F)」->「新建(N)」->「SQL窗口(S)」,如下圖所示:
3、在窗口中輸入以下SQL語句:
--1、創建一個表
T_USER
create
table
T_USER
(
USERID
varchar2(50)
default
SYS_GUID()
not
null
primary
key,
USERNAME
varchar2(20)
not
null,
USERPWD
varchar2(30)
not
null
);
如下圖所示:
4、向表中插入2條數據,語句如下:
--插入2條數據
insert
into
T_USER(USERNAME,USERPWD)
values('admin','admin');
insert
into
T_USER(USERNAME,USERPWD)
values('test','test');
select
*
from
T_USER;
如下圖所示:
5、更新表中的記錄,語句如下:
--更新一條數據
update
T_USER
set
USERPWD='admin123'
where
USERNAME='admin';
select
*
from
T_USER;
如下圖所示:
6、刪除表中的一條記錄,語句如下:
--刪除一條數據
delete
from
T_USER
where
USERNAME='test';
select
*
from
T_USER;
如下圖所示:
7、銷毀剛創建的表,語句如下:
--刪除表
drop
table
T_USER;
select
*
from
T_USER;
可以看到左側的Tables目錄下表已經不存在了,此外查詢表會報錯,說明表確實已經銷毀不存在了,如下圖所示:
以上就是專題欄小編帶來的pl/sql
developer教程,更多教程請看「http://www.zhuantilan.com/zt/sqldeveloper/」

❹ oracle_plsql函數大全

1.ascii('A') 返回與指定的字元對應的十進制數
2.chr(65) 給出整數,返回對應的字元;
3. concat('010-','88888888') 連接字元串
4.initcap('smith') 返回字元串並將字元串的第一個字母變為大寫;
5.instr(C1,C2,I,J) 在字元串C1中搜索字元串C2,返回發現指定的字元的位置;
I搜索的開始位置,默認為1。 J出現的位置,默認為1。
6.length(name) 返回字元串的長度;
7. lower('AaBbCcDd') 返回字元串,並將所有的字元小寫
8. upper('AaBbCcDd') upper from al;返回字元串,並將所有的字元大寫
9.rpad和lpad(粘貼字元) lpad(rpad('gao',10,'*'),17,'*') 得*******gao*******
10.ltrim和rtrim和trim 刪除字元兩邊出現的空格。
11. substr (string,start,count)取子字元串,從start開始,取count個
12. replace ('string','s1','s2') string希望被替換的字元或變數,s1被替換的字元串
s2要替換的字元串
13. soundex 返回一個與給定的字元串讀音相同的字元串
14.TRIM('s' from 'string') 剪掉前面和後面的字元
15. abs(100) 返回指定值的絕對值
16. acos(-1) 給出反餘弦的值
17. asin(0.5) 給出反正弦的值
18. atan(1) 返回一個數字的反正切值
19. ceil(3.1415927) 返回大於或等於給出數字的最小整數
20. cos(-3.1415927) 返回一個給定數字的餘弦
21. cosh(20) 返回一個數字反餘弦值
22. exp(2) 返回一個數字e的n次方根
23. floor(2345.67) 對給定的數字取整數
24. ln(1) 返回一個數字的對數值
25.log(n1,n2) 返回一個以n1為底n2的對數
26.mod(n1,n2) 返回一個n1除以n2的余數
27.power(n1,n2) 返回n1的n2次方根
28. round和trunc 按照指定的精度進行舍入
29.sign(n) 取數字n的符號,大於0返回1,小於0返回-1,等於0返回0
30. sin(1.57079) 返回一個數字的正弦值
31. sin(20) 返回雙曲正弦的值
32.sqrt(n) 返回數字n的根
33. tan(n) 返回數字n的正切值
34. tanh(n) 返回數字n的雙曲正切值
35. trunc (124.16666,2) 按照指定的精度截取一個數
36. add_months 增加或減去月份
37. last_day(sysdate) 返回日期的最後一天
38. months_between (date2,date1) 給出date2-date1的月份
39. new_time (date,'this','that') 給出在this時區=other時區的日期和時間
40. next_day (date,'day') 給出日期date和星期x之後計算下一個星期的日期
41. sysdate 用來得到系統的當前日期
42. chartorowid 將字元數據類型轉換為ROWID類型
43. convert (c,dset,sset)
44. hextoraw 將一個十六進制構成的字元串轉換為二進制
45. rawtohext 將一個二進制構成的字元串轉換為十六進
46. rowidtochar 將ROWID數據類型轉換為字元類型
47. to_char (date,'format')
48. to_date(string,'format') 將字元串轉化為ORACLE中的一個日期
49. to_multi_byte('高') 將字元串中的單位元組字元轉化為多位元組字元
50. to_number('1999') 將給出的字元轉換為數字
51. bfilename (dir,file)
52. convert('x','desc','source') 將x欄位或變數的源source轉換為desc
53. mp(s,fmt,start,length)
54. empty_blob()和empty_clob() 這兩個函數都是用來對大數據類型欄位進行初始化操
作的函數
55. greatest('AA','AB','AC') 返回一組表達式中的最大值,即比較字元的編碼大小.
56. least('啊','安','天') 返回一組表達式中的最小值
57. uid 返回標識當前用戶的唯一整數(user_id=uid)
58. user 返回當前用戶的名字
59. userevn 返回當前用戶環境的信息,opt可以是:
ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE
ISDBA 查看當前用戶是否是DBA如果是則返回true
60.avg(DISTINCT|ALL) all表示對所有的值求平均值,distinct只對不同的值求平均值
61.max(DISTINCT|ALL) 求最大值,DISTINCT表示對不同的值求最大值,相同的只取一次
62.min(DISTINCT|ALL) 求最小值,DISTINCT表示對不同的值求最小值,相同的只取一次
63. stddev (distinct|all) 求標准差,DISTINCT表示只對不同的值求標准差
64. variance (DISTINCT|ALL) 求協方差
65. group by主要用來對一組數進行統計
66. having 對分組統計再加限制條件
67.ORDER BY 用於對查詢到的結果進行排序輸出

❺ 請問各位大神以下oracle plsql語句怎麼寫

select
c.ckmc
倉庫名稱,
t.合計,
t.物品A,
t.物品B,
t.物品C,
t.物品D,
t.物品E
from
ckdm
c,
(select
a.ckdm,
sum(decode(a.hpdm,
301,
a.je))
+
sum(decode(a.hpdm,
302,
a.je))
+
sum(decode(a.hpdm,
303,
a.je))
+
sum(decode(a.hpdm,
304,
a.je))
+
sum(decode(a.hpdm,
305,
a.je))
合計,
sum(decode(a.hpdm,
301,
a.je))
物品A,
sum(decode(a.hpdm,
302,
a.je))
物品B,
sum(decode(a.hpdm,
303,
a.je))
物品C,
sum(decode(a.hpdm,
304,
a.je))
物品D,
sum(decode(a.hpdm,
305,
a.je))
物品E,
from
ckhp
a
group
by
a.ckdm)
t
where
t.ckdm
=
c.ckdm
group
by
ckmc
order
by
c.ckdm;
沒有實際建表,你試下是否可行。

❻ oracle中的plsql的一個最基本的語句,麻煩各位跟我說的詳細點我只會sql,plsql看過一點點。

這些都是定義數據類型的,就好象你定義一個archar2的數據一樣,你在plsql中定義一個varchar2類型的時候要寫 aaaa varchar2,那麼這里不是用varchar2什麼的具體的格式來表示數據類型,而是用了已經有的數據類型,或者自己創建的數據類型。
比如(不完全是,不過大概可以這么理解,因為這里的pkg_mail_param.cur_returnremind應該是一個集合):
cur_person (前面這個可以看成變數) pkg_mail_param.cur_returnremind(後面這個前面的pkg_mail_param是包名,後面的這個應該是包裡面定義的一個type(這里實際是個集合),我看見用cur開頭,估計是一般情況下用在游標處了。)
你去pkg_mail_param包中,找到cur_returnremind看看他是怎麼定義的。
既然cur_returnremind是一個集合,那麼每一行的數據類型又是什麼?
這里就是empRowType cur_person%rowtype

emp_email t_bd_person.femail%type應該是定義 emp_email他的數據類型和t_bd_person表的femail欄位一致。

最後一句說的是cur_returnremind實際是propertyreturninfo的返回職的類型的游標(不完全正確,不過個人認為可以這么理解)
這個寫法其實麻煩的要死,如果propertyreturninfo只有一個 t_bd_person.femail的類型,那麼干嗎不直接用 t_bd_person.femail的類型,個人比較煩oracle的數組和集合,用起來麻煩。不過在合並或者連接上來說還稍微有點用。

❼ oracle 求PL/SQL經典入門書籍

這幾本由淺入深地看:

Oracle PL/SQL入門
Oracle PL/SQL 實例精解(原書第4版)、
Oracle Database 11g PLSQL 程序設計
精通Oracle10gSQL和PL/SQL
OracleSQL&PL/SQL基礎教程
這幾本不錯,有幾本網上可能找不到。現在應聘PL/SQL崗位有好多要求管理、調優、懂體系,一個人又當開發又當DBA,哥們說真的,cuug有個開發DBA,先去幫廣大同胞們去試試水唄

❽ 初學ORACLE,之前也沒怎麼接觸資料庫,現在怎麼學SQL怎麼在PLSQL里寫SQL語句

《oracle 11g 資料庫編程入門與實戰》這本書入門不錯。我就是買這本,工作時偶爾參考一下。
本書是Oracle 11g的入門教材,是初學者快速掌握Oracle資料庫的途徑,尤其適合Oracle資料庫應用開發人員閱讀,來獲得應具備的資料庫方面的知識和技能。本書從如何安裝Oracle資料庫入手,到如何掌握和Oracle交互的SQL語言和PL/SQL編程,逐步延伸至資料庫的體系結構,並以此為基礎,介紹資料庫的SQL語句優化和備份恢復等內容。
本書內容共11章,分為5個部分。第1部分是Oracle基礎,包括Oracle 11g的安裝、SQL語言、資料庫對象的管理、PL/SQL編程等;第2部分是Oracle體系結構;第3部分是Oracle資料庫的用戶及安全管理;第4部分是資料庫中的SQL語句優化;第5部分是從程序員的角度來看資料庫的備份和恢復。