论坛 
IT客
设为首页
加入收藏
关于我们
首页  | 程序 | IT新闻 | IT基础 | 网络 | 系统 | 数据库 | 软件开发 | 软件下载 | 电影频道 | FLASH | 图片 | 技术文档 | 分类信息
网络 Cisco 网络设备 解决方案 系统 Windows Linux 服务器 系统安全 程序 Java Dotnet 数据库 Oracle MySQL MSSQL 软件开发 Web开发 桌面开发 IT基础 网页设计 平面设计 多媒体 工具软件 即时通讯 Flash FLASH爆笑 FLASH游戏 FLASH MTV FLASH彩铃 图片 明星 美女 笑话大全
子栏目  | MYSQL | POSTGRE
首页 > 系统 > Linux > Linux数据库 > MYSQL >
 
透视MySQL数据库之更新语句
作者: 发布时间:2007-07-10 17:50:52 来源:

  用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句。言外之意,就是对数据进行修改。在标准的SQL中有3个语句,它们是INSERT、UPDATE以及DELETE。在MySQL中又多了一个REPLACE语句,因此,本文以MySQL为背景来讨论如何使有SQL中的更新语句。

  一、INSERT和REPLACE

  INSERT和REPLACE语句的功能都是向表中插入新的数据。这两条语句的语法类似。它们的主要区别是如何处理重复的数据。

  1. INSERT的一般用法

  MySQL中的INSERT语句和标准的INSERT不太一样,在标准的SQL语句中,一次插入一条记录的INSERT语句只有一种形式。

  INSERT INTO tablename(列名…) VALUES(列值);

  而在MySQL中还有另外一种形式。

  INSERT INTO tablename SET column_name1 = value1, column_name2 = value2,…;

  第一种方法将列名和列值分开了,在使用时,列名必须和列值的数一致。如下面的语句向users表中插入了一条记录:

  INSERT INTO users(id, name, age) VALUES(123, '姚明', 25);

  第二种方法允许列名和列值成对出现和使用,如下面的语句将产生中样的效果。

  INSERT INTO users SET id = 123, name = '姚明', age = 25;

  如果使用了SET方式,必须至少为一列赋值。如果某一个字段使用了省缺值(如默认或自增值),这两种方法都可以省略这些字段。如id字段上使用了自增值,上面两条语句可以写成如下形式:

  INSERT INTO users (name, age) VALUES('姚明',25);

  INSERT INTO uses SET name = '姚明', age = 25;

  MySQL在VALUES上也做了些变化。如果VALUES中什么都不写,那MySQL将使用表中每一列的默认值来插入新记录。

  INSERT INTO users () VALUES();

  如果表名后什么都不写,就表示向表中所有的字段赋值。使用这种方式,不仅在VALUES中的值要和列数一致,而且顺序不能颠倒。 INSERT INTO users VALUES(123, '姚明', 25);

  如果将INSERT语句写成如下形式MySQL将会报错。

  INSERT INTO users VALUES('姚明',25);

  2. 使用INSERT插入多条记录

  看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语句不就可以插入多条记录了吗!但使用这种方法要增加服务器的负荷,因为,执行每一次SQL服务器都要同样对SQL进行分析、优化等操作。幸好MySQL提供了另一种解决方案,就是使用一条INSERT语句来插入多条记录。这并不是标准的SQL语法,因此只能在MySQL中使用。

  INSERT INTO users(name, age)
  VALUES('姚明', 25), ('比尔.盖茨', 50), ('火星人', 600);

  上面的INSERT 语句向users表中连续插入了3条记录。值得注意的是,上面的INSERT语句中的VALUES后必须每一条记录的值放到一对(…)中,中间使用","分割。假设有一个表table1

  CREATE TABLE table1(n INT);

  如果要向table1中插入5条记录,下面写法是错误的:

  INSERT INTO table1 (i) VALUES(1,2,3,4,5);

  MySQL将会抛出下面的错误

  ERROR 1136: Column count doesn't match value count at row 1

  而正确的写法应该是这样:

  INSERT INTO t able1(i) VALUES(1),(2),(3),(4),(5);

  当然,这种写法也可以省略列名,这样每一对括号里的值的数目必须一致,而且这个数目必须和列数一致。如:

  INSERT INTO t able1 VALUES(1),(2),(3),(4),(5);

【责编:Peng】
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关信息
无相关信息

发表评论
用户名: 密码:
验证码: 匿名发表
 
 搜索文章
 最新文章
·Win2K入侵检测实例分析
·Win2000 Server安全入门
·使用微软安全工具包加固Win2
·Windows2000安全检查清单
· 安全管理
·利用安全工具包保持系统的最
·怎么实施和做好入侵检测
·Win2k建立安全WEB站点的解决
·用“$”来加强共享资源的安全
·让你的IIS无懈可击
 热点文章 
· 我的xfce学习笔记(汉化)
·三个方法优化MySQL数据库查询
·IPW2100安装详细步骤说明
·Gnuplot科学绘图——入门篇
·Linux下使用Evolution收发Em
·在Archlinux 安装Maya7.01
·安装Linux中文输入法fcitx
·向Linux迁移的人才准备
·使用指南:好用的播放器mpd
·你应该知道的10个MySQL客户启

社区关于我们广告业务信息反馈合作伙伴网站地图
ITKee.Com 版权所有
Copyright © 2008 All rights reserved