[mysql基础文档]-6-表记录插入修改与删除
引言
本文实例演示如何向表插入一条或多条记录,如何修改记录中的字段,以及如何删除一条记录。
文章目录
0×1.如何使用insert into命令插入记录
inset into能够完整的插入一条记录(所有列都插入数据),也能仅对表格的某几列插入数据,请看下面的实例:
--创建表t2,包含一个整数列和一个字符串列,使用默认的数据库引擎和字符集
mysql> create table t2(id int,name char(30));
--插入一条记录,t2后面的括号中包含我们要插入的列的表头字段,表头字段要与后面values括号中的数据对应,也就是说如果这样写t1(name,id),那么相对的values('hk987','1'),因为id在表声明的时候是整型,而name是字符型
--语法:insert into [表名](表头字段1,表头字段2,...) values(数据1,数据2,...);
mysql> insert into t2(id,name) values(1,'hk987');
--插入一条记录后t2表数据如下
mysql> select * from t2;
+------+--------+
| id | name |
+------+--------+
| 1 | hk987 |
+------+--------+
--插入第二条记录,这一次t2后面没有接任何表头字段,当表名后面没有括号的时候,就是插入一条完整的记录,t2有几列,values括号中就要对应插入多少列数据,并且数据类型和创建表时的列数据类型对应,char数据要用英文单引号引起来
mysql> insert into t2 values(2,'hk987.com');
mysql> select * from t2;
+------+-------------+
| id | name |
+------+-------------+
| 1 | hk987 |
| 2 | hk987.com |
+------+-------------+
--插入第三条记录,仅设定了name列的值,因为这张表创建的时候没有设定默认值,所以当我们插入一条记录,但仅设定了记录某个或某几个字段的值的时候,没有数值的字段就会用NULL填充
mysql> insert into t2(name) values('www.hk987.com');
mysql> select * from t2;
+------+------------------+
| id | name |
+------+------------------+
| 1 | hk987 |
| 2 | hk987.com |
| NULL | www.hk987.com |
+------+------------------+
--一次插入两条记录,values后每个括号中包含一条记录,用逗号分隔每个括号,用这种语法可插入多条记录
mysql> insert into t2 values(4,'hk'),(5,'987');
mysql> select * from t2;
+------+------------------+
| id | name |
+------+------------------+
| 1 | hk987 |
| 2 | hk987.com |
| NULL | www.hk987.com |
| 4 | hk |
| 5 | 987 |
+------+------------------+
0×2.如何使用update命令修改记录
现在,我们觉得上面的t2表第三条记录前面的id是NULL,不是很好看,想修改成3,怎么做呢,请看下面的实例:
--此语句的前半部分"update t2 set id=3"意思是,将t2表的id设置成3,那么问题来了,id下面有五条记录,我们只想修改其中的一条,此时就要用到where子句,告诉数据库,我想修改的是name等于"www.hk987.com"的那一条,所以这一句翻译就是"我想将name等于www.hk987.com的那条记录的id,修改成3"
--where后面的判断条件必须具有唯一性,比如此时如果id=1和id=2的name字段都是www.hk987.com,那么他们的id都将被修改成3(想想上面那句翻译),要想具有唯一性,就需要用到索引或主键,这一部分后面的文章会介绍,这里先有这个概念就好
mysql> update t2 set id=3 where name='www.hk987.com';
mysql> select * from t2;
+------+------------------+
| id | name |
+------+------------------+
| 1 | hk987 |
| 2 | hk987.com |
| 3 | www.hk987.com |
| 4 | hk |
| 5 | 987 |
+------+------------------+
--这种修改方法是具有"推广性"的,可以更改任意字段的数据,只要where后面的判断具有唯一性,下面是另外一个例子,将id=1的记录,name字段数据改成helloworld
mysql> update t2 set name='helloworld' where id=1;
mysql> select * from t2;
+------+------------------+
| id | name |
+------+------------------+
| 1 | helloworld |
| 2 | hk987.com |
| 3 | www.hk987.com |
| 4 | hk |
| 5 | 987 |
+------+------------------+
--同理,where子句也是具有"推广性"的,比如上面的select语句是显示t2整张表的数据,但如果这张表非常大,显示的数据太多会给系统带来性能上的负担,我们可以通过筛选,只显示某条记录,比如:
mysql> select * from t2 where id=3;
+------+------------------+
| id | name |
+------+------------------+
| 3 | www.hk987.com |
+------+------------------+
where子句查询在后面的文章会详细介绍。
0×3.如何使用delete删除记录
删除记录实例:
--删除t2表中id=4和id=5的记录,有人可能会问这里为什么是用or,而不是and,因为,没有哪条记录的ID是即为4,又为5的,所以只有检索到id为4,或为5的记录才删除
mysql> delete from t2 where id=4 or id=5;
mysql> select * from t2;
+------+------------------+
| id | name |
+------+------------------+
| 1 | helloworld |
| 2 | hk987.com |
| 3 | www.hk987.com |
+------+------------------+
--如果不添加where子句筛选,那么就是清空整张表(危险操作)
mysql> delete from t2;
--查不到任何数据了
mysql> select * from t2;
Empty set (0.00 sec)