MySQL 基础之十二:增删改
主要内容:
本篇文章的主要讲解增(插)、删、改如何用 SQL 语句操作,以及一些注意事项。
增(insert):
insert 就是插入数据,语法格式:insert into 表名(字段 1,字段 2,... ...)values(值 1,值 2,... ...);
小贴士:字段的数量和值的数量相同,并且数据类型要对应相同
插入的时候可以全部字段插入,字段顺序也可以调换,当然也可以只插入一个字段,这个时候,其他字段自动为 NULL。
案例:
本文用的表是上一篇文章中所建的表,先来查看一下表结构:
mysql> desc t_student;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| no | bigint(20) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| sex | varchar(10) | YES | | NULL | |
| classno | char(10) | YES | | NULL | |
| birth | char(10) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.04 sec)
现在我们想修改字段 classno 的数据类型以及长度为 varchar(255),怎么办?
mysql> alter table t_student modify column classno varchar(255);
修改之后,再来查看一下表结构:
mysql> desc t_student;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| no | bigint(20) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| sex | varchar(10) | YES | | NULL | |
| classno | varchar(255) | YES | | NULL | |
| birth | char(10) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
我们现在查看一下编码字符集:
mysql> show variables like 'character_set_%'
-> ;
+--------------------------+---------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files (x86)\MySQL\MySQL Server 5.5\share\charsets\ |
+--------------------------+---------------------------------------------------------------+
从上表中可以看到,客户端以及服务器端都是用 utf8 进行编码,但是我们用的 windows 用的字符集是 gbk,因此,我们不更改字符集的话,通过命令行是无法插入中文的。开发中一般都是用 utf8 进行编码,因此本文我们不更改编码字符集,但是要知道有这个事。
现在我们插入一条数据:
mysql> insert into t_student (no,name,sex,classno,birth) values(1,'Mary','0','dayi','1995-04-23');
Query OK, 1 row affected (0.02 sec)
查看一下插入结果:
mysql> select * from t_student;
+------+------+------+---------+------------+
| no | name | sex | classno | birth |
+------+------+------+---------+------------+
| 1 | Mary | 0 | dayi | 1995-04-23 |
+------+------+------+---------+------------+
1 row in set (0.00 sec)
省略字段插入数据:
如果我们插入数据时,所有的字段都插入,这个时候我们就可以省略字段。
mysql> insert into t_student values(2,'Bob','1','daer','1997-09-12');
然后我们查询一下表格,看数据是否插入成功。
mysql> select * from t_student;
+------+------+------+---------+------------+
| no | name | sex | classno | birth |
+------+------+------+---------+------------+
| 1 | Mary | 0 | dayi | 1995-04-23 |
| 2 | Bob | 1 | daer | 1997-09-12 |
+------+------+------+---------+------------+
2 rows in set (0.00 sec)
数据插入成功。
一次插入多行数据怎么办呢?
values(),(),... ... ;
改(update):
update 中文的意思就是更新的意思,语法格式如下:
update 表名 set 字段 1=值 1,字段 2=值 2, ... ..。where 条件;
小贴士:如果后面没有 where 条件,则整张表都会被修改
案例:
现在我们把第 1 条数据 Mary 名字改为 Jack。
mysql> update t_student set name='Jack' where no=1;
mysql> select * from t_student;
+------+------+------+---------+------------+
| no | name | sex | classno | birth |
+------+------+------+---------+------------+
| 1 | Jack | 0 | dayi | 1995-04-23 |
| 2 | Bob | 1 | daer | 1997-09-12 |
+------+------+------+---------+------------+
2 rows in set (0.00 sec)
从上面的查询结果看,数据修改成功。
删(delete):
delete 就是删除的意思,语法格式:
delete from 表名 where 条件;
小贴士:如果没有条件,数据被全部删除
现在我们删除掉第 1 条数据。
mysql> delete from t_student where no=1;
现在再来查询一下表中的数据:
mysql> select * from t_student;
+------+------+------+---------+------------+
| no | name | sex | classno | birth |
+------+------+------+---------+------------+
| 2 | Bob | 1 | daer | 1997-09-12 |
+------+------+------+---------+------------+
1 row in set (0.00 sec)
从查询结果看出,第一条数据被删除掉了。
版权声明: 本文为 InfoQ 作者【打工人!】的原创文章。
原文链接:【http://xie.infoq.cn/article/bf93520f8b5c9bdbfcbea6637】。文章转载请联系作者。
评论