
数据插入
SELECT
语句,但还有三个经常使用的SQL语句需要掌握(INSERT
、UPDATE
和DELETE
)。
插入的几种形式,
1. 插入完整行;
2. 插入行的部分数据;
3. 插入多行;
4. 插入某些查询的结果;
- 注意,由于MySQL的安全机制,需要注意权限。
插入完整的行
分析:第一列cust_id为NULL
。这是因为在customers
表中,该列由MySQL自动增量,所以指定一个NULL
值。
注意,虽然此语法简单,但并非安全。上面语句高度依赖表中列的次序。即使可以得到这些信息,但不能保证下次使用时,表的次序因为种种原因经过调整,引起输入错误。更保险的输入方式应该为,
同时,此方式下,自动增量的cust_id
的NULL
非必须。所以,纵使与表中列的次序不同,也可以完成插入操作。因此当比给出列名的时候,必须正确的给出每列<所有列>的值。 INSERT
操作时忽略某些列。忽略的列必须满足如下条件,
1. 该列定义为允许NULL
;
2. 表中给出默认值;
注意,为避免影响到数据库瞬时速度,可以将插入操作降低优先级。INSERT LOW_PRIORITY INTO
,此操作同样适用于UPDATE
和DELETE
。
插入多行
插入多行,只需要在每组值用圆括号并且逗号隔开即可。
注意,使用多行插入操作,可以提高INSERT
的性能。通俗讲,尽量少用语句。
插入检索出的语句
INSERT
一般用来插入单行,但是与SELECT
结合后,可以使用所谓的INSERT SELECT
,举例说明
分析:使用INSERT SELECT
从custnew中将所有数据导入customers。SELECT
语句将检索信息传入INSERT
。
注意,此例子中,将cust_id一并导入(cust_id被定义为非空、自增),因此必须确保导入的cust_id不重复。否则,需要省略此列,有SQL自增。同时检索列与插入列的名字不需要相同,MySQL只关心对应列顺序。
更新数据
注意,在使用UPDATE
语句时,必须严格小心,不要省略WHERE
语句,否则会更新表中所有行。
要更新的表;
列名和他们的新值;
确定要更新行的过滤条件。
更新表中所有行;
更新表中特定行。
1、UPDARE
更新数据的两种方式,2、UPDARE
语句由三部分组成,
例子,更新单列,
分析:UPDARE
总是以要更新的表的名字开始,SET
为赋值命令
例子,使用多列更新时,只需要一次SET
命令即可
分析:
1、如果多列更新,并且在一行或多行赋值时出现错误,则整个UPDATE
操作都会被取消(更新不会进行)。可以使用IGNORE
关键字。
2、为了删除每列的值,可以赋值为NULL
。
删除数据
DELETE
语句,进行删除操作,形式如下
- 从表中删除特定行;
- 从表中删除所有的行。
注意,在使用DELETE
语句时,同样必须严格小心,不要省略WHERE
语句,否则会更新表中所有行。
DELETE
不需要列名或通配符。DELETE
语句删除整行而不是整列,若删除整列需要使用UPDATE
操作(在不使用WHERE
语句前提下,更新数据)。
若需要删除所有数据,不需要使用DELETE
语句,使用速度更快的TRUNCATE TABLE
。操作原理为,删除原表格,并创建新表。
更新和删除的原则
1、除非更新和删除每一行,使用UPDATE
、DELETE
操作都需要使用WHERE
;
2、保证每个表,都有主键,以便与使用WHERE
语句进行唯一性检索;
3、在使用UPDATE
、DELETE
前,需要进行SELECT
测试,保证过滤条件的正确性;
4、使用强制实施引用完整的数据库,保证不会删除与其他表有关联的数据的行。





