1. 程式人生 > >Oracle學習筆記第六天

Oracle學習筆記第六天

Oracle學習筆記第六天

這篇要記錄資料相關的操作了,其實在資料庫的操作中,90%以上我覺得都是對資料的操作,畢竟在DBA定好資料庫結構後基本上就不會再動,之後就是使用者的增加與許可權的變更。

資料的CRUT(增刪查改)中90%以上也是資料的查詢,當資料插入進去後,多數情況下是將資料讀取出來進行資料的分析和展示,哪個公司沒事會隨意的插入資料然後在修改和刪除的。所以查詢將單獨開來。

增:

增加資料可以單獨增加一條資料,也可以批量匯入資料,還可以將其他表裡的資料複製過來。

新增一條資料:
insert into [user.]table [@db_link][(column1[
,column2...])] values (express1[,express2...])
1. insert into: 固定語法
2. user:表示要插入的表屬於的使用者名稱,如果是本使用者,可以不寫,其他使用者的話,應該要注意許可權,我這邊暫時沒有遇到將資料插入到別的使用者表裡的。
3. table:資料要插入哪張表的表名
4. @db_link:資料庫連線名,額,這個沒用過,暫時不明白,
5. [(column1[,column2...])]:
	這部分表示列名,可以不寫,不寫表示插入的資料包括表裡所有的欄位,寫的話,表示插入的資料只有寫的那幾個欄位。
6. values:固定語法
7. (express1[,express2...]):插入的資料,如果之前沒寫列名,則這裡插入的資料要與所有的欄位對應,如果寫了列名,這裡的資料需要與列名對應。
建議:插入資料時不管是不是全部插入,最好寫列名,這樣可以清晰的知道插入了什麼資料,同時,如果以後萬一對錶的欄位進行修改了,這樣的話也不會受到影響。
批量插入資料:
insert into [user.]table [@db_link][(column1[,column2...])] 
Subguery
前面關鍵字一樣,
Subgery:是子查詢語句,可以是任何合法的 select 語句,但是其查詢出來的結果必須和前面的欄位相對應。(列即欄位)
建表時插入資料:
create table 表名 as Subguery;
Subguery:和上面的一樣。
這玩意好使,比如說你要修改某張表裡的資料,而這張表在公司裡面很重要,萬一沒弄好,就是刪庫跑路的節奏了,這時,你可以先用這個語句把表裡的資料拷貝出來,相當於對這張表建一個備份,然後操作這個備份表,成功了在操作原表,出了事,刪掉也不影響原表,但是直接幹原表就不一樣了...
再次強調:這個可以用來對錶進行備份。

刪:

DELETE FROM table_name [WHERE cndition]
DELETE FROM:固定語法
table_name:表名
[WHERE cndition]:判斷條件,如果不加條件,則會刪除表裡的所有資料,當然,按第五天寫的,假的條件類似 1=1 這種判定 100% 為true的,也會全部刪掉。如果只想刪除指定資料,則需要新增判斷符合刪除的條件,按照條件刪除。
建議使用 DELETE 語句一定要帶上 WHERE 子句;否則將會把表裡的所有資料全部刪除,不過貌似可以恢復,至於怎麼恢復,會沒研究。書上寫可以使用rollback進行回滾,但沒幹過,我覺得好像之前有提到一個回滾空間,刪除的資料應該儲存在那裡面,所以這樣幹掉了資料還不至於刪庫跑路...
truncate table table_name [REUSE STORAGE / DROP STORAGE]
truncate table:固定語法
table_name:表名
[REUSE STORAGE]:新增這個關鍵字表示刪除記錄後任然儲存記錄佔用的空間。
[DROP STORAGE]: 新增這個關鍵字表示刪除記錄後立即回收記錄佔用的空間。
如果確定要刪除表中的所有資料,建議使用 TRUNCATE 語句,使用 TRUNCATE語句刪除資料時,很多情況下速度比DELETE 語句要快,但是這個它不會產生回滾資訊,刪除後操作時不能撤銷的。

改:

UPDATE table_name 
set { column1 = express [,column2 = express2...]
  (column1[,column2])=(select query)}
[where condition]
update:這部分用來指定要修改的表的名稱,後面需要跟一個或者多個要修改的表名,不能少。
set:這部分用於設定要更新的列和更新的列的新值。
where:這部分可選,後面可以增加限定條件,限定更新哪些資料,如果不加則更新的數整張表。
select:將查詢的值賦給對應的列,這裡注意,查詢出來的值只能由一個,如果為多個,則會報錯。