天天看點

SQL基礎整理(四) 資料的插入,删除和更新,以及事物

一.關于資料的插入  INSERT INTO 語句

1. 關于insert 的基本文法為 insert into 表名(需要插入的屬性也就是列名) values(具體的值),其中多個列名之間用逗号分隔,多個values之間也用逗号分隔,如果是對表中全部的列名插入,那麼則不需要指定列名

比如表中有一列叫做name,有一列叫做number,那麼如果隻對name進行插入,則應該寫為

insert into 表名(name) values ('WE');

如果是說是對所有的列進行插入,則應該寫為

insert into 表名 values('IG',20); 或者是  insert into(name,number) values('WE',20);

2. 原則上,執行一次insert語句向表中插入一行資料,但是在實際操作中,你要插入很多行資料,就需要寫很多insert 語句,這是一個很麻煩的過程,那麼下面介紹一個插入多行的方法,還是以前面提到的表為示例

insert into 表名 values('we',20),('ig',21),('edg',22),('rng',23);

但是 如果是在oracle中,則應該寫成insert all into 表名values('we',20)

                                                                  into 表名values('edg',22)

                                                                  into 表名values('rng',23)

3.從其他表中複制資料

如果之前提過表名叫做student,現在有一張和他一模一樣的表叫做student_2,兩個表中的字段完全一樣,我們想要把student中的資料複制到student_2中,文法如下

insert into student_2(name,number)

select name,number from student;

 二.資料的删除 DELETE文法

1. 删除整張表 drop table student; 删除之後,資料庫中就沒有叫做student的表了

2. 删除表中的資料 delete from student where 條件; 如果不指定條件,則删除表中所有資料

3.介紹一種效率更高的删除整張表的文法 TRUNCATE 表名

三.資料的更新 UPDATE文法

1.首先 update是對表中已有的資料進行更新的操作

2. 基本文法 update student set name='SKT ' where 條件  同樣的不寫條件,則對表中所有行進行更新

3.多列更新-->兩種文法,但是隻對最通用的文法進行介紹

update student set name='SKT', number=4396 where 條件

四.事物

1. 事物這個概念和作業系統中的 原語 類似,對于一件事 要麼不做 要麼全做

2. 大家如果使用Oracle  中的sql plus 進行花式操作之後,直接關閉sql plus,那麼當你再次打開的時候會發現,資料庫中什麼都沒有,這就是因為 你退出之前忘記了儲存,這就需要在最後寫一個  commit;表示進行送出處理

3. 資料庫對于事物是怎麼看待的呢,首先 你需要指定出 事物的包含範圍,即哪些語句算作一次事物

對于 MySQL 來說  START TRANSACTION 表示你開始了一個事物,當你打算結束這次事物的時候,可以寫commit 或者是rollback

對于 Oracle,DB2 來說 不需要指定事物何時開始,隻需要當你在事物結束的時候寫commit 或者是 rollback

對于 SQL Sever 用 BEGIN TRANSACTION 表示事物的開始

4. 在上面提到了 commit 和rollback ,那麼這兩個是什麼意思呢???

commit: 是送出事物包含的全部更新出來的結束指令,相當于檔案進行中的覆寫儲存,一旦送出無法回複

rollback: 是取消事物包含的全部更新出來的結束指令,相當于檔案進行中的放棄儲存,一旦确定 之前做的所有操作全部付之東流