MySQL中Update與Insert語句用法詳解

來源:互聯網
上載者:User

MySQL 更新資料 Update 語句

update 語句的定義:

UPDATE文法可以用新值更新原有表行中的各列。讓我們先來看一下update語句標準的定義,放在[]內的都是可以省略的:

 代碼如下 複製代碼


UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]


set子句指示要修改哪些列和要給予哪些值。where子句指定應更新哪些行。如果省略了update的where子句,表中的第一個單獨行都會受到update語句的影響,這是很危險的,其後果是讓你欲哭無淚,加班加點非但不受表揚反而處處白眼。頭經常說的一句話就是"硬碟有價,資料無價",真理啊。

update 語句樣本:

為了簡單說明一下效果,我們依舊使用在前面講解insert語句時用過的表結構:

 代碼如下 複製代碼


create table links (name varchar(255) not null default '', url varchar(255) not null default '');


把現有資料庫中使用者名稱為xiaoxiaozi的名字改為simaopig,SQL如下:

 代碼如下 複製代碼


update links set name='simaopig' where name='xiaoxiaozi'


把資料庫中所有的連結地址都改為hzhuti,則使用如下SQL:

 代碼如下 複製代碼


update links set url='http://www.111cn.net';


update 語句也可執行計算或調用函數:

這點和insert語句是一樣的,可以使用update語句執行計算或者調用函數,然後利用 這些操作的結果進行更新。這個樣本很好給出,當我們安裝完mysql資料庫時,一般情況下root使用者是沒有密碼的,此時我們可以使用如下語句為root使用者佈建密碼為:123456


 

 代碼如下 複製代碼
update user set Password = password('123456') where User = 'root';

MySQL 插入資料 Insert 語句


insert 語句的定義:

INSERT用於向一個已有的表中插入新行。INSERT...VALUES語句根據明確指定的值插入行。讓我們先來看一下insert語句標準的定義,放在[]內的都是可以省略的:

 代碼如下 複製代碼


INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

[INTO] tbl_name [(col_name,...)]

VALUES ({expr | DEFAULT},...),(...),...

[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]


這個文法是很簡單的,根據英語單詞的意思就可以直接翻譯過來:插入 表名(欄位1名,欄位2名) values (欄位1的值,欄位2的值);

insert 語句樣本:

為了簡單說明一下效果,我們來建立如下結構的Mysql資料表,來方便後面的一些樣本:

 代碼如下 複製代碼


create table links (name varchar(255) not null default '', url varchar(255) not null default '');


插入一條資料,name設為xiaoxiaozi,url設為http://www.111cn.net可以用如下文法

 代碼如下 複製代碼

insert into links(name,url) values('xiaoxiaozi','http://www.111cn.net');


插入完資料後,我們可以使用select * from links;語句來查詢看資料是否已經成功插入。

insert 語句省略欄位名樣本:

我們使用insert語句的時候,可以省略欄位名,這時,我們需要按照資料庫定義的欄位順序來將資料插入到資料庫中。如上例的表結構,就先定義的name,然後定義的欄位url

我們可以用如下代碼插入一條與上例同樣的資料:

 代碼如下 複製代碼


insert into links values('xiaoxiaozi','http://www.111cn.net');


insert 語句一次插入多條資料:

假如我們想一次性的往資料庫裡插入多條資料咋辦?一定要寫多條語句嗎?肯定是不會的,因為MySQL設計的還是很人性的。其提供insert語句的一種非標準格式,即,values(欄位值1,欄位值2,欄位值3),(另一個欄位1的值,另一個欄位2的值,另一個欄位3的值);

 代碼如下 複製代碼


# 同時插入兩條資料,看文法說明,那個into被我省略了
insert links (name,url) values('xiaoxiaozi','http://www.111cn.net'),('xiaoxiaozi','http://www.111cn.net');


insert 語句使用update 語句的set方式插入資料:

mysql還提供了另一種方法插入資料,同樣是使用insert語句,但是文法是非標準版的,您可以理解為山寨。呵呵,山寨威武嘛。MySQL允許我們讓insert語句使用update的set結構來插入資料:


 

 代碼如下 複製代碼
# 使用insert set 結構插入資料
insert into links set name='xiaoxiaozi',url='http://www.111cn.net';


關於insert語句的幾點說明:

其實也不是啥說明了,都是書上面的例子,不過懶的敲了,而且感覺沒有啥太大意義,都是需要大家理解的。給不給例子是一樣的。

1. 因為之前我在日誌中介紹建立表結構的時候,欄位是可以有預設值的,在MySQL4.0.3及更高版本都支援一個DEFAULT關鍵字,在我們使用 insert 語句的時候,可以使欄位的值等於DEFAULT關鍵字,來使其等於資料庫建立的時候的default值。

2. AUTOINCREMENT自增欄位,這個我們是不用給出值的,因為系統會自動為該欄位來進行自增,但是如果您願意,也是可以傳值的,看您心情。

3. UNIQUE這個我們也說過,就是欄位唯一的意思,比如說使用者的id設定UNIQUE,已經存在一條使用者id為1的資料,如果此時您再想插入一條使用者id為1的資料是不會成功的,系統會出錯的。

4. 如果資料庫欄位允許存在NULL值的話,我們在insert插入語句中,也是可以將欄位值設為NULL的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.