最近利用業(yè)余時間一直在看Oracle 10g開發(fā)這方面資料, 由于以前企業(yè)級項目對數據庫操作都是基于微軟的SQL2000與2005 版本偏多. 所以這段時間也是一個轉換過程.特意在網上訂購一本Oracle Database 10G SQL Master SQL and PL/SQL 這本書重新完整的 系統(tǒng)的進行梳理一遍.總體給我感覺是其實我就是在重新梳理結構化查詢語言(Structured Query Language/SQL) SQL .雖然做了一遍重復性工作. 但體會也是不同的. 類似這本書并沒有費了我很大精力 但給我感覺它就是一條細線. 把我以前遺留的片段全部關聯(lián)起來. 視野上更加趨于開闊.我慢慢才體會到. 做程序開發(fā)的工作其實可粗可細. 我們常常感慨一個技術大牛所作的創(chuàng)造性思維(類似Robert C.Martin關于敏捷實踐) 其實殊不知他們也是在逐漸積累過程中才有了創(chuàng)造. 就想一句話說的沒有任何事情是憑空而來.那么對于一個做技術出生的人一個完善的知識體系結構是相當重要的. 所以我更愿意傾向于一個科班出生的技術人員. 目前情況是社會上關于軟件開發(fā)培訓的快餐打亂了行業(yè)內這種格局, 格局我們沒法控制. 無論這種格局亂還是沒亂但歸咎到底還是一個技術人員在實際工作自我完善自己知識體系這種能力和意識. 對于他人的指導這種"外力的鞭子"抽的我們都有惰性. 自覺的意識才能真正力量. 這種并非一朝一夕的能夠成就的. 它是一個長時間 同時具有一定量積累才能沉淀出來的. 只有不斷完善自己知識體系 不斷學習.才是一個真正技術人員發(fā)展上要走長遠子路. 這也是我考察一個技術人員非常重要的標準.
這也是很多經歷了入門級別痛苦后程序員 最為迷茫一個問題. 以上最近這本書給我一點聯(lián)想. 轉入正題
Oracle Database 10G SQL Master SQL and PL/SQL :書樣 隨便推薦給各位. 內容雖然很簡單 但給我感覺細節(jié)上講的很全面 完全可以做為一個日常工作中查詢手冊也是沒有問題的.一方面它詳細而通用講述了SQL標準每個細節(jié). 同時也有兩章是Oracle公司自己擴展語法詳細講解.直接形成比對.及時將來遇到與SQL標準不同變更. 一眼就能看出來.
(A)SQL標準與三層.
又重新翻看這個結構化查詢語言(簡稱SQL)的"來世于前生"后.期間不經讓我聯(lián)想到到以前項目中對于底層數據訪問層三層架構思想 他們之間聯(lián)系. 先來看看SQL標準來歷:
1970年時有E.F.Cold博士提出關系型數據庫這個概率. 聽起來早就不新鮮了.但是SQL就是在E.F.Cold博士工作基礎自上發(fā)展而來. 其第一個實現(xiàn)就是有IBM在20世紀70年代中期開發(fā)的.當時IBM開展了一個成為System R的研究項目.SQL 就是從這項目中誕生的. 到了1979年底.一家當時成為Relational Software INc.的公司(其實大家應該都知道就是現(xiàn)在Oracle公司)發(fā)布了第一個商業(yè)版本的SQL. 隨著發(fā)展SQL已經被完全標準化了.而且獲得美國國家標準組織(American Standards Institute ANSI)認證.SQL可以用來訪問Oracle. SQL Server ,DB2.和MySQL 數據庫.直至發(fā)展到現(xiàn)在.
SQL在發(fā)展的實現(xiàn)標準化.也為三層分工實現(xiàn)編碼與數據庫依賴關系解耦. 編程語言不在依賴數據庫. 主要歸功于SQL訪問數據庫的標準化. 目前架設一下主流的數據Oracle. SqlServer DB2.MySQL每個都有自己一套數據庫訪問方式規(guī)則. 那是多么可怕一件事.當切換一個數據庫 我們就徹底扔掉了一個數據訪問層. 那么編碼應用程序就死死綁定數據庫上.而從嚴格三層定義來說. 拿掉任何一層都是可以重用. 顯示層. 業(yè)務邏輯層 與數據訪問層是沒有任何實際依賴的 層于層之間實現(xiàn)時一種獨立關系. 如果沒有SQL語言標準化.也就沒有實際意義上三層分工實現(xiàn). 現(xiàn)在項目中如果實現(xiàn)底層數據庫切換可以做一個簡單工廠模式 只需在修改簡單配置. 代價極小. 如果沒有SQL. 這一切就無從談起了.
(B)附Oracle 10G中關于表操作
附Oracle 10G下編碼: 內有詳細說明..其中操作非常簡單 不做贅述 對于其他一些關于Oracle 10G特有屬性將在后續(xù).后有詳細說明.
代碼
1 ———————-創(chuàng)建數據庫表成功—————————–
2 ——–ChaRu數據操作詳細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 –如果誤刪除了數據庫記錄 可以回滾數據
19 rollback;
20
21 insert into customers(customer_id, first_name, last_name,phone)
22 values(4,’再次ChaRu數據’,'fuck Again’,'13654215875′)
23
24 –ChaRu數據進行單引號和雙引號
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 –從一個表向另一個表復制行 (快速的植入數據注意修改了主鍵為10) 能用select union 測試不成功 可以使用 9i新增的merge語句來快速轉移
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來合并行數據 Oracle 9i版本引入了Merge關鍵之來合并數據
39 –可以用來將一個表的行合并到另一個表中(如果在轉換中需要處理等等 在合并數據)
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對應的值. 如果product_id存在
50 –并匹配 進行更新修改 如果不存在則在Product表ChaRu記錄數據 即可 使用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數據
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 當一行數據滿足了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
關鍵詞標簽:Oracle 10G,Oracle常用
相關閱讀
熱門文章
Oracle中使用alter table來增加,刪除,修改列的語法
oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例
誤刪Oracle數據庫實例的控制文件
為UNIX服務器設置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數據處理 Oracle刪除表的幾種方法