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
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語句的幾點說明:
其實也不是啥說明了,都是書上面的例子,不過懶的敲了,而且感覺沒有啥太大意義,都是需要大家理解的。給不給例子是一樣的。
1. 因為之前我在日志中介紹創建表結構的時候,字段是可以有默認值的,在MySQL4.0.3及更高版本都支持一個DEFAULT關鍵字,在我們使用 insert 語句的時候,可以使字段的值等於DEFAULT關鍵字,來使其等於數據庫創建的時候的default值。
2. AUTOINCREMENT自增字段,這個我們是不用給出值的,因為系統會自動為該字段來進行自增,但是如果您願意,也是可以傳值的,看您心情。
3. UNIQUE這個我們也說過,就是字段唯一的意思,比如說用戶的id設置UNIQUE,已經存在一條用戶id為1的數據,如果此時您再想插入一條用戶id為1的數據是不會成功的,系統會出錯的。
4. 如果數據庫字段允許存在NULL值的話,我們在insert插入語句中,也是可以將字段值設為NULL的。