--"oracle.jdbc.OracleDriver";
--"jdbc:oracle:thin:@localhost:1521:orcl";
select * from Dba_Tablespaces; --查看所有表空間
select table_name from all_all_tables where tablespace_name='SPAC1'; --查找某個表空間下的表:注意,條件名稱一定要大寫
select tablespace_name from all_all_tables where table_name='ORCL_BOOK' --查看某表所在表空間
select * from dba_users; --查找所有賬戶
--
select * from all_views;
select * from dba_views;
select * from user_views;
--
select * from all_synonyms;
select * from dba_synonyms;
select * from user_synonyms;
--
select * from all_indexes;
select * from dba_indexes;
select * from user_indexes;
--
select * from all_sequences;
select * from dba_sequences;
select * from user_sequences;
--
--創建表空間:
create tablespace spac1
datafile 'c:\spac1.dbf'
size 2m
autoextend on --autoextend off 開啓或關閉自動增長
next 1m --每次增長1m,最大增長到20m
maxsize 20m;
--創建用戶
create user my_user1 identified by myuser1 default tablespace spac1;
grant connect,resource to my_user1; --revoke移除權限,Oracle中具體權限表************
--資源文件:創建資源文件的作用是爲XXX用戶創建限制,如登錄時輸入3次密碼錯誤,將鎖定該用戶等
create profile myuser1_profile limit
sessions_per_user unlimited
cpu_per_session unlimited
cpu_per_call unlimited
connect_time unlimited
idle_time unlimited
logical_reads_per_session unlimited
logical_reads_per_call unlimited
composite_limit unlimited
private_sga unlimited
failed_login_attempts 10
password_life_time 180
password_reuse_time unlimited
password_reuse_max unlimited
password_lock_time 1
password_grace_time 7
password_verify_function Null;
--
alter user my_user1 profile myuser1_profile --爲用戶配置所使用的資源文件
--
--創建表
--僞列:這是一個重要的對象,在Oracle數據庫的每一張表中存在着兩列隱藏列,列名分別是:rowid、rownum分別指示物理id和行id。通過select * from 表名;是查詢不到這兩列的內容的。
--僞列存在的作用是增大查詢效率和輔助完成特定需求,如分頁等
--select rowid,rownum,title from Orcl_Book;
create table Orcl_Book(
BookClassID number primary key,
Title varchar2(50) not null unique,
Author varchar2(50),
ISBN varchar2(50),
CBFXX varchar2(50),
ZTXX varchar2(50),
DTZRZ varchar2(50),
ZRZ varchar2(50),
ZGTSFLFH varchar2(50),
KTTSFLFH varchar2(50),
LTZT varchar2(50),
FZX varchar2(200),
CBSJ date,
DJ number(10,2),
PCJE number(10,2)
);
insert into Orcl_Book(Title) values('三國演義');
insert into Orcl_Book(Title) values('三國演義2');
select * from Orcl_Book;
--
create table Orcl_StorePlace(
StoreID number primary key,
MC varchar2(50),
WZ varchar2(200),
FZR varchar2(50),
SM varchar2(200)
);
--
create table Orcl_Store(
BookID number primary key,
BookClassID number,
StoreID number,
SQH varchar2(50) not null unique,
TMH varchar2(50),
NJH varchar2(50),
ZT varchar2(50) not null unique,
RGSJ date not null unique
);
alter table Orcl_Store add(
Constraint Store_Book_fk foreign key(BookClassID) references Orcl_Book(BookClassID),
Constraint Store_StorePlace_fk foreign key(StoreID) references Orcl_StorePlace(StoreID)
);
--
create table Orcl_Reader(
ReaderId number primary key,
ZJH varchar2(50),
GH varchar2(50),
BZRQ date,
SXRQ date,
GQRQ date,
YJ number(10,2),
SXF number(10,2),
LJJS number,
RuleID number,
ZT varchar2(50)
);
alter table Orcl_Reader add(
Constraint Reader_Rule_fk foreign key(RuleID) references Orcl_Rule(RuleID)
);
--
create table Orcl_Rule(
RuleID number primary key,
GZMC varchar2(50),
KJYTS number,
KJYGCDID varchar2(50),
KXJTS number,
KXJCS number,
KYYSJ number
);
--
create table Orcl_JYB(
JYID number primary key,
ReaderID number,
BookID number,
JYSJ date,
DQSJ date,
GHRQ date,
ZT varchar2(50),
XJCS number
);
alter table Orcl_JYB add(
Constraint JYB_Reader_fk foreign key(ReaderID) references Orcl_Reader(ReaderID),
Constraint JYB_Store_fk foreign key(BookID) references Orcl_Store(BookID)
);
--
create table Orcl_CFB(
CFID number primary key,
ReaderID number,
BookID number,
CFYY varchar2(50),
CFJG varchar2(50),
FKJE number(10,2),
ZT varchar2(50)
);
alter table Orcl_CFB add(
Constraint CFB_Reader_fk foreign key(ReaderId) references Orcl_Reader(ReaderID),
constraint CFB_Store_fk foreign key(BookID) references Orcl_Store(BookID)
);
--
--序列
--create sequence [方案] 序列名稱
--[increment by 整數] :指定序列增量
--[start with 整數] :起始值
--[maxvalue 整數 | nomaxvalue ] :是否有最大值約束
--[minvalue 整數 | nominvalue ] :是否有最小值約束
--[cycle 整數 | nocycle ] :數字到達最大/最小值時序列是否重新開始
--cache :緩存中保存的序列整數的數量
--使用序列:
--select my_sequence.currval from dual;查詢當前值
--my_sequence.nextval 序列下一個值;
--eg:
select XL_BOOKCLASSID.currval from dual;
--
create sequence XL_BookClassID
increment by 1
start with 1
nomaxvalue
--
create sequence XL_StoreID
increment by 1
start with 1
--
create sequence XL_BookID
increment by 1
start with 1
--
create sequence XL_ReaderID
increment by 1
start with 1
--
create sequence XL_RuleID
increment by 1
start with 1
--
create sequence XL_JYID
increment by 1
start with 1
--
create sequence XL_CFID
increment by 1
start with 1
--
--存儲過程
--create or replace procedure 過程名稱(
-- sno in number default 20, :輸入參數,可以通過default設置參數默認值
-- res out number :輸出參數
-- :(in out)還可以擁有雙向參數
--)
--is
-- 聲明語句段;
-- [異常名1 exception;]
--begin
-- 執行語句段;
-- ......
-- [raise 異常名1;] :拋出異常
--exception
--
-- when 異常名1 then
-- 異常處理語句段1;
--end [過程名];
--說明:
--or replace:是可選項,如果同名的過程已經存在則覆蓋原有過程。
--過程是命名的PL/SQL代碼塊,用is(as)關鍵字替代了declare作爲聲明語句段的開始。
--使用:
--要執行創建的過程,可以通過PL/SQL主程序或其他過程來調用;也可以在命令行工具中通過“execute 過程名”來調用執行。
--1.
-- begin
-- myproc;
-- end;
--2.
-- SQL>execute myproc;
--
create or replace procedure Ins_Orcl_Book (
Title in varchar2,
Author in varchar2,
ISBN in varchar2,
CBFXX in varchar2,
ZTXX in varchar2,
DTZRZ in varchar2,
ZRZ in varchar2,
ZGTSFLFH in varchar2,
KTTSFLFH in varchar2,
LTZT in varchar2,
FZX in varchar2,
CBSJ in date,
DJ in number,
PCJE in number
-- 14
)
is
begin
insert into Orcl_Book(Title, Author, ISBN, CBFXX, ZTXX, DTZRZ, ZRZ, ZGTSFLFH, KTTSFLFH, LTZT, FZX, CBSJ, DJ,PCJE) values(Title, Author, ISBN, CBFXX, ZTXX, DTZRZ, ZRZ, ZGTSFLFH, KTTSFLFH, LTZT, FZX, CBSJ, DJ,PCJE);
end;
--
--函數
--create or replace function 函數名(參數名 參數類型,......)
--return 返回值類型
--is
--begin
--end [函數名];
--
create or replace function Sel_Orcl_Book_1(a number) --:需要注意的是,函數必須有至少一個參數,即使不需要
return sys_refcursor --:需要注意的是,函數必須有一個返回值
is
cur sys_refcursor;
begin
open cur for select * from Orcl_Book; --此種寫法是固定的@************** 查詢時使用遊標 ******************@
return cur;
end;
--執行函數
declare
cur sys_refcursor;
rowone Orcl_Book%rowtype;
begin
cur:=Sel_Orcl_Book_1(1);
loop
fetch cur into rowone;
exit when cur%notfound;
dbms_output.put_line(rowone.title);
end loop;
close cur;
end;
--
--Oracle中提供的常用函數:
--1.單行SQL字符函數
--:ABS(n) 返回n的絕對值
--:ACOS()
--遊標
--:遊標換句話說就是查詢出的結果集,通過遊標我們更方便函數、存儲過程等的編寫,應用更方便。
--基本用法分4步
--1.定義遊標 CURSOR cursor_name IS select語句;
--2.打開遊標 OPEN cursor_name;
--3.取值 FETCH cursor_name INTO variable[,variable]......;
-- 取值一般是個循環的過程,所以應用是一般需要結合循環語句一起使用。
--4.關閉遊標 CLOSE cursor_name;
--遊標的4個重要屬性:
--%FOUND %NOTFOUND %ROWCOUNT %ISOPEN
--:遊標的2中應用
--:1 見函數 Sel_Orcl_Book_1(0);【上】:open cur_name for select語句:--
--:2
declare
cursor cur is select * from Orcl_Book;
rowone Orcl_Book%rowtype;
begin
open cur;
loop
fetch cur into rowone;
exit when cur%notfound;
dbms_output.put_line(rowone.title);
end loop;
close cur;
end;
--
--
--2種數據類型:
--1:Oracle提供的數據類型
--字符數據類型:char(n)、varchar2(n)、long
--數字數據類型:number(m,n)
--日期數據類型:date
--大對象數據類型:blob、clob、nclob
--Bfile數據類型
--其他:raw(n)、long row
--返回某列的數據類型(xxx表示列名):xxx%type
--返回某條記錄對象類型(即表的一行記錄爲一個對象)(xxx表示表名):xxx%rowtype
--2:自定義數據類型
--type ty_name is record(
-- stuID students.stu_id%type,
-- stuName varchar2
--);
--使用:myStu ty_name;
--#-包:略!
--觸發器
--分三類:::before、after、instead of
--before :表示在數據庫動作之前觸發器執行
--after :表示在數據庫動作之後觸發器執行
--instead of:觸發器能將數據庫動作替換爲其他操作
--
--創建觸發器:
--create or replace trigger 觸發器名
--after|before|instead of
--[insert] [[or] update [of column_list]] | [[or] delete] on 表名/視圖名
--[for each row] :對錶的每一行觸發器執行一次,如果沒有這一行,表示對整個表執行一次
--[when (條件)]
--PL/SQL語句
--觸發器示例,爲[XXX]表實現自增長列
create or replace trigger TRI_XL_BookClassID
before insert on Orcl_Book
for each row
when ( NEW.BookClassID is null )
begin
select XL_BookClassID.Nextval into :NEW.BookClassID from dual;
end;
--
create or replace trigger TRI_XL_StoreID
before insert on Orcl_StorePlace
for each row
when ( NEW.StoreID is null )
begin
select XL_StoreID.Nextval into :NEW.StoreID from dual;
end;
--
create or replace trigger TRI_XL_BookID
before insert on Orcl_Store
for each row
when ( NEW.BookID is null )
begin
select XL_BookID.Nextval into :NEW.BookID from dual;
end;
--
create or replace trigger TRI_XL_ReaderID
before insert on Orcl_Reader
for each row
when ( NEW.ReaderID is null )
begin
select XL_ReaderID.Nextval into :NEW.ReaderID from dual;
end;
--
create or replace trigger TRI_XL_RuleID
before insert on Orcl_Rule
for each row
when ( NEW.RuleID is null )
begin
select XL_RuleID.Nextval into :NEW.RuleID from dual;
end;
--
create or replace trigger TRI_XL_JYID
before insert on Orcl_JYB
for each row
when ( NEW.JYID is null )
begin
select XL_JYID.Nextval into :NEW.JYID from dual;
end;
--
create or replace trigger TRI_XL_CFID
before insert on Orcl_Cfb
for each row
when ( NEW.CFID is null )
begin
select XL_CFID.Nextval into :NEW.CFID from dual;
end;
--
---其他存儲過程
create or replace procedure Ins_Orcl_StorePlace (
MC in varchar2,
WZ in varchar2,
FZR in varchar2,
SM in varchar2
--:4
)
is
begin
insert into Orcl_StorePlace(MC, WZ, FZR, SM) values(MC, WZ, FZR, SM);
end;
--
create or replace procedure Ins_Orcl_Store (
BookClassID in number,
StoreID in number,
SQH in varchar2,
TMH in varchar2,
NJH in varchar2,
ZT in varchar2,
RGSJ in date
--:7
)
is
begin
insert into Orcl_Store(BookClassID, StoreID, SQH, TMH, NJH, ZT, RGSJ) values(BookClassID, StoreID, SQH, TMH, NJH, ZT, RGSJ);
end;
--
create or replace procedure Ins_Orcl_Reader(
ZJH in varchar2,
GH in varchar2,
BZRQ in date,
SXRQ in date,
GQRQ in date,
YJ in number,
SXF in number,
LJJS in number,
RuleID in number,
ZT in varchar2
)
is
begin
insert into Orcl_Reader(ZJH, GH, BZRQ, SXRQ, GQRQ, YJ, SXF, LJJS, RuleID, ZT) values(ZJH, GH, BZRQ, SXRQ, GQRQ, YJ, SXF, LJJS, RuleID, ZT);
end;
--
create or replace procedure Ins_Orcl_Rule(
GZMC in varchar2,
KJYTS in number,
KJYGCDID in varchar2,
KXJTS in number,
KXJCS in number,
KYYSJ in number
)
is
begin
insert into Orcl_Rule(GZMC, KJYTS, Kjygcdid, Kxjts, Kxjcs, Kyysj) values(GZMC, KJYTS, Kjygcdid, Kxjts, Kxjcs, Kyysj);
end;
--
create or replace procedure Ins_Orcl_JYB(
ReaderID number,
BookID number,
JYSJ date,
DQSJ date,
GHRQ date,
ZT varchar2,
XJCS number
)
is
begin
insert into Orcl_Jyb(ReaderID, Bookid, Jysj, Dqsj, Ghrq, Zt, Xjcs) values(ReaderID, Bookid, Jysj, Dqsj, Ghrq, Zt, Xjcs);
end;
--
create or replace procedure Ins_Orcl_CFB(
ReaderID number,
BookID number,
CFYY varchar2,
CFJG varchar2,
FKJE number,
ZT varchar2
)
is
begin
insert into orcl_cfb(readerid, bookid, cfyy, cfjg, fkje, zt) values(readerid, bookid, cfyy, cfjg, fkje, zt);
end;
--
Oracle學習筆記
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.