[mysql基础文档]-6-表记录插入修改与删除

引言

本文实例演示如何向表插入一条或多条记录,如何修改记录中的字段,以及如何删除一条记录。

文章目录

0×1.如何使用insert into命令插入记录

inset into能够完整的插入一条记录(所有列都插入数据),也能仅对表格的某几列插入数据,请看下面的实例:

					--创建表t2,包含一个整数列和一个字符串列,使用默认的数据库引擎和字符集
					mysql> create table t2(id int,name char(30));

					--插入一条记录,t2后面的括号中包含我们要插入的列的表头字段,表头字段要与后面values括号中的数据对应,也就是说如果这样写t1(name,id),那么相对的values('qingsword',1),因为id在表声明的时候是整型,而name是字符型
					--语法:insert into [表名](表头字段1,表头字段2,...) values(数据1,数据2,...);
					mysql> insert into t2(id,name) values(1,'qingsword');

					--插入一条记录后t2表数据如下
					mysql> select * from t2;
					+------+-----------+
					| id   | name      |
					+------+-----------+
					|    1 | qingsword |
					+------+-----------+

					--插入第二条记录,这一次t2后面没有接任何表头字段,当表名后面没有括号的时候,就是插入一条完整的记录,t2有几列,values括号中就要对应插入多少列数据,并且数据类型和创建表时的列数据类型对应,char数据要用英文单引号引起来
					mysql> insert into t2 values(2,'qingsword.com');

					mysql> select * from t2;
					+------+---------------+
					| id   | name          |
					+------+---------------+
					|    1 | qingsword     |
					|    2 | qingsword.com |
					+------+---------------+

					--插入第三条记录,仅设定了name列的值,因为这张表创建的时候没有设定默认值,所以当我们插入一条记录,但仅设定了记录某个或某几个字段的值的时候,没有数值的字段就会用NULL填充
					mysql> insert into t2(name) values('www.qingsword.com');

					mysql> select * from t2;
					+------+-------------------+
					| id   | name              |
					+------+-------------------+
					|    1 | qingsword         |
					|    2 | qingsword.com     |
					| NULL | www.qingsword.com |
					+------+-------------------+

					--一次插入两条记录,values后每个括号中包含一条记录,用逗号分隔每个括号,用这种语法可插入多条记录
					mysql> insert into t2 values(4,'qing'),(5,'sword');

					mysql> select * from t2;
					+------+-------------------+
					| id   | name              |
					+------+-------------------+
					|    1 | qingsword         |
					|    2 | qingsword.com     |
					| NULL | www.qingsword.com |
					|    4 | qing              |
					|    5 | sword             |
					+------+-------------------+
					

0×2.如何使用update命令修改记录

现在,我们觉得上面的t2表第三条记录前面的id是NULL,不是很好看,想修改成3,怎么做呢,请看下面的实例:

					--此语句的前半部分"update t2 set id=3"意思是,将t2表的id设置成3,那么问题来了,id下面有五条记录,我们只想修改其中的一条,此时就要用到where子句,告诉数据库,我想修改的是name等于"www.qingsword.com"的那一条,所以这一句翻译就是"我想将name等于www.qingsword.com的那条记录的id,修改成3"
					--where后面的判断条件必须具有唯一性,比如此时如果id=1和id=2的name字段都是www.qingsword.com,那么他们的id都将被修改成3(想想上面那句翻译),要想具有唯一性,就需要用到索引或主键,这一部分后面的文章会介绍,这里先有这个概念就好
					mysql> update t2 set id=3 where name='www.qingsword.com';

					mysql> select * from t2;
					+------+-------------------+
					| id   | name              |
					+------+-------------------+
					|    1 | qingsword         |
					|    2 | qingsword.com     |
					|    3 | www.qingsword.com |
					|    4 | qing              |
					|    5 | sword             |
					+------+-------------------+

					--这种修改方法是具有"推广性"的,可以更改任意字段的数据,只要where后面的判断具有唯一性,下面是另外一个例子,将id=1的记录,name字段数据改成helloworld
					mysql> update t2 set name='helloworld' where id=1;

					mysql> select * from t2;
					+------+-------------------+
					| id   | name              |
					+------+-------------------+
					|    1 | helloworld        |
					|    2 | qingsword.com     |
					|    3 | www.qingsword.com |
					|    4 | qing              |
					|    5 | sword             |
					+------+-------------------+

					--同理,where子句也是具有"推广性"的,比如上面的select语句是显示t2整张表的数据,但如果这张表非常大,显示的数据太多会给系统带来性能上的负担,我们可以通过筛选,只显示某条记录,比如:
					mysql> select * from t2 where id=3;
					+------+-------------------+
					| id   | name              |
					+------+-------------------+
					|    3 | www.qingsword.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 | qingsword.com     |
					|    3 | www.qingsword.com |
					+------+-------------------+

					--如果不添加where子句筛选,那么就是清空整张表(危险操作)
					mysql> delete from t2;

					--查不到任何数据了
					mysql> select * from t2;
					Empty set (0.00 sec)