SQL筆記(11) 修改資料

2021-10-25 09:46:21 字數 4037 閱讀 8135

向資料庫表中插入一條新記錄

基本語法:

insert

into

《表名》

(欄位1

, 欄位2,.

..)values

(值1, 值2,.

..);

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

insert

into students (class_id, name, gender, score)

values(2

,'大牛'

,'m',80

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

select

*from students;

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

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

insert

into students (class_id, name, gender, score)

values(1

,'大寶'

,'m',87

),(2

,'二寶'

,'m',81

);select

*from students;

更新資料庫表中的記錄

基本語法:

update

《表名》

set 欄位1

=值1, 欄位2

=值2,..

.where..

.;

(1)更新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;

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

update students set score=score+

10where score<80;

-- 查詢並觀察結果:

select

*from students;

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

update students set score=

100where id=

999;

-- 查詢並觀察結果:

select

*from students;

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

update students set score=

60;

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

(5)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看到。

刪除資料庫表中的記錄

基本語法:

delete

from

《表名》

where..

.;

(1) 刪除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;

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

delete

from students where id=

999;

-- 查詢並觀察結果:

select

*from students;

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

delete

from students;

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

(3)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)

SQL修改資料

關聯式資料庫的基本操作就是增刪改查,即crud create retrieve update delete。其中,對於查詢,我們已經詳細講述了select語句的詳細用法。而對於增 刪 改,對應的sql語句分別是 insert 插入新記錄 update 更新已有記錄 delete 刪除已有記錄。ins...

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,表示客戶端的字符集的設定,...