维护数据
插入数据
INSERT INTO table VALUES(value1, value2, ...)
value指定为null值会被忽略处理,留空,如果是自增字段会插入下一个可用的值
更安全的写法
INSERT INTO table(column1, column2, ...) VALUES(value1, value2, ...)
这种情况下可以省略列,但需要满足以下下条件,否则相应的行插入不成功
- 允许为NULL
- 定义中给出默认值
插入、删除、更新往往是耗时的。可以通过添加
LOW PRIORITY
来降低语句的优先级。例如:INSERT LOW PRIORITY INTO ...
,当存在数据检索时(SELECT
),优先处理数据检索。
插入多数据
可以重复多次上面的写法,也可以这么写
INSERT INTO table VALUES(value1, value2, ...),(value3, value4, ...)
插入检索出的数据
INSERT INTO table(column1, column2, ...) SELECT column3, column4, ... FROM table2
前后列名不需要匹配。
更新数据
UPDATE table SET column2 = 'value', column3 = 'value' WHERE column1 = xxx
使用
IGNORE
,当发生错误时,也继续进行更新
使用
NULL
可以用来去除列中值
删除数据
DELETE FROM table WHERE column1 = xxx
DELETE不需要列名或通配符。DELETE删除整行而不是删除列。为了 删除指定的列,请使用UPDATE语句。
删除所有行,清空表
使用TRUNCATE TABLE
,它实际是删除原来的表并重新创建一张表,而不是逐行删除数据。
更新和删除的原则
- 除非确实打算更新和删除每一行,否则绝对不要使用不带WHERE 子句的UPDATE或DELETE语句。
- 保证每个表都有主键,尽可能像WHERE子句那样使用它(可以指定各主键、多个值或值的范围)。
- 在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确。
- 使用强制实施引用完整性的数据库,这样MySQL将不允许删除具有与其他表相关联的数据的行。