本篇主要整理除SELECT之外的3个经常使用的SQL语句。

一、插入数据

关键词:INSERT

1、插入完整的行
实例1:



mysql 给数据新增的一个字段设置默认值 mysql新增一条数据_数据


INSERT语句需要指定表名和被插入到新行中的值(values)。
INSERT语句一般不会产生输出
第一列cust_id也为NULL,是因为每次插入一个新行时,该列由MySQL自动增量。你不想给出一个值(这是MySQL的工作),又不能省略此列(如前所述,必须给出每个列),所以指定一个NULL值(它被MySQL忽略,MySQL在这里插入下一个可用的cust_id值)。虽然这种语法很简单,但并不安全,应该尽量避免使用。
实例2:

mysql 给数据新增的一个字段设置默认值 mysql新增一条数据_数据_02


该方法编写INSERT语句更安全


在插入行时,MySQL将用VALUES列表中的相应值填入列表中的对应项。VALUES中的第一个值对应于第一个指定的列名。第二个值对应于第二个列名,如此等等。因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各个列出现在实际表中的次序。

其优点是,即使表的结构改变, 此INSERT语句仍然能正确工作。

你会发现cust_id的NULL值是不必要的,cust_id列并没有出现在列表中,所以不需要任何值。


如果不提供列名,则必须给每个表列提供一个值。如果提供列名,则必须对每个列出的列给出一个值。如果不这样,将产生一条错误消息,相应的行插入不成功。

注意:省略的列必须满足以下某个条件:
1. 该列定义为允许NULL值(无值或空值)。
2. 在表定义中给出默认值。这表示如果不给出值,将使用默认值。

2、插入多行
如果想要插入多个行,可以使用多条INSERT语句,甚至一次提交它们,每条语句用一个分号结束;或者,只要每条INSERT语句中的列名(和次序)相同,可以在其中单条INSERT语句中插入多组值,每组值用一对圆括号括起来, 用逗号分隔。
实例:



mysql 给数据新增的一个字段设置默认值 mysql新增一条数据_删除表_03


MySQL用单条INSERT语句处理多个插入比使用多条INSERT语句快。

3、插入某些查询的结果
实例:



mysql 给数据新增的一个字段设置默认值 mysql新增一条数据_mysql_04


这里主要使用的是列的位置,即SELECT中的第一列(不管其列名)将用来填充表列中指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。这对于从使用不同列名的表中导入数据是非常有用的。

INSERT SELECT中SELECT语句可包含WHERE子句以过滤插入的数据


二、更新和删除数据

1、更新数据

关键词:UPDATE

实例1:更新客户10005的电子邮件地址



mysql 给数据新增的一个字段设置默认值 mysql新增一条数据_mysql_05


UPDATE语句由3部分组成:要更新的表、列名和它们的新值以及确定要更新行的过滤条件

在更新多个列时,只需要使用单个SET命令,每个“列=值”对之间用逗号分隔(最后一列之后不用逗号)。

如果用UPDATE语句更新多行,并且在更新这些行中的一行或多行时出一个现错误,则整个UPDATE操作被取消 (错误发生前更新的所有行被恢复到它们原来的值)。若要即使是发生错误,也继续进行更新,可使用IGNORE关键字。

为了删除某个列的值,可设置它为NULL(假如表定义允许NULL值)。
实例2:



mysql 给数据新增的一个字段设置默认值 mysql新增一条数据_mysql_06


2、删除数据
实例1:



mysql 给数据新增的一个字段设置默认值 mysql新增一条数据_删除表_07


DELETE不需要列名或通配符。DELETE删除整行而不是删除列。为了删除指定的列,请使用UPDATE语句

DELETE语句从表中删除行,甚至是删除表中所有行。但是,DELETE不删除表本身

如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,它完成相同的工作,但速度更 快(TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)

注意:
1. 如果省略了WHERE子句,则UPDATE或DELETE将被应用到表中所有的行。换句话说,如果执行UPDATE而不带WHERE子句,则表中每个行都将用新值更新。类似地,如果执行DELETE语句而不带WHERE子句,表的所有数据都将被删除。
2. 保证每个表都有主键,尽可能像WHERE子句那样使用它(可以指定各主键、多个值或值的范围)。
3. 在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确。
4. 使用强制实施引用完整性的数据库,这样MySQL将不允许删除具有与其他表相关联的数据的行