首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > MySQL中插入、更新和删除记录
【标  题】:MySQL中插入、更新和删除记录
【关键字】:MySQL
【来  源】:http://www.cublog.cn/u/15276/showart.php?id=135572

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

1           插入、更新和删除记录

1.1            插入记录

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

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

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

注意:into 关键字是可选的

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

Eginsert 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 UPDATEREPLACE区别:前者只把已命名的字段更新为新值,后者删除了旧记录,然后用新值完全替换。

Eginsert 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_PRIORITYDELAYED关键字使MySQL客户执行等待,知道成功完成操作或者排队等候服务器进行处理。

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

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

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

1.3            删除记录

MySQL允许使用deletetruncate语句删除数据。

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的表正在进行书屋处理,这个命令就会退出并产生错误信息。
mysql常用命令一(登录、增加用户、密码更改):【上一篇】
SQL语句优化方法30例:【下一篇】
【相关文章】
  • mysql常用命令一(登录、增加用户、密码更改)
  • mysql常用命令二(创建,查询,修改,删除)
  • MYsql 数据库的基本知识
  • 使用Connector/J连接MySQL数据库
  • Mysql5存储过程教程(转载)
  • MySQL 5.0 触发器 (转载)
  • MySQL的外键与参照完整性
  • 你知道MySQL10条鲜为人知的技巧吗
  • Mysql创建外键[论坛摘录]
  • 备份和恢复MYSQL数据库
  • 【随机文章】
  • 浅谈CDPD技术应用
  • parse error 与重复包含
  • 手工解决IE浏览器被修改的方法
  • 《Effective C#》Item 21:用委托实现回调
  • 07年黑客江湖,木马与防火墙又一场新的战争
  • 项目修复-把有麻烦的项目带向成功
  • Java在JTextArea中显示一个图片背景的小例子
  • 信长11高级难度集锦
  • 最后的看一眼的机会 [原创]
  • 基于JSP的动态网站开发技术
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.