数据插入

INSERT是用来插入或者添加行到数据库表的,插入可以分为几种方法

  • 插入完整的行
  • 插入行的一部分
  • 插入多行
  • 插入某些查询的结果

插入完整的行

mysql> INSERT INTO customers VALUES(NULL, 'zhangsan', 'shandong', NULL, NULL, NULL, NULL, '15053631234', '[email protected]');
Query OK, 1 row affected (0.01 sec)

此例子插入一个新客户到customers表,存储到每个表列中的数据在VALUES语句中给出,对每个列必须提供一个值

mysql> INSERT INTO customers(
    -> cust_name,
    -> cust_address,
    -> cust_contact,
    -> cust_email
    -> )
    -> VALUES(
    -> 'lisi',
    -> 'shandong',
    -> '15053631235',
    -> '[email protected]');
Query OK, 1 row affected (0.01 sec)
  • 此例子完成了与前一个INSERT语句完全相同的工作
  • 因为提供了列名,VALUES必须按照其指定的次序匹配指定的列名,不一定按照各个列出现在实际表中的次序,
  • 优点是即使表的结构改变,此INSERT语句依然能够正确的执行工作

省略列必须满足的条件

  • 该列定义为允许null值
  • 在表定义中给出默认值(如果不给出值,将使用默认值)

插入多个行

mysql> INSERT INTO customers( cust_name, cust_address, cust_contact, cust_email ) VALUES( 'lisi', 'shandong', '15053631235', '[email protected]'),('wangwu', 'shandong', '15053631236', '[email protected]');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

其中单条INSERT语句有多组值,每组值用一对圆括号括起来,用逗号分隔

更新和删除数据

更新列

为了更新(修改)表中的数据,可使用UPDATE语句,可采用两种方式使用UPDATE

  • 更新表中特定行
  • 更新表中所有行

UPDATE语句非常容易使用,基本的UPDATE语句由三部分组成

  • 要更改的表
  • 列名和他们的新值
  • 确定要更新行的过滤条件

客户cust_id为1现在有了新的电子邮件地址,因此他的记录需要更新,

mysql> UPDATE customers
    -> SET cust_email='[email protected]'
    -> WHERE cust_id=1;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0
  • UPDATE语句总是以要更新的表的名字开始.
  • 需要更新表的名字是customers,
  • SET子语句用来将新值赋值给被更新的列
  • WHERE子语句用来确定更新哪一行.如果没有WHERE语句,会将该邮件地址更新到所有行中,这不是我们希望看到的

更新多个列

mysql> UPDATE customers  SET cust_name='zhangsan1',cust_email='[email protected]' WHERE cust_id=1;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

在更新多个列时,只需要使用单个SET命令,每个"列=值"对之前的使用逗号分隔,最后一列之后不用逗号

删除数据

为了从一个表中删除数据,使用DELETE语句,可以使用两种方式

  • 从表中删除特定的行
  • 从表中删除所有行

前面说过,UPDATE非常容易使用,而DELETE更容易使用
下面的语句从customers表中删除一行

mysql> DELETE FROM customers
    -> WHERE cust_id=3;
Query OK, 1 row affected (0.03 sec)

这条语句很容易理解.DELETE FROM要求制定从中删除数据的表名,WHERE字句过滤要删除的行,
在这个例子中,只删除客户id为3,如果省略了WHERE子句,他将删除表中每个客户

02-14 02:26