<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 14, 文章 - 39, 評論 - 17, 引用 - 0
    數據加載中……

    [轉]Oracle簡單示例講解

    預定義角色:

    1.CONNECT角色:????授于最終用戶的典型最基本的權利
    ALTER SESSION --修改會話
    CREATE CLUSTER --建立聚簇
    CREATE DATABASE LINK --建立數據庫鏈接
    CREATE SEQUENCE --建立序列
    CREATE SESSION --建立會話
    CREATE SYNONYM --建立同義詞
    CREATE VIEW --建立視圖

    2.RESOURCE角色:????是授予開發人員的
    CREATE CLUSTER --建立聚簇
    CREATE PROCEDURE --建立過程
    CREATE SEQUENCE --建立序列
    CREATE TABLE --建表
    CREATE TRIGGER --建立觸發器
    CREATE TYPE --建立類型

    3.DBA角色:擁有系統所有系統級權限


    4.IMP_FULL_DATABASE角色、EXP_FULL_DATABASE角色:
    BACKUP ANY TABLE --備份任何表
    EXECUTE ANY PROCEDURE --執行任何操作
    SELECT ANY TABLE --查詢任何表

    5.DELETE_CATALOG_ROLE角色:
    授予用戶這個角色,用戶就可以從表sys.aud$中刪除記錄,
    sys.aud$表中記錄著審計后的記錄,使用這個角色可以簡化審計蹤跡管理。


    6.SELECT_CATALOG_ROLE角色、EXECUTE_CATALOG_ROLE角色:
    SELECT_CATALOG_ROLE角色具有從數據字典查詢的權利,
    EXECUTE_CATALOG_ROLE角色具有從數據字典中執行部分過程和函數的權利。

    SQL*PLUS基礎
    在上一貼中,我們掌握了些基本的oracle操作,如創建、授權用戶,創建數據庫等。在OEM(Oracle Enterprise Manager)可視化的窗口環境中,雖然我們也可以很方便地做這些事,但是事實上,用SQL語言書寫在開發上更有效率!!oracle提供的SQL*Plus就是個不錯的工具,如果大家喜歡窗口的開發環境,用SQLPlus Worksheet也行!下面說點基本的西西!

    SQL(Structure Query Language)語言是結構化查詢語言,是數據庫的核心語言,是面向集合的描述性非過程化語言。
    SQL語言共分為四大類:數據查詢語言DQL,數據操縱語言DML,數據定義語言DDL,數據庫控制語言DCL。

    1.數據查詢語言DQL的基本結構是由select子句,from子句,where子句組成的查詢塊:
    select <字段名表> from <表或視圖名> where <查詢條件>

    2.數據操縱語言DML完成在數據庫中確定、修改、添加、刪除某一數據值的任務(以下是部分常用DML語句):
    insert????增加數據行到表
    delete????從表中刪除數據行
    Update????更改表中數據

    3.數據定義語言DDL完成定義數據庫的結構,包括數據庫本身、數據表、目錄、視圖等數據庫元素(以下是部分常用DDL語句)
    create table????創建表
    create index????創建索引
    create view????創建視圖
    alter table????增加表列,重定義表列,更改存儲分配
    drop table????刪除表
    drop index????刪除索引

    4.數據庫控制語言DCL用來授予或回收訪問數據庫的某種特權,并控制數據庫操縱事務發生的時間及效果,對數據庫實行監視等。如:
    grant????????將權限或角色授予用戶或其它角色
    revoke????????回收用戶權限
    roll????????回滾,是當某個對話更改了數據庫中的數據后,由于某種原因用戶不想提交此更改時,oracle所采取的保護操作。這是一個把信息恢復到用戶使update、insert、delete前最后提交的狀態。
    commit????????提交。在完成數據庫的插入,刪除和修改操作時,只有當事務提交到數據庫才算完成,有提交前只有操作數據庫的本人才能看到,別人只有在最后提交完成才可以看到。

    接下來,我們在SQL*Plus中實戰一下,為我們下面將要做的打好基礎。
    用system登陸到SQL*Plus后,我們做如下操作(這次沒有截圖,有詳細的說明)
    SQL>create user maxuan identified by max; #創建口令為max的用戶maxuan
    SQL>grant connect,resource to maxuan; #為用戶maxuan授權
    SQL>conn maxuan/max; #以用戶maxuan進行連接
    SQL>create table test(a number); #建立一個名為test的表,只有字段名為A的一列,數據類型為數字
    SQL>insert into test values(1); #插入一條記錄
    SQL>select * from test; #查詢記錄,此時A列的第一行為1
    SQL>update test set a=2; #更改記錄,此時A列的第一行已改為2
    SQL>commit; #提交
    SQL>delete from test; #刪除test表中所有的記錄,此時test表中沒有記錄
    SQL>roll; #回滾到提交前,此時再查詢test表,A列第一行值又回復到2

    oracle的數據類型
    在數據庫中創建數據表的時候,我們需要定義表中所有字段的類型,數據類型大致分為:character,numberic,date,lob和raw等,這些是最基本的數據類型。當然在oracle中也允許自定義數據類型!

    在oracle中提供的character數據類型:
    char(<size>:固定長度字符串,最大長度為2000字節,如果不指定長充,缺省為1個字節長。
    varchar2(<size>:可變長度的字符串,最大長度為4000字節,具體定義時指明最大長度,這種類型可以放數字、字母以及ASCII碼字符集(或者EBCDIC等數據庫系統接受的字符集標準)中的所有符號。如果數據長度沒有達到最大值,oracle會根據數據大小自動調節字段長度。是最長用的數據類型。
    nchar(<size>:根據字符集而定的固定長度字符串,最大長度2000字節。
    nvarchar2(<size>:根據字符集而定的可變長度字符串,最大長度4000字節。
    long:可變長字符列,最大長度限制為2GB,用于不需要作字符串搜索的長串數據。此類型是一個遺留下來的而且將來不會被支持的數據類型,逐漸被BLOB,CLOB,NCLOB等大的數據類型所取代。

    numberic數據類型用來存儲負的和正的整數,分數和浮點型數據,在oracle中提供的numberic數據類型:
    number(<m>,<n>:可變長的數值列,允許0、正值及負值,m是所有的有效數字的位數,n是小數點以后的位數。

    在oracle中提供的date數據類型:
    date:缺省格式是dd-mon-yy(日-月-年)

    在oracle中提供的lob數據類型:
    blob、clob、nclob:三種大型對象(lob),用來保存較大的圖形文件或帶格式的文本文件,如word文檔,以及音頻、視頻等非文本文件,最大長充是4GB。暈些數據存儲在數據庫內部保存。
    bfile:在數據庫外部保存的大型二進制對象文件,最大長度是4GB,這種外部的LOB類型,通過數據庫記錄變化情況,但是數據的具體保存是在數據庫外部進行的。

    在oracle中提供的raw數據類型:
    raw(<size>:可變長二進制數據,具體定義字段時必須指明最大長度,這種格式用來保存較小的圖形文件或帶格式的文本文件,它也是一種較老的數據類型,將被lob數據類型所取代。
    long raw:可變長二進制數據,最大長度是2GB,可以用來保存較大的圖形或帶格式的文本文件,以及音頻、視頻等非文本文件,這也是一種較老的數據類型,將被lob數據類型所取代。

    其它的數據類型:
    rowid:這是oracle數據表中的一個偽例,它是數據表中每行數據內在的唯一標識
    integer:整數類型


    創建購物網站后臺數據庫

    現在我們回到用J2EE體系開發購物網站的主題,開始實戰建購物網站的后臺數據庫。
    為了實現購物網站的基本的功能,我們需要建立四個表:商品列表(products)、商品類型表(item)、訂單列表(orders)和管理員列表(admin)。表結構如下所示:

    item表結構(商品類型表)
    字段名稱????數據類型????????允許空????主鍵/外鍵????備注????
    type_id????INTEGER(自動編號)????????主鍵????商品類別ID標記
    type????varchar2(30)????????????商品類別名稱

    product表結構(商品列表)
    字段名稱????數據類型????????允許空????主鍵/外鍵????備注
    product_id????INTEGER(自動編號)????????主鍵????商品ID標記
    title????varchar2(30)????????????商品名稱
    type_id????INTEGER????????????外鍵????商品類別標記
    info????varchar2(80)????????????商品簡介
    price????number(16,2)????????????商品價格

    orders表結構(訂單列表)
    字段名稱????數據類型????????允許空????主鍵/外鍵????備注
    order_id????INTEGER(自動編號)????????主鍵????訂單ID標記
    name????varchar2(20)????????????顧客姓名
    address????varchar2(100)????????????發貨地址
    tel????number(16)????????????聯系電話
    email????varchar2(30)????????????聯系email
    btime????date????????????????訂購日期
    product_id????INTEGER????????????外鍵????商品標記
    uword????varchar2(100)????????????顧客留言

    admin表結構(管理員列表)
    字段名稱????數據類型????????允許空????主鍵/外鍵????備注
    admin_id????INTEGER(自動編號)????????主鍵????管理員ID標記
    adminname????varchar2(20)????????????管理員名稱
    password????varchar2(20)????????????管理員密碼

    設計完表結構后,我們就要開始創建了。
    創建表我想已經不是什么難事了,那么我們要注意的是product、item、orders這三個表之間的關聯,還有自動編號。

    下面是完整的SQL語句,在后面我會給出詳細的說明,你可以在SQL*Plus里對照著輸入,也可以將它存為SQL腳本文件,在SQL*Plus或SQLPlus Worksheet里執行。當然也可以把代碼直接拷貝到SQL*Plus里執行!

    rem ///BY MAXUAN 開始///

    create table item(
    type_id integer not null,
    type varchar2(30),
    constraint item_pk primary key(type_id)
    );

    create table product(
    product_id integer not null,
    title varchar2(30) not null,
    type_id integer not null,
    info varchar2(80),
    price number(16,2) not null,
    constraint product_pk primary key (product_id),
    constraint product_fk foreign key(type_id) references item(type_id)
    );

    create table orders(
    order_id integer not null,
    name varchar2(20) not null,
    address varchar2(100),
    tel number(16),
    email varchar2(30) not null,
    btime date,
    product_id integer not null,
    uword varchar2(100),
    constraint orders_pk primary key(order_id),
    constraint orders_fk foreign key(product_id) references product(product_id)
    );

    create table admin(
    admin_id integer not null,
    adminname varchar2(20) not null,
    password varchar2(20) not null,
    constraint admin_pk primary key(admin_id)
    );

    create sequence type_id increment by 1 start with 1;
    create sequence product_id increment by 1 start with 1;
    create sequence order_id increment by 1 start with 1;
    create sequence admin_id increment by 1 start with 1;

    rem ///BY MAXUAN 結束///

    說明一:建立表之間的關聯
      product、item、orders三個表通過公共域,通常稱為鍵域(Key Field)進行關聯,存在兩種類型的鍵:主鍵(Primary key)和外部鍵(Foreign key)。主鍵使表中的數據行保持唯一,在表product中,product_id為主鍵,表orders中也包含有product_id,此時的product_id就是外部鍵。一個表的外部鍵從其它表中獲取信息。看看上面的SQL語句,應該會了吧!建立主外鍵的SQL語句詳解如下:
    constraint 主鍵名 primary key (字段名)
    constraint 外部鍵名 foreign key(字段名) references 對應表(對應字段)
    當不指名主鍵名或外部鍵名時,系統將使用默認名稱!
    如果你要刪除一個主鍵或外部鍵時,用如下寫法:
    ALTER TABLE 表名 DROP CONSTRAINT 主鍵名或外部鍵名
    如果是主/唯一關鍵字被外部鍵引用,先要刪除外部鍵,然后才能刪除主鍵!!

    說明二:關于自動編號
      在access中有自動編號的數據類型,MSSQL和MYSQL也都有自動增長的數據類型,插入記錄時不用操作此字段,會自動獲得數據值,而oracle沒有自動增長的數據類型,我們需要建立一個自動增長的序列號,插入記錄時要把序列號的下一個值賦于此字段,可以預見的是,有此功能,我們可以把數據從ACCESS、MSSQL或MYSQL遷移到oracle了!
    create sequence type_id increment by 1 start with 1;
    這句中,type_id為序列號的名稱,每次增長為1,起始序號為1。
    如果要刪除序列,用drop sequence 序列名就可以了!!



    posted on 2006-12-13 17:57 mlw2000 閱讀(489) 評論(0)  編輯  收藏 所屬分類: databases

    主站蜘蛛池模板: 亚洲av中文无码乱人伦在线观看| 亚洲欧美日韩自偷自拍| 久久久综合亚洲色一区二区三区| 亚洲视频在线观看视频| 国产亚洲综合精品一区二区三区| 免费h视频在线观看| 国产精品jizz在线观看免费| 亚洲天堂一区二区| 成人免费网站久久久| 无人在线直播免费观看| 亚洲国产另类久久久精品| 亚洲日韩在线中文字幕综合| 88av免费观看| 亚洲第一极品精品无码久久| AAA日本高清在线播放免费观看| 四虎永久成人免费| 国产成人精品日本亚洲专区6| 久久99青青精品免费观看| 亚洲欧洲久久av| 老司机午夜精品视频在线观看免费| 亚洲视频在线免费播放| 久久久久亚洲精品美女| 最近免费mv在线电影| 亚洲一卡2卡3卡4卡5卡6卡 | 成人永久免费高清| 亚洲一区二区三区高清不卡| 日韩中文字幕免费| 中文字幕av无码不卡免费| 亚洲综合久久夜AV | 免费福利在线观看| 日韩伦理片电影在线免费观看| 免费精品国产自产拍在线观看 | 亚洲精品午夜无码电影网| 无码的免费不卡毛片视频 | 亚洲成av人片不卡无码久久| 在线91精品亚洲网站精品成人| 亚洲午夜精品久久久久久浪潮| 免费国产黄网站在线观看视频| 国产精品亚洲аv无码播放| 免费a级毛片无码a∨蜜芽试看| 亚洲一卡2卡三卡4卡无卡下载|