IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當前所在位置: 首頁數(shù)據(jù)庫Oracle → Oracle 10G關(guān)于表操作常用語句詳解及隨想

Oracle 10G關(guān)于表操作常用語句詳解及隨想

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

  最近利用業(yè)余時間一直在看Oracle 10g開發(fā)這方面資料, 由于以前企業(yè)級項目對數(shù)據(jù)庫操作都是基于微軟的SQL2000與2005 版本偏多. 所以這段時間也是一個轉(zhuǎn)換過程.特意在網(wǎng)上訂購一本Oracle Database 10G SQL Master SQL and PL/SQL 這本書重新完整的 系統(tǒng)的進行梳理一遍.總體給我感覺是其實我就是在重新梳理結(jié)構(gòu)化查詢語言(Structured Query Language/SQL) SQL .雖然做了一遍重復性工作. 但體會也是不同的. 類似這本書并沒有費了我很大精力 但給我感覺它就是一條細線. 把我以前遺留的片段全部關(guān)聯(lián)起來. 視野上更加趨于開闊.我慢慢才體會到. 做程序開發(fā)的工作其實可粗可細. 我們常常感慨一個技術(shù)大牛所作的創(chuàng)造性思維(類似Robert C.Martin關(guān)于敏捷實踐) 其實殊不知他們也是在逐漸積累過程中才有了創(chuàng)造. 就想一句話說的沒有任何事情是憑空而來.那么對于一個做技術(shù)出生的人一個完善的知識體系結(jié)構(gòu)是相當重要的. 所以我更愿意傾向于一個科班出生的技術(shù)人員. 目前情況是社會上關(guān)于軟件開發(fā)培訓的快餐打亂了行業(yè)內(nèi)這種格局, 格局我們沒法控制. 無論這種格局亂還是沒亂但歸咎到底還是一個技術(shù)人員在實際工作自我完善自己知識體系這種能力和意識. 對于他人的指導這種"外力的鞭子"抽的我們都有惰性. 自覺的意識才能真正力量. 這種并非一朝一夕的能夠成就的. 它是一個長時間 同時具有一定量積累才能沉淀出來的. 只有不斷完善自己知識體系 不斷學習.才是一個真正技術(shù)人員發(fā)展上要走長遠子路. 這也是我考察一個技術(shù)人員非常重要的標準.

  這也是很多經(jīng)歷了入門級別痛苦后程序員 最為迷茫一個問題. 以上最近這本書給我一點聯(lián)想. 轉(zhuǎn)入正題

  Oracle Database 10G SQL Master SQL and PL/SQL :書樣 隨便推薦給各位. 內(nèi)容雖然很簡單 但給我感覺細節(jié)上講的很全面 完全可以做為一個日常工作中查詢手冊也是沒有問題的.一方面它詳細而通用講述了SQL標準每個細節(jié). 同時也有兩章是Oracle公司自己擴展語法詳細講解.直接形成比對.及時將來遇到與SQL標準不同變更. 一眼就能看出來.

  (A)SQL標準與三層.

  又重新翻看這個結(jié)構(gòu)化查詢語言(簡稱SQL)的"來世于前生"后.期間不經(jīng)讓我聯(lián)想到到以前項目中對于底層數(shù)據(jù)訪問層三層架構(gòu)思想 他們之間聯(lián)系. 先來看看SQL標準來歷:

  1970年時有E.F.Cold博士提出關(guān)系型數(shù)據(jù)庫這個概率. 聽起來早就不新鮮了.但是SQL就是在E.F.Cold博士工作基礎(chǔ)自上發(fā)展而來. 其第一個實現(xiàn)就是有IBM在20世紀70年代中期開發(fā)的.當時IBM開展了一個成為System R的研究項目.SQL 就是從這項目中誕生的. 到了1979年底.一家當時成為Relational Software INc.的公司(其實大家應(yīng)該都知道就是現(xiàn)在Oracle公司)發(fā)布了第一個商業(yè)版本的SQL. 隨著發(fā)展SQL已經(jīng)被完全標準化了.而且獲得美國國家標準組織(American Standards Institute ANSI)認證.SQL可以用來訪問Oracle. SQL Server ,DB2.和MySQL 數(shù)據(jù)庫.直至發(fā)展到現(xiàn)在.

  SQL在發(fā)展的實現(xiàn)標準化.也為三層分工實現(xiàn)編碼與數(shù)據(jù)庫依賴關(guān)系解耦. 編程語言不在依賴數(shù)據(jù)庫. 主要歸功于SQL訪問數(shù)據(jù)庫的標準化. 目前架設(shè)一下主流的數(shù)據(jù)Oracle. SqlServer DB2.MySQL每個都有自己一套數(shù)據(jù)庫訪問方式規(guī)則. 那是多么可怕一件事.當切換一個數(shù)據(jù)庫 我們就徹底扔掉了一個數(shù)據(jù)訪問層. 那么編碼應(yīng)用程序就死死綁定數(shù)據(jù)庫上.而從嚴格三層定義來說. 拿掉任何一層都是可以重用. 顯示層. 業(yè)務(wù)邏輯層 與數(shù)據(jù)訪問層是沒有任何實際依賴的 層于層之間實現(xiàn)時一種獨立關(guān)系. 如果沒有SQL語言標準化.也就沒有實際意義上三層分工實現(xiàn). 現(xiàn)在項目中如果實現(xiàn)底層數(shù)據(jù)庫切換可以做一個簡單工廠模式 只需在修改簡單配置. 代價極小. 如果沒有SQL. 這一切就無從談起了.

  (B)附Oracle 10G中關(guān)于表操作

  附Oracle 10G下編碼: 內(nèi)有詳細說明..其中操作非常簡單 不做贅述 對于其他一些關(guān)于Oracle 10G特有屬性將在后續(xù).后有詳細說明.

  代碼

  1 ———————-創(chuàng)建數(shù)據(jù)庫表成功—————————–

  2 ——–ChaRu數(shù)據(jù)操作詳細SQL記錄–

  3 ——–Author:chenkai Date:2010年2月21日15:50:58–

  4 –oracle中顯示日期格式為:DD-MON-YY dd是代表日 mon是月份前三個字母大寫.yy 年份最后兩位實際上存儲年是4位 顯示的為2位

  5

  6 select * from customers

  7

  8 insert into customers(customer_id,first_name,last_name,phone)

  9 values(1,’chenkai’,'ge’,'15895426521′);

  10

  11 insert into customers(customer_id,first_name,last_name,phone)

  12 values(2,’marik’,'陳凱’,'13854642541′);

  13

  14 update customers set first_name=’chenkaiunion’ where customer_id=1

  15

  16 delete from customers where customer_id=2

  17

  18 –如果誤刪除了數(shù)據(jù)庫記錄 可以回滾數(shù)據(jù)

  19 rollback;

  20

  21 insert into customers(customer_id, first_name, last_name,phone)

  22 values(4,’再次ChaRu數(shù)據(jù)’,'fuck Again’,'13654215875′)

  23

  24 –ChaRu數(shù)據(jù)進行單引號和雙引號

  25 insert into customers(customer_id, first_name,last_name)

  26 values( 5,’測試單引號’,'Bei"Jing-單引成功了’)

  27

  28

  29 insert into customers(customer_id, first_name,last_name)

  30 values( 6,’測試雙引號’,'The "Great Wall LED"‘)

  31

  32 select * from customers

  33

  34 –從一個表向另一個表復制行 (快速的植入數(shù)據(jù)注意修改了主鍵為10) 能用select union 測試不成功 可以使用 9i新增的merge語句來快速轉(zhuǎn)移

  35 insert into customers(customer_id,first_name,last_name)

  36 select 10,first_name,last_name from customers where customer_id=4

  37

  38 –使用merger來合并行數(shù)據(jù) Oracle 9i版本引入了Merge關(guān)鍵之來合并數(shù)據(jù)

  39 –可以用來將一個表的行合并到另一個表中(如果在轉(zhuǎn)換中需要處理等等 在合并數(shù)據(jù))

  40 create table product_change

  41 (

  42 product_id integer constraint change_pk primary key,

  43 product_typeid integer constraint product_type_fkid references product_type(product_id),

  44 name varchar2(130) not null,

  45 description varchar(130),

  46 price number(5,2)

  47 );

  48

#p#副標題#e#

  49 –需求是這樣:對于Product 和product_change兩個表中product_id相同的行,將Product中各列里值修改成Product_change對應(yīng)的值. 如果product_id存在

  50 –并匹配 進行更新修改 如果不存在則在Product表ChaRu記錄數(shù)據(jù) 即可 使用merge來操作

  51 merge into products pro

  52 using product_change pc on(

  53 pro.product_id=pc.product_id

  54 )

  55 –當匹配時修改

  56 when matched then

  57 update set

  58 pro.product_typeid=pc.product_typeid,

  59 pro.product_name=pc.name,

  60 pro.product_content=pc.description,

  61 pro.product_price=pc.price

  62 –當不匹配是 ChaRu數(shù)據(jù)

  63 when not matched then

  64 insert(pro.productid,pro.product_typeid,pro.product_name,pro.product_content,pro.product_price)

  65 values

  66 (

  67 pc.product_id,

  68 pc.product_typeid,

  69 pc.name,

  70 pc.description,

  71 pc.price

  72 );

  73 –操作完成

  74 –merger into 子句指明了合并操作的目標表(要合并到的表) 命名成一個別名 pro 下面都用這個來替代

  75 –using -on子句指定了一個表連接 上面指定的Product表中Product——id和Product——change表中Product_id建立連接

  76 –when matched then 當一行數(shù)據(jù)滿足了Using…on條件時執(zhí)行操作 同理而言下面操作

  77

  78 –使用update語句修改行

  79 –定義一個變量

  80 variable average_product_prices number

  81 update products set price=prices*0.75 returning avg(price) into:average_product_prices;

  82

  83

  84 –使用默認值 測試成功

  85 create table userdefaultdemo

  86 (

  87 demo_id integer constraint demo_pk primary key,

  88 datestatus varchar(200) default ‘no placed it’’s take’ not null,

  89 last_modifieddate date default sysdate not null

  90 );

  91

  92 d

關(guān)鍵詞標簽:Oracle 10G,Oracle常用

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索 為UNIX服務(wù)器設(shè)置Oracle全文檢索

相關(guān)下載

    人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法