一: 插入数据
1. 插入一条数据
INSERT INTO 表名 VALUES(值1);
2. 插入多条数据
INSERT INTO 表名 VALUES(值1),(值二),....;
3. 表中的某一个或几个字段插入(values中的第一个值对应于第一个指定的列名)
INSERT INTO 表名(字段1,...) VALUES(值1),...;
一个字段或几个字段插入注意事项:
- INSERT操作中要省略某些列,则省略的列中该列定义为允许 NULL 值(无值或空值)
- INSERT操作中要省略某些列,则省略的列中在表定义中给出默认值。这表示如果不给出值,将使用默认值。
- 如果对表中不允许 NULL 值且没有默认值的列不给出值,则MySQL将产生一条错误消息,并且相应的行插入不成功。
4. 降低插入操作的优先级,提高整体性能
如果数据检索是最重要的(通常是这样),则你可以通过在 INSERT 和 INTO 之间添加关键字 LOW_PRIORITY ,指示MySQL降低 INSERT 语句的优先级
例:
INSERT LOW_PRIORITY INTO
二: 更新数据
-
更新表中特定行
-
更新表中所有行
UPDATE 表名 set 字段1=值1,字段2=值2,... WHERE 条件;
注意,必须加where条件,否则将会更新表中所有数据
例: 更新姓名为 张三 的人的姓名改为李四
UPDATE people set name="李四" WHERE name="张三";
IGNORE
如果用 UPDATE 语句更新多行,并且在更新这些行中的一行或多行时出一个现错误,则整个 UPDATE 操作被取消(错误发生前更新的所有行被恢复到它们原来的值)。想要即使是发生错误,也继续进行更新,可使用 IGNORE 关键字,如下所示
UPDATE IGNORE people...
三: 删除数据
- 从表中删除特定的行
- 从表中删除所有行
- DELETE 语句从表中删除行,甚至是删除表中所有行。但是, DELETE 不删除表本身
快速删除表
可使用 TRUNCATE TABLE
语句,它完成相同的工作,但速度更快( TRUNCATE 实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)
在使用 DELETE 时一定要注意细心。因为稍不注意,就会错误地删除表中所有行
DELETE FROM 表名 WHERE 条件;
**注意事项**
- 除非确实打算更新和删除每一行,否则绝对不要使用不带 WHERE子句的 UPDATE 或 DELETE 语句。
- 保证每个表都有主键(如果忘记这个内容,请参阅第15章),尽可能像 WHERE 子句那样使用它(可以指定各主键、多个值或值的范围)
- 在对 UPDATE 或 DELETE 语句使用 WHERE 子句前,应该先用 SELECT 进行测试,保证它过滤的是正确的记录,以防编写的 WHERE 子句不正确。
- 使用强制实施引用完整性的数据库,这样MySQL将不允许删除具有与其他表相关联的数据的行。