文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>MySQL中插入、更新和删除记录

MySQL中插入、更新和删除记录

时间:2006-07-02  来源:LeeSharp

1           插入、更新和删除记录

1.1            插入记录

Insert into table_name (field_name1, field_name2, …) values (value1, value2, …);

Insert into values (value1, value2, …);   //这种形式只能应用于值的顺序与字段顺序匹配的情况(可以通过调用describe命令来决定字段顺序)。

包含引用标志的值需要再引号’前面加上反斜线\                   //转义字符

注意:into 关键字是可选的

也可以同时插入多个值,用逗号分开

Eg:insert table_name values (value1, value2, …), (value3, value4, …);

 

还可以不使用insert… values格式,而使用类似update语句,它使用set子句分别为每一列设置值。

Insert into table_name set field_name1 = value1, field_name2 = value2,…;

使用default值

Create table table_name (field_name1 type default def_value not null,…);

Insert table_name values (default,…);   //default关键字只在4.0.3以及更高版本才支持

使用AUTOINCREMENT字段

自动产生下一个序号,该字段必须被设置为主键

使用UNIQUE字段

使用IGNORE关键字或者ON DUPLICATE KEY UPDATE子句跳过INSERT、中断操作或者更新旧记录为新值。

INSERT IGNORE INTO TABLE_NAME (UNIQUE_FIELD, …) VALUES (REPEAT, …);

如果重复记录,则不会报告错误,也不会更新记录,数据库中的数据保持不变。

 

ON DUPLICATE KEY UPDATE和REPLACE区别:前者只把已命名的字段更新为新值,后者删除了旧记录,然后用新值完全替换。

Eg:insert into Menu value (null, ‘MySQL’, ‘www.mysql.com’) on duplicate key update label=’MS SQL’, url=’www.microsoft.com’;

在这种情况下,如果MySQL发现表中已经包含具有相同唯一键的记录,则会自动更新旧的记录为ON DUPLICATE KEY UPDATE从句中指定的新值。

当有很多insert语句需要被顺序执行时,IGNORE关键字就使操作变得很方便。这可以保证不管拿一个INSERT包含了重复值,MySQL都会跳过而不放弃全部操作。

1.2            更新记录

UPDATE TABLE_NAME SET FIELD_NAME=VALUE, SET FIELD_ANOTHER=VALUE_ANTOHER,…

WHERE …

如果省略了where子句,表中的每行都会收到update的影响而改变

精细操作:当执行INSERT或者UPDATE操作时,可以通过使用LOW_PRIORITY和DELAYED关键字使MySQL客户执行等待,知道成功完成操作或者排队等候服务器进行处理。

LOW_PRIORITY关键字阻止语句执行知道没有其他线程使用这个表,从而强制客户等待,知道语句完全被执行。在应用中可靠性是最终要的,添加这个关键字可以帮助提高SQL事务处理以及在它上面的业务逻辑的完整性。

DELAYED关键字和LOW_PRIORITY关键字相反,把要执行的语句放在一个对垒中(在server的存储器内)就立即让客户退出。当处理繁忙的数据库服务时,这一点在提高应用程序的性能方面尤其重要,意味它可以提高客户相应时间(但是比较冒险―――如果服务器崩溃,在服务器队列中的所有请求都会丢失)。

这两个关键字不适用与InnoDB表。

1.3            删除记录

MySQL允许使用delete和truncate语句删除数据。

DELETE语句可以允许从表中删除记录,支持where

DELETE FROM TABLE_NAME WHERE CONDITIONAL;

如果没有where子句,则删除表中所有数据。该操作不可逆转(除非使用的是InnoDB表且关掉了AUTOCOMMIT????)

使用truncate命令也可一删除表的所有记录

TRUNCATE TABLE TABLE_NAME;

该命令比delete执行速度要快,因为TRUNCATE删除了表,然后重建它。

注意:delete删除的是记录,并没有尝试去修改表。这也是为什么当向一个使用delete清空的表插入记录时,MySQL会记住前面产生的auto_increment序列,并且继续利用该字段的编号。而truncate后的表一直从1开始为auto_increment字段编号。

Truncate对于事务处理是不安全的。因此,如果想要执行truncate的表正在进行书屋处理,这个命令就会退出并产生错误信息。
相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载