SQL修改資料

2021-09-29 20:16:36 字數 4347 閱讀 5875

關聯式資料庫的基本操作就是增刪改查,即crud:create、retrieve、update、delete。其中,對於查詢,我們已經詳細講述了select語句的詳細用法。

而對於增、刪、改,對應的sql語句分別是:

insert:插入新記錄;

update:更新已有記錄;

delete:刪除已有記錄。

insert語句的基本語法是:

insert into 《表名》 (欄位1, 欄位2, …) values (值1, 值2, …);

例如,我們向students表插入一條新記錄,先列舉出需要插入的欄位名稱,然後在values子句中依次寫出對應欄位的值:

insert

into students (class_id, name, gender, score)

values(2

,'大牛'

,'m',80

);-- 查詢並觀察結果:

select

*from students;

注意到我們並沒有列出id欄位,也沒有列出id欄位對應的值,這是因為id欄位是乙個自增主鍵,它的值可以由資料庫自己推算出來。此外,如果乙個欄位有預設值,那麼在insert語句中也可以不出現。

要注意,字段順序不必和資料庫表的字段順序一致,但值的順序必須和字段順序一致。也就是說,可以寫insert into students (score, gender, name, class_id) …,但是對應的values就得變成(80, 『m』, 『大牛』, 2)。

還可以一次性新增多條記錄,只需要在values子句中指定多個記錄值,每個記錄是由(…)包含的一組值:

insert

into students (class_id, name, gender, score)

values(1

,'大寶'

,'m',87

),(2

,'二寶'

,'m',81

);select

*from students;

小結

使用insert,我們就可以一次向乙個表中插入一條或多條記錄。

update

如果要更新資料庫表中的記錄,我們就必須使用update語句。

update語句的基本語法是:

update

《表名》

set 欄位1

=值1, 欄位2

=值2,..

.where..

.;

例如,我們想更新students表id=1的記錄的name和score這兩個字段,先寫出update students set name=『大牛』, score=66,然後在where子句中寫出需要更新的行的篩選條件id=1:

update students set name=

'大牛'

, score=

66where id=1;

-- 查詢並觀察結果:

select

*from students where id=

1;

注意到update語句的where條件和select語句的where條件其實是一樣的,因此完全可以一次更新多條記錄:

update students set name=

'小牛'

, score=

77where id>=

5and id<=7;

-- 查詢並觀察結果:

select

*from students;

在update語句中,更新欄位時可以使用表示式。例如,把所有80分以下的同學的成績加10分:

update students set score=score+

10where score<80;

-- 查詢並觀察結果:

select

*from students;

其中,set score=score+10就是給當前行的score欄位的值加上了10。

如果where條件沒有匹配到任何記錄,update語句不會報錯,也不會有任何記錄被更新。例如:

update students set score=

100where id=

999;

-- 查詢並觀察結果:

select

*from students;

最後,要特別小心的是,update語句可以沒有where條件,例如:

update students set score=60;

這時,整個表的所有記錄都會被更新。所以,在執行update語句時要非常小心,最好先用select語句來測試where條件是否篩選出了期望的記錄集,然後再用update更新。

mysql

在使用mysql這類真正的關聯式資料庫時,update語句會返回更新的行數以及where條件匹配的行數。

例如,更新id=1的記錄時:

mysql>

update students set name=

'大寶'

where id=1;

query ok,

1row affected (

0.00 sec)

rows

matched: 1 changed: 1

warnings: 0

mysql會返回1,可以從列印的結果rows matched: 1 changed: 1看到。

當更新id=999的記錄時:

mysql>

update students set name=

'大寶'

where id=

999;

query ok,

0rows affected (

0.00 sec)

rows

matched: 0 changed: 0

warnings: 0

mysql會返回0,可以從列印的結果rows matched: 0 changed: 0看到。

小結使用update,我們就可以一次更新表中的一條或多條記錄。

如果要刪除資料庫表中的記錄,我們可以使用delete語句。

delete語句的基本語法是:

delete from 《表名》 where …;

例如,我們想刪除students表中id=1的記錄,就需要這麼寫:

delete

from students where id=1;

-- 查詢並觀察結果:

select

*from students;

注意到delete語句的where條件也是用來篩選需要刪除的行,因此和update類似,delete語句也可以一次刪除多條記錄:

delete

from students where id>=

5and id<=7;

-- 查詢並觀察結果:

select

*from students;

如果where條件沒有匹配到任何記錄,delete語句不會報錯,也不會有任何記錄被刪除。例如:

delete

from students where id=

999;

-- 查詢並觀察結果:

select

*from students;

最後,要特別小心的是,和update類似,不帶where條件的delete語句會刪除整個表的資料:

delete from students;

這時,整個表的所有記錄都會被刪除。所以,在執行delete語句時也要非常小心,最好先用select語句來測試where條件是否篩選出了期望的記錄集,然後再用delete刪除。

mysql

在使用mysql這類真正的關聯式資料庫時,delete語句也會返回刪除的行數以及where條件匹配的行數。

例如,分別執行刪除id=1和id=999的記錄:

mysql>

delete

from students where id=1;

query ok,

1row affected (

0.01 sec)

mysql>

delete

from students where id=

999;

query ok,

0rows affected (

0.01 sec)

小結

使用delete,我們就可以一次刪除表中的一條或多條記錄。

SQL批量修改資料

1 批量替換 期中的年份 以替換為2019年為例 update 資料表名 set 期時間字段 stuff convert nvarchar 23 期時間字段,120 1,4,2019 2 批量替換 期中的 份 以替換為6 為例 update 資料表名 set 期時間字段 stuff convert ...

sql修改資料 oracle修改資料庫字符集

1.檢視資料庫字符集 資料庫伺服器字符集 select from nls database parameters 其 於props 是表示資料庫的字符集。客戶端字符集環境 select from nls instance parameters 其 於v parameter,表示客戶端的字符集的設定,...

SQL基礎 修改資料 INSERT

向資料庫中插入一條新紀錄時,就必須使用insert語句 語法insert into 表 欄位1 欄位2,values 值1,值2,students表 例項 向students表插入一條新紀錄 insert into students class id,name,gender,score values...