日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 快速上手,Oracle学习笔记:快速上手

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 快速上手,Oracle学习笔记:快速上手 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開啟服務:先開啟Lisenterner服務 再開啟ORCL服務

oracle登錄 用戶:

- 管理員 sysDBA - 無密碼

- 系統用戶 system - manager

- 普通用戶 scott - tiger

進入oracle步驟:

sqlplus scott/tiger

DOS窗口中用sqlplus命令,以scott用戶的身份登錄到oracle

conn sys/sys as sysdba;

以無密碼的系統管理員的身份重新連接(相當于SQLSERVER的windows身份驗證)

alter user 用戶名

identified by 密碼; 更改用戶的密碼

show user;

查看當前登錄的用戶 > 創建 create 刪除drop 修改alter

創建表空間: create tablespace

表空間名 datafile ‘物理存放路徑.dbf’

size 大小;

create table 表名(

列名 數據類型 約束,

列名 數據類型 約束,

列名 數據類型 約束,

.... );

數據類型:

數字:

number 可以存整數和小數,可以指定小數位數

number(P,S) P精度(小數+整數的位數) S小數位數

int 整數

float 小數

非數字:

char(10) 固定 存儲數據時,不夠長度以空格填補,要存滿10個字節

varchar(10) 可變 存儲的內容實際的長度,不需要存滿10個字節

varchar2(長度) 同 varchar 4000個字符

long 可變的字符串 2GB

日期:date

序列:生成遞增的數字

同義詞共有兩種類型: 公有同義詞可被所有的數據庫用戶訪問。

私有同義詞只能在其模式內訪問,且不能與當前模式的對象同名。

CREATE (PUBLIC) SYNONYM 同義詞名 FOR 模式名.表名;

注意:一個用戶對應一個模式

create sequence 序列名

start with 初始值

increment by 遞增;

maxvalue 最大值

minvalue 最小值

NOCYCLE/CYCLE

cache 緩存值;

緩存值不指定默認為20,nocache緩存預先不分配值,緩存的值必須小于循環的值

nimvalue與循環(cycle)一起使用,指下次循環的開始值 start with 起始值 :第一次取值的起始值 序列取值:

序列名.nextVal 下一個值

序列名.currVal 當前值

查詢: 條件查詢、聚合函數、分組查詢、連接查詢、子查詢

基本查詢

select 列信息 from 表名 where 條件 group by 分組列 having 分組后篩選 order by 排序列

acs/desc

多表查詢:內連接、外連接

子查詢:作為條件、列、表

select … from … where … update 表 set 列=更新值 where (子查詢)

delete from 表 where (子查詢)

視圖:簡化SQL語句,實際存放的是查詢語句,不是數據,數據存放在源表中

CREATE [OR REPLACE] VIEW 視圖名

as

查詢語句

[with check option] 主要針對視圖的查詢語句帶條件,對視圖執行修改操作時,不允許使視圖的查詢結果行數變少

[with read only] 只讀

索引:提高查詢的速度

主鍵列默認添加索引

(1).標準的索引:索引添加在經常搜索的列上

create index 索引名 on 表名(列名);

(2).唯一索引:索引列值不重復

create unique index 索引名 on 表名(列名);

(3)、組合索引:經常按照多列搜索,則可以在多列上創建一個索引

create index 索引名 on 表名(列名1,列名2);

(4)、反向鍵索引:列值連續

通常索引是建立在連續增長的列上,使數據均勻地分布在整個索引上,索引存儲在硬盤上是以塊的形式存儲的,

如果數據的修改導致順序發生改變,則系統會鎖定修改記錄所在的數據塊,這樣同一個塊中的數據要發生操作必須等待, 大大降低了并發性

反向鍵索引就是反轉索引列中的每一個字節,使數據分散的存放到磁盤不同的塊上,提高數據訪問的并發性 將反轉后的鍵按照常規索引存儲

語法:CREATE INDEX 索引名 ON 表名 (列名) REVERSE;

(5)、位圖索引:列值大量重復

語法:CREATE BITMAP INDEX 索引名 ON 表名 (列名);

PL/SQL 是過程語言(Procedural Language)與結構化查詢語言(SQL)結合而成的編程語言 PL/SQL 是對 SQL

的擴展 支持多種數據類型,如大對象和集合類型,可使用條件和循環等控制結構 可用于創建存儲過程、觸發器和程序包,給SQL語句的執行添加程序邏輯

與 Oracle 服務器和 Oracle 工具緊密集成,具備可移植性、靈活性和安全性

優點: 1、可以編寫邏輯代碼 2、PL/SQL中的代碼自動形成一個事物,出現異常就會一起回滾

3、更佳的性能,減少客戶端對ORACLE服務器端的訪問量,PL/SQL 經過編譯執行的

存儲過程

存儲過程(procedure):命名的PL/SQL代碼快,類似JAVA的方法 一個功能定義到一個存儲過程中,需要使用時直接調用

CREATE OR REPLACE PROCEDURE PRO_NAME

AS

BEGIN

[EXCEPTION]

END;

條件結構

IF 條件 THEN

語句;

ELSIF 條件 THEN

語句;

ELSIF 條件 THEN

語句;

....

ELSE

語句N;

END IF;

根據指定的學號查詢的學生的信息,如果存在輸出學生信息,不存在提示對應的信息

帶參數的存儲過程

CREATE OR REPLACE PROCEDURE PROC1(id student.stuid%type)

AS

--變量與表中的一行數據進行映射,語法:變量名 表名%rowtype;

stu student%rowtype;

num int; --存放根據學號查詢的記錄行數

begin

select count(*) into num from student where stuid=id;

--判斷

if num=0 then

dbms_output.put_line('學號不存在!');

else

select * into stu from student where stuid=id;

dbms_output.put_line(stu.stuid||'-'||stu.stuname);

end if;

end proc1;

--調用存儲過程并傳參數

call proc1(0);

循環

LOOP循環

LOOP

EXIT WHEN 退出循環的條件表達式;

執行語句;

END LOOP;

循環輸出1-10

create or replace procedure proc1

as

i int:=1; --定義變量并賦初值

begin

LOOP

EXIT WHEN I>10;

dbms_output.put_line(I);

I:=I+1;

END LOOP;

end proc1;

CALL PROC1();

WHILE循環

WHILE 循環語法:

WHILE 進行循環條件

LOOP

執行語句;

END LOOP;

create or replace procedure proc1

as

i int:=1; --定義變量并賦初值

begin

WHILE i<=10

LOOP

dbms_output.put_line(I);

I:=I+2;

END LOOP;

end proc1;

for循環

FOR 變量 IN 起始值..結束值

LOOP

執行語句;

END LOOP;

create or replace procedure proc1

as

begin

for i in 1..10

loop

dbms_output.put_line(I);

end loop;

end;

定義存儲過程向學生信息表添加20行測試數據

create or replace procedure proc1

as

begin

for i in 1..20

loop

insert into student values(i,'測試'||i,'男',20,1.68,sysdate);

end loop;

end;

判斷某張表是否存在,如果存在就刪除

CREATE OR REPLACE PROCEDURE CHECKTABLE(TABLENAME VARCHAR)

AS

NUM INT;

BEGIN

SELECT COUNT(*) INTO NUM FROM USER_TABLES WHERE TABLE_NAME=TABLENAME;

IF NUM>0 THEN

--刪除表

--DROP TABLE TABLENAME;

EXECUTE IMMEDIATE 'DROP TABLE '||TABLENAME;

END IF;

END;

注意:PL/SQL中不支持DDL語句:create drop,需要使用命令 EXECUTE IMMEDIATE ‘DDL語句’ 執行

總結

以上是生活随笔為你收集整理的oracle 快速上手,Oracle学习笔记:快速上手的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。