天天看點

資料操作

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,如需轉載請自行聯系原作者