韓順平玩轉Oracle視頻資料整理


1.oracle10g 11g:g(grid)表示網格技術
  以baidu搜索為准,現在想使用一個軟件,但是此軟件在離自己非常近的地方就存在了下載地址,但是與自己非常遠的地方也同樣存在一個下載地址,而搜索引擎就有可能沒有搜索到離自己近的下載,而是使用了更遠的下載。那么這樣一來肯定會造成資源的浪費。
  所以新的網格概念就是將網絡划分一個個的網格,通過網格表示一個區域。
  先找自己所在的"網格",找不到的話再去找其他"網格"。

2.輸出環境變量設置:
每行顯示的長度: set linesize 長度  (默認80)
每頁顯示的長度: set pagesize 長度

3.命令行輸入:"sqlplusw"進入sqlplusw窗口操作界面
  在窗口中輸入"ed 文件名稱",輸入完后,會提示用戶是否創建文件。
  編輯完成后,就可以通過@文件名稱的方式來執行命令了。
  以下幾種輸入方式都是正確的:
  假設新創建的文件demo是在D盤的根目錄下面
  (1)txt文件
  @d:\demo.txt
  @d:demo.txt
  (2)sql文件(默認的是sql文件,其他格式的文件執行的時候必須帶后綴名)
  @d:\demo
  @d:demo

4.子查詢的分類
(1)單列子查詢:返回的結果是只有一列。
(2)單行子查詢:返回的結果是只有一行,有坑是一條完整的記錄。
(3)多行子查詢:返回多行記錄。

5.事務處理
  所謂事務處理就是保證數據操作的完整性,所有的操作要么全部成功,要么全部失敗。
  每一個連接到數據庫上的用戶都是一個session。

6.組函數和統計函數、聚合函數是同一個概念
  統計函數:max()、min()、avg()、sum()、count() 
  (1).統計函數必須出現在分組統計之中。
  (2).所謂分組是只列中存在重復的內容,使用group by的方式進行分組的統計。
  (3).如果要加入分組條件,則編寫having 子句,所有的統計函數作為條件的時候
  只能在having中出現,不能在where中出現。
  (4)分組函數允許嵌套,但是嵌套之后就不能再查詢其他字段,包括分組字段。

7.添加檢查約束:
 --匿名
 age number(3) not null check(age between 0 and 100)    
 sex varcahr2(2) default '' check(sex in ('',''))

 --命名
 檢查約束: constranit tablename_age_ck(約束名稱)      check(age between 0 and 100)
 主鍵約束: constranit tablename_id_pk(約束名稱)       primary key(id)
 唯一約束: constranit tablename_name_uk(約束名稱)     unique(name)
 外鍵約束: constranit tablename_name_fk(約束名稱)     foreign key(字段) references 父表名稱(父表主鍵字段)

 約束的修改:
 alter table tablename add constranit ablename_name_uk(約束名稱)  unique(name);
 約束的刪除:
 alter table tablename drop constranit ablename_name_uk(約束名稱);

8.級聯刪除
刪除表的同時刪除約束: drop table tablename cascade constranit
刪除時級聯刪除內容: constranit tablename_id_pk(約束名稱)   primary key(id) on delete cascade

9.嵌套表:
  一張表中又包含有一個子表
舉例:
(1)創建子表類型
create type project_ty as object
(
    proid    number(4),
    proname  varchar2(20),
    prodata  date
);

(2)為類型創建一個名稱
create type project_nt as table of project_ty;

(3)創建嵌套表
create table department
(
    deptno    number(2)     primary key not null,
    dname     varchar2(20)  not null,
    projects  project_nt
)nested table projects store as project_nt_tab_temp;

插入數據:
insert into department(deptno,dname,projects)
values(1,'研發部',
          project_nt(
                      project_ty(1001,'f1',sysdate),
                      project_ty(1002,'f2',sysdate),
                      project_ty(1003,'f3',sysdate)
                    )
);

嵌套表查詢:
select * from department;
select * from table(select projects from department where deptno=1);

嵌套表的更新:
--將項目編號為1001的項目名稱,將此項目名稱更新為"測試項目"
update tabletable(select projects from department where deptno=1) pro
   set value(project_ty('1001','測試項目',sysdate))
 where pro.proid = 1001;

10.可變數組
例如:一個部門有多個工人
(1)首先要創建一個工人類型
create type worker_ino as object(
    id    number,
    name  varchar2(20),
    sex   varchar2(2)
);

(2)創建數組類型
create type work_info_list as varry(10) of worker_info;

(3)創建表
create table department
(
    deptno    number(2)     primary key not null,
    dname     varchar2(20)  not null,
    works     work_info_list 
);

插入測試數據
insert into department(deptno,dname,works)
values(1,'研發部',
          worker_info_list(
                      worker_info(1,'張三',''),
                      worker_info(2,'李四',''),
                      worker_info(3,'王五','')
                    )
);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM