数据的添加、修改和删除

添加数据

向表中添加数据时使用insert into语句,其格式如下:

MySQL
insert 
into <表名>(<字段列表>) values(<值列表>);

在insert into语句中,<字段列表>和<值列表>的内容要一一对应,如下面的代码就是向cdb_demo.user_main表中添加一条记录。

MySQL
INSERT INTO cdb_demo.user_main(username,userpwd,islocked) 
VALUES ('user01','123456',0);

本代码中,向user_main表添加一条记录,其中username字段的值为user01,userpwd字段的值为123456,islocked字段的值为0。对于表中没有指定数据的字段的数据,主要包括以下一些情况:

  • auto_increment字段会自动添加新的整数ID值。
  • 使用default子句指定默认值的字段会使用默认值。
  • 没有指定默认值字段的数据会使用空值(null)。

MySQL数据库中的insert into语句还有一些灵活的用法,比如,可以方便地一次添加多条记录,如下面的代码。

MySQL
INSERT INTO cdb_demo.user_main(username,userpwd,islocked) 
VALUES ('user02','123456',0), ('user03','123456',0), ('user04','123456',0), ('user05','123456',0), ('user06','123456',0);

本代码会向user_main表中添加5条记录。使用“select * from cdb_demo.user_main;”语句可以查看user_main表中的所有数据;此时,user_main表中的数据如下图。

此外,还可以通过insert into语句快速复制整个表的数据,在上一课中已经有相关演示,这里再看一下实现代码。

MySQL
CREATE database if NOT EXISTS cdb_bak DEFAULT CHARSET='utf8';

CREATE TABLE if NOT EXISTS cdb_bak.user_main LIKE cdb_demo.user_main;

INSERT INTO cdb_bak.user_main SELECT * FROM cdb_demo.user_main;

修改数据

修改表中的记录数据使用update语句,其格式如下:

MySQL
update <表> set <数据> where <条件>;

虽然where子句和<条件>是可选的,但是,没有条件的更新操作需要非常小心,那会更新数据表中的所有记录。此外,更新数据时需要注意几个问题。

需要更新一条记录,经常会使用记录的主键或唯一键约束字段作为条件,如下面的代码。

MySQL
UPDATE cdb_demo.user_main  
SET fullname='用户一',sex=1  
WHERE username='user01';

本例,我们修改用户名(username)为user01的记录,并设置fullname为“用户一”,sex为1。再次使用“select * from cdb_demo.user_main;”语句查看user_main表中的记录,可以看到此记录的数据已经修改,如下图。

更新更多条件的记录时,可以灵活地应用多种限定条件,条件的设置不但在更新数据,在删除和查询记录时也同样适用,下一课,在讨论记录查询操作时还会详细讨论条件的设置。下面的代码,通过userid范围条件修改两条记录的sex数据。

MySQL
UPDATE cdb_demo.user_main  SET sex=2  WHERE userid IN (3,5);

此语句,将userid是3和5的记录中sex字段的值修改为2;执行语句后的user_main表数据如下图。

删除数据

删除数据操作和错误的更新同样有害,所以,应避免无条件的删除操作。

删除记录时使用delete from语句,其格式如下:

MySQL
delete from <表名> where <条件>;

如删除userid为9的记录,可以使用如下语句。

MySQL
delete from cdb_demo.user_main where userid=9;

实际执行语句并不会删除任何记录,因为user_main表中并不存在userid为9的记录。

实际操作中,如果不设置删除条件,则会删除表中的所有记录,这种操作应避免;如果真地需要删除表中的所有记录,可以使用truncate table语句,其格式如下。

MySQL
truncate table <表名>;

相对于无条件的delete语句,truncate语句更有效率,因为truncate语句不会记录数据删除操作日志,可以快速清除表中的数据,同时,表中定义为auto_increment字段的计数会还原;也就是说,truncate语句可以让表恢复到新创建的状态。

本站内容均为原创作品,转载请注明出处,本页面网址为:http://caohuayu.com/chy/article/Article.aspx?code=cc004003