mysql數據庫insert和update操作

SQL語句分類:
a.DDL 數據定義語言  create  drop  alter
b.DML 數據操作語言  select  insert  update  delete
b.DCL 數據控制語言  grant   revoke
c.TCL 事務控制語言  transaction(begin)   commit   rollback

創建一個庫:
mysql> create database dba;
進入數據:
mysql> use dba;
創建一張表:
create table user(id int not null auto_increment,
    name varchar(8),
    birthday datetime,
    constraint pk__person primary key(id));

查看錶結構:
mysql> desc user;
+----------+------------+------+-----+---------+----------------+
| Field    | Type       | Null | Key | Default | Extra          |
+----------+------------+------+-----+---------+----------------+
| id       | int(11)    | NO   | PRI | NULL    | auto_increment |
| name     | varchar(8) | YES  |     | NULL    |                |
| birthday | datetime   | YES  |     | NULL    |                |
+----------+------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
插入語句:
mysql> insert into user(id,name,birthday) values(1,'lisi','1991-04-26');
Query OK, 1 row affected (0.01 sec)
查詢表內容:
mysql> select * from user;
+----+------+---------------------+
| id | name | birthday            |
+----+------+---------------------+
|  1 | lisi | 1991-04-26 00:00:00 |
+----+------+---------------------+
1 row in set (0.00 sec)

AUTO_INCREMENT說明:
(1)如果把一個NULL插入到一個AUTO_INCREMENT數據列裏去,MySQL將自動生成下一個序列編號。編號從1開始,並1爲基數遞增。
(2)把0插入AUTO_INCREMENT數據列的效果與插入NULL值一樣。但不建議這樣做,還是以插入NULL值爲好。
(3)當插入記錄時,沒有爲AUTO_INCREMENT明確指定值,則等同插入NULL值。
(4)當插入記錄時,如果爲AUTO_INCREMENT數據列明確指定了一個數值,則會出現兩種情況,情況一,如果插入的值與已有的編號重複,則會出現出錯信息,因爲AUTO_INCREMENT數據列的值必須是唯一的;情況二,如果插入的值大於已編號的值,則會把該數據插入到數據列中,並使在下一個編號將從這個新值開始遞增。也就是說,可以跳過一些編號。
(5)如果用UPDATE命令更新自增列,如果列值與已有的值重複,則會出錯。如果大於已有值,則下一個編號從該值開始遞增。

創建表的語句(id int not null auto_increment)。
mysql> insert into user(id,name,birthday) values(null,'zhangsan','1992-04-26');
Query OK, 1 row affected (0.02 sec)
mysql> select * from user;
+----+----------+---------------------+
| id | name     | birthday            |
+----+----------+---------------------+
|  1 | lisi     | 1991-04-26 00:00:00 |
|  2 | zhangsan | 1992-04-26 00:00:00 |
+----+----------+---------------------+
2 rows in set (0.00 sec)

如果省去id這一列,insert數據發現也是成功的.
mysql> insert into user(name,birthday) values('wangwu','1993-07-26');
Query OK, 1 row affected (0.02 sec)
mysql> select * from user;
+----+----------+---------------------+
| id | name     | birthday            |
+----+----------+---------------------+
|  1 | lisi     | 1991-04-26 00:00:00 |
|  2 | zhangsan | 1992-04-26 00:00:00 |
|  3 | wangwu   | 1993-07-26 00:00:00 |
+----+----------+---------------------+
3 rows in set (0.00 sec)
mysql> desc user;
+----------+------------+------+-----+---------+----------------+
| Field    | Type       | Null | Key | Default | Extra          |
+----------+------------+------+-----+---------+----------------+
| id       | int(11)    | NO   | PRI | NULL    | auto_increment |
| name     | varchar(8) | YES  |     | NULL    |                |
| birthday | datetime   | YES  |     | NULL    |                |
+----------+------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
注意:插入數據時,數字可以不加單引號(''),但字符串必須加單引號('').
_________________________________________________________________________________________________________________
mysql update用法:
update語法:
update 表名 set 列1=新值,列2=新值 where expr.
mysql> select * from user;
+----+----------+---------------------+
| id | name     | birthday            |
+----+----------+---------------------+
|  1 | lisi     | 1991-04-26 00:00:00 |
|  2 | zhangsan | 1992-04-26 00:00:00 |
|  3 | wangwu   | 1993-07-26 00:00:00 |
+----+----------+---------------------+
3 rows in set (0.00 sec)
mysql> update user set birthday = '2018-1-15' where name='zhangsan';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from user;
+----+----------+---------------------+
| id | name     | birthday            |
+----+----------+---------------------+
|  1 | lisi     | 1991-04-26 00:00:00 |
|  2 | zhangsan | 2018-01-15 00:00:00 |
|  3 | wangwu   | 1993-07-26 00:00:00 |
+----+----------+---------------------+
3 rows in set (0.00 sec)

mysql> update user set name='lucy' where birthday='1993-07-26';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from user;
+----+----------+---------------------+
| id | name     | birthday            |
+----+----------+---------------------+
|  1 | lisi     | 1991-04-26 00:00:00 |
|  2 | zhangsan | 2018-01-15 00:00:00 |
|  3 | lucy     | 1993-07-26 00:00:00 |
+----+----------+---------------------+
3 rows in set (0.00 sec)

update操作多個列的數據時,中間使用逗號','分割開.
mysql> update user set name='saluya',birthday='2010-01-11' where id=2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
mysql> select * from user;
+----+--------+---------------------+
| id | name   | birthday            |
+----+--------+---------------------+
|  1 | lisi   | 1991-04-26 00:00:00 |
|  2 | saluya | 2010-01-11 00:00:00 |
|  3 | lucy   | 1993-07-26 00:00:00 |
+----+--------+---------------------+
3 rows in set (0.00 sec)

當update操作並沒有匹配到where條件時,update操作不會報錯.
mysql> update user set birthday='1991-06-25' where name='wangtian';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0
mysql> select * from user;
+----+----------+---------------------+
| id | name     | birthday            |
+----+----------+---------------------+
|  1 | lisi     | 1991-04-26 00:00:00 |
|  2 | zhangsan | 2018-01-15 00:00:00 |
|  3 | wangwu   | 1993-07-26 00:00:00 |
+----+----------+---------------------+
3 rows in set (0.00 sec)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章