隨筆-93  評(píng)論-78  文章-11  trackbacks-0

          平臺(tái): windows server 2003 Enterprise Editon , oracle 10g(10.02.00.01)

          1. 運(yùn)行"開(kāi)始->程序\Oracle - OraDb10g_home1\配置和移植工具"中的"Database Configuration Assistant",創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
          2. 創(chuàng)建成功后,運(yùn)行"開(kāi)始->程序\Oracle - OraDb10g_home1\應(yīng)用程序開(kāi)發(fā)"中的"SQL Plus".用戶名:sys 密碼:123456 as sysdba(密碼后面要加空格as空格sysdba) 主機(jī)字符串:如果是本機(jī)可不填。
          3. 從命令提示符下使用sql*plus
            sqlplus/nolog
            conn 用戶名/密碼 as sysdba 出現(xiàn)”已連接“后就是成功了。

              
            接下來(lái),我們?cè)赟QL*Plus中實(shí)戰(zhàn)一下,為我們下面將要做的打好基礎(chǔ)。
            用system登陸到SQL*Plus后,我們做如下操作(這次沒(méi)有截圖,有詳細(xì)的說(shuō)明)
          -----------如登陸成功此1-3步不必做,直接做第4步----------------
          1. SQL>create user maxuan identified by max; #創(chuàng)建口令為max的用戶maxuan
          2. SQL>grant connect,resource to maxuan; #為用戶maxuan授權(quán)
          3. SQL>conn maxuan/max; #以用戶maxuan進(jìn)行連接
          4. SQL>create table test(a number); #建立一個(gè)名為test的表,只有字段名為A的一列,數(shù)據(jù)類型為數(shù)字
          5. SQL>insert into test values(1); #插入一條記錄
          6. SQL>select * from test; #查詢記錄,此時(shí)A列的第一行為1
          7. SQL>update test set a=2; #更改記錄,此時(shí)A列的第一行已改為2
          8. SQL>commit; #提交.在完成數(shù)據(jù)庫(kù)的插入,刪除和修改操作時(shí),只有當(dāng)事務(wù)提交到數(shù)據(jù)庫(kù)才算完成。
          9. SQL>delete from test; #刪除test表中所有的記錄,此時(shí)test表中沒(méi)有記錄
          10. SQL>roll; #回滾到提交前,此時(shí)再查詢test表,A列第一行值又回復(fù)到2
            
            oracle的數(shù)據(jù)類型
            在數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)表的時(shí)候,我們需要定義表中所有字段的類型,數(shù)據(jù)類型大致分為:character,numberic,date,lob和raw等,這些是最基本的數(shù)據(jù)類型。當(dāng)然在oracle中也允許自定義數(shù)據(jù)類型!
            
            在oracle中提供的character數(shù)據(jù)類型:
            char():固定長(zhǎng)度字符串,最大長(zhǎng)度為2000字節(jié),如果不指定長(zhǎng)充,缺省為1個(gè)字節(jié)長(zhǎng)。
            varchar2():可變長(zhǎng)度的字符串,最大長(zhǎng)度為4000字節(jié),具體定義時(shí)指明最大長(zhǎng)度,這咱類型可以放數(shù)字、字母以及ASCII碼字符集(或者EBCDIC等數(shù)據(jù)庫(kù)系統(tǒng)接受的字符集標(biāo)準(zhǔn))中的所有符號(hào)。如果數(shù)據(jù)長(zhǎng)度沒(méi)有達(dá)到最大值,oracle會(huì)根據(jù)數(shù)據(jù)大小自動(dòng)調(diào)節(jié)字段長(zhǎng)度。是
            
            最長(zhǎng)用的數(shù)據(jù)類型。
            nchar():根據(jù)字符集而定的固定長(zhǎng)度字符串,最大長(zhǎng)度2000字節(jié)。
            nvarchar2():根據(jù)字符集而定的可變長(zhǎng)度字符串,最大長(zhǎng)度4000字節(jié)。
            long:可變長(zhǎng)字符列,最大長(zhǎng)度限制為2GB,用于不需要作字符串搜索的長(zhǎng)串?dāng)?shù)據(jù)。此類型是一個(gè)遺留下來(lái)的而且將來(lái)不會(huì)被支持的數(shù)據(jù)類型,逐漸被BLOB,CLOB,NCLOB等大的數(shù)據(jù)類型所取代。
            
            numberic數(shù)據(jù)類型用來(lái)存儲(chǔ)負(fù)的和正的整數(shù),分?jǐn)?shù)和浮點(diǎn)型數(shù)據(jù),在oracle中提供的numberic數(shù)據(jù)類型:
            number(,):可變長(zhǎng)的數(shù)值列,允許0、正值及負(fù)值,m是所有的有效數(shù)字的位數(shù),n是小數(shù)點(diǎn)以后的位數(shù)。
            
            在oracle中提供的date數(shù)據(jù)類型:
            date:缺省格式是dd-mon-yy(日-月-年)
            
            在oracle中提供的lob數(shù)據(jù)類型:
            blob、clob、nclob:三種大型對(duì)象(lob),用來(lái)保存較大的圖形文件或帶格式的文本文件,如word文檔,以及音頻、視頻等非文本文件,最大長(zhǎng)充是4GB。暈些數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)內(nèi)部保存。
            bfile:在數(shù)據(jù)庫(kù)外部保存的大型二進(jìn)制對(duì)象文件,最大長(zhǎng)度是4GB,這種外部的LOB類型,通過(guò)數(shù)據(jù)庫(kù)記錄變化情況,但是數(shù)據(jù)的具體保存是在數(shù)據(jù)庫(kù)外部進(jìn)行的。
            
            在oracle中提供的raw數(shù)據(jù)類型:
            raw():可變長(zhǎng)二進(jìn)制數(shù)據(jù),具體定義字段時(shí)必須指明最大長(zhǎng)度,這種格式用來(lái)保存較小的圖形文件或帶格式的文本文件,它也是一種較老的數(shù)據(jù)類型,將被lob數(shù)據(jù)類型所取代。
            long raw:可變長(zhǎng)二進(jìn)制數(shù)據(jù),最大長(zhǎng)度是2GB,可以用來(lái)保存較大的圖形或帶格式的文本文件,以及音頻、視頻等非文本文件,這也是一種較老的數(shù)據(jù)類型,將被lob數(shù)據(jù)類型所取代。
            
            其它的數(shù)據(jù)類型:
            rowid:這是oracle數(shù)據(jù)表中的一個(gè)偽例,它是數(shù)據(jù)表中每行數(shù)據(jù)內(nèi)在的唯一標(biāo)識(shí)
            integer:整數(shù)類型
            
          補(bǔ)充知識(shí):
          SQL(Structure Query Language)語(yǔ)言是結(jié)構(gòu)化查詢語(yǔ)言,是數(shù)據(jù)庫(kù)的核心語(yǔ)言,是面向集合的描述性非過(guò)程化語(yǔ)言。SQL語(yǔ)言共分為四大類:數(shù)據(jù)查詢語(yǔ)言DQL,數(shù)據(jù)操縱語(yǔ)言DML,數(shù)據(jù)定義語(yǔ)言DDL,數(shù)據(jù)庫(kù)控制語(yǔ)言DCL。
            
            1.數(shù)據(jù)查詢語(yǔ)言DQL的基本結(jié)構(gòu)是由select子句,from子句,where子句組成的查詢塊:
            select <字段名表> from <表或視圖名> where <查詢條件>
            
            2.數(shù)據(jù)操縱語(yǔ)言DML完成在數(shù)據(jù)庫(kù)中確定、修改、添加、刪除某一數(shù)據(jù)值的任務(wù)(以下是部分常用DML語(yǔ)句):
            insert  增加數(shù)據(jù)行到表
            delete  從表中刪除數(shù)據(jù)行
            Update  更改表中數(shù)據(jù)
            
            3.數(shù)據(jù)定義語(yǔ)言DDL完成定義數(shù)據(jù)庫(kù)的結(jié)構(gòu),包括數(shù)據(jù)庫(kù)本身、數(shù)據(jù)表、目錄、視圖等數(shù)據(jù)庫(kù)元素(以下是部分常用DDL語(yǔ)句)
            create table  創(chuàng)建表
            create index  創(chuàng)建索引
            create view  創(chuàng)建視圖
            alter table  增加表列,重定義表列,更改存儲(chǔ)分配
            drop table  刪除表
            drop index  刪除索引
            
            4.數(shù)據(jù)庫(kù)控制語(yǔ)言DCL用來(lái)授予或回收訪問(wèn)數(shù)據(jù)庫(kù)的某種特權(quán),并控制數(shù)據(jù)庫(kù)操縱事務(wù)發(fā)生的時(shí)間及效果,對(duì)數(shù)據(jù)庫(kù)實(shí)行監(jiān)視等。如:
            grant    將權(quán)限或角色授予用戶或其它角色
            revoke    回收用戶權(quán)限
            roll    回滾,是當(dāng)某個(gè)對(duì)話更改了數(shù)據(jù)庫(kù)中的數(shù)據(jù)后,由于某種原因用戶不想提交此更改時(shí),oracle所采取的保護(hù)操作。這是一個(gè)把信息恢復(fù)到用戶使update、insert、delete前最后提交的狀態(tài)。
            commit    提交。在完成數(shù)據(jù)庫(kù)的插入,刪除和修改操作時(shí),只有當(dāng)事務(wù)提交到數(shù)據(jù)庫(kù)才算完成,有提交前只有操作數(shù)據(jù)庫(kù)的本人才能看到,別人只有在最后提交完成才可以看到。

            一個(gè)購(gòu)物網(wǎng)站后臺(tái)數(shù)據(jù)庫(kù)實(shí)例:
            現(xiàn)在我們回到用J2EE體系開(kāi)發(fā)購(gòu)物網(wǎng)站的主題,開(kāi)始實(shí)戰(zhàn)建購(gòu)物網(wǎng)站的后臺(tái)數(shù)據(jù)庫(kù)。
            為了實(shí)現(xiàn)購(gòu)物網(wǎng)站的基本的功能,我們需要建立四個(gè)表:商品列表(products)、商品類型表(item)、訂單列表(orders)和管理員列表(admin)。表結(jié)構(gòu)如下所示:
            
            item表結(jié)構(gòu)(商品類型表)
            字段名稱  數(shù)據(jù)類型    允許空  主鍵/外鍵  備注  
            type_id  INTEGER(自動(dòng)編號(hào)) 否  主鍵   商品類別ID標(biāo)記
            type          varchar2(30)        否       商品類別名稱
            
            product表結(jié)構(gòu)(商品列表)
            字段名稱   數(shù)據(jù)類型   允許空  主鍵/外鍵  備注
            product_id INTEGER(自動(dòng)編號(hào)) 否         主鍵  商品ID標(biāo)記
            title               varchar2(30)    否                    商品名稱
            type_id         INTEGER    否         外鍵  商品類別標(biāo)記
            info             varchar2(80)      是                   商品簡(jiǎn)介
            price            number(16,2)    否                   商品價(jià)格
            
            orders表結(jié)構(gòu)(訂單列表)
            字段名稱  數(shù)據(jù)類型    允許空  主鍵/外鍵  備注
            order_id  INTEGER(自動(dòng)編號(hào)) 否        主鍵  訂單ID標(biāo)記
            name         varchar2(20)       否                  顧客姓名
            address    varchar2(100)      是                 發(fā)貨地址
            tel                number(16)          是                  聯(lián)系電話
            email          varchar2(30)         否                 聯(lián)系email
            btime               date          是                  訂購(gòu)日期
            product_id  INTEGER     否        外鍵    商品標(biāo)記
            uword         varchar2(100) 是                 顧客留言
            
            admin表結(jié)構(gòu)(管理員列表)
            字段名稱  數(shù)據(jù)類型    允許空  主鍵/外鍵  備注
            admin_id  INTEGER(自動(dòng)編號(hào)) 否         主鍵    管理員ID標(biāo)記
            adminname  varchar2(20)          否                     管理員名稱
            password  varchar2(20)            否                     管理員密碼
            
            設(shè)計(jì)完表結(jié)構(gòu)后,我們就要開(kāi)始創(chuàng)建了。
            創(chuàng)建表我想已經(jīng)不是什么難事了,那么我們要注意的是product、item、orders這三個(gè)表之間的關(guān)聯(lián),還有自動(dòng)編號(hào)。
            
            下面是完整的SQL語(yǔ)句,在后面我會(huì)給出詳細(xì)的說(shuō)明,你可以在SQL*Plus里對(duì)照著輸入,也可以將它存為SQL腳本文件,在SQL*Plus或SQLPlus Worksheet里執(zhí)行。當(dāng)然也可以把代碼直接拷貝到SQL*Plus里執(zhí)行!
            
            代碼:
            rem ///BY MAXUAN 開(kāi)始///
            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)
            );
          posted on 2007-11-13 12:12 wahaha 閱讀(1064) 評(píng)論(0)  編輯  收藏 所屬分類: Oracle 數(shù)據(jù)庫(kù)入門筆記
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          收藏夾

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 陈巴尔虎旗| 桃园县| 海口市| 云霄县| 兴安盟| 合阳县| 无为县| 廊坊市| 太仓市| 安化县| 会同县| 班玛县| 博湖县| 横山县| 八宿县| 塔城市| 德令哈市| 余江县| 河津市| 申扎县| 桃源县| 万年县| 维西| 丽江市| 东乡县| 河北省| 琼海市| 绍兴市| 梁河县| 沐川县| 隆林| 台前县| 日土县| 灵丘县| 尉氏县| 大渡口区| 关岭| 古交市| 尚志市| 青浦区| 盘锦市|