3.1、資料操作
3.1.1、先把emp表複制一份
複制的文法:CREATE TABLE 複制的表名稱 AS (原表的查詢語句)
CREATE TABLE myemp AS (SELECT * FROM emp) ;
3.1.2、插入操作
現在要向myemp表中增加一條新的記錄 —— 增加新的雇員
現在要把以下的資料插入:
• 雇員編号為:7777
• 雇員姓名:張三
• 職務:清潔工
• 上司:7369使用者
• 工資:1000
• 獎金:200
• 部門:40部門
• 雇傭日期:2001-3-14
插入的時候:
• 如果資料的類型為NUMBER,則不用加單引号,表示插入的是數字
• 如果資料類型為VARCHAR(),則表示字元串,插入時必須用單引号括起來
• 如果資料類型為DATE,則表示日期,插入的時候要按照标準的日期格式插入,按字元串的形式
INSERT INTO myemp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
VALUEs (7777,'張三','清潔工',7369,'14-3月-2001',1000,200,40) ;
資料插入的時候如果明确的要将全部的字段插入内容,也可以不用去寫要插入的列名稱
INSERT INTO myemp VALUEs (7778,'李四','清潔工',7369,'14-3月-2001',1000,200,40) ;
注意1:
如果插入的内容是日期格式,除了按照本身的日期格式編寫外,也可以使用to_date函數完成字元串向日期的轉換。
INSERT INTO myemp VALUEs (7778,'李四','清潔工',7369,to_date('2001-3-14','YYYY-MM-DD'),1000,200,40) ;
注意2:
如果使用了插入的時候不寫列名稱的語句形式,則如果有的内容為空,必須明确的給出null值。
INSERT INTO myemp VALUEs (7779,'王五','清潔工',7369,null,1000,null,40) ;
注意3:
可以将一張表的資料集中插入到表中(隻限與表結構相同的情況下操作)
把emp表中的資料插入到myemp表中:INSERT INTO myemp SELECT * FROM emp ;
3.1.3、更新操作
UPDATE myemp SET ename='趙六',job='總經理',sal=6000
如果執行以上代碼,則肯定所有的記錄都會被修改,現在希望的是隻修改一個使用者的資訊。
UPDATE myemp SET ename='趙六',job='總經理',sal=6000 WHERE empno=7777 ;
現在使用者已經沒有上級,他是最高上司,mgr編号肯定無效了,應該為null?
UPDATE myemp SET mgr=null WHERE empno=7777 ; 更新的時候依然可以更新值為null。
更新也有一些其他的功能:可以基于另一個表的資料更新本張表(比較少見)
将一個使用者的工作換成編号為7566的雇員的工作,經理編号也與7566相同。
UPDATE myemp SET(job,mgr) = (SELECT job,mgr FROM myemp WHERE empno=7566) WHERE empno=7779 ;
3.1.4、删除資料
删除一個雇員的資訊:
DELETE FROM myemp WHERE empno=7779 ;
如果在删除語句之後不編寫WHERE,則表示删除全部的資料;
3.1.5、事務處理
在一個用戶端的修改,并沒有影響到真正的資料。
如果修改的時候要想把修改真正的起作用就必須使用到事務
事務解釋:
張三想去大連拜訪朋友,從北京出發。去之前說了:請幫我買一張三天後回北京的車票,但是後來張三出事了,沒去成。要立刻跟他朋友說,我去不了了,不要幫我買票。
出發,買票是有關聯的,要麼同時成功,要麼有一個失敗則同時失敗。
因為事務沒有送出,是以資料的更新是無法看見的
• 事務的送出:commit,隻有真正被送出了,資料庫的資訊才能變更
• 事務的復原:rollback,如果有錯誤則可以通過此指令回退到最原始的狀态
事務的使用注意:
如果一個使用者更新資料庫的時候,還沒有進行送出,則其他使用者是不能更新此資料庫的。此時的現象稱為“死鎖”,永無休止的等待ing…。
本文轉自 李興華 51CTO部落格,原文連結:http://blog.51cto.com/lixinghua/91213,如需轉載請自行聯系原作者