mysql 学习笔记-插入、更新、删除
2016-01-25 21:55
459 查看
依赖次序,安不安全,不能应付改变
INSERT INTO table_name VALUES(val_1,val_2,......);
安全,更繁琐的方法,这样即使表的结构改变这条语句任然可以继续工作,同时还可以忽略不用处理的列
被省略的列必须是 列定义允许为null或者表定义中给出默认值
INSERT INTO table_name(col_1,col_2,......) VALUES(val_1,val_2,......);
/*
insert 操作可能比较耗时,特别是在很多索引需要更新的时候,而且它可能降低等待处理的
select 语句的性能。提高整体性能的方案如下:
*/
INSERT LOW_PRIORITY INTO table_name(col_1,col_2,......) VALUES(val_1,val_2,......);
一次插入多行,比分散的多条 insert 快
INSERT INTO table_name(col_1,col_2,col_3,....) VALUES(val_1,val_2,val_3,.....), (val_1,val_2,val_3,.....), (val_1,val_2,val_3,.....), (val_1,val_2,val_3,.....);
插入查询得到的数据 insert select 语句的用法
INSERT INTO db_alishop.`copy_user` (user_name,user_birth) SELECT reg_email,user_birth FROM db_alishop.`user`;
更新和删除数据
小心不要省略where过滤条件,这样会导致更新所有的行对应的列
UPDATE table_name SET col_name = val_1 WHERE ...;
更新多列
UPDATE table_name SET col_1 = val_1, col_2 = val_2 WHERE ...;
在 update 语句中使用 select 子查询检索出来的数据更新列数据。
ignore 关键字,默认发生更新作用在多个行,如果有一个或多个失败,
整个 update 语句产生的改变会被撤销,使用 ignore 可以忽略错误,
保留其他成功的更新。
UPDATE IGNORE table_name SET col_name = val_1 WHERE ...;
用 update 删除某列的值,允许为 null 的情况下
UPDATE table_name SET col_name = NULL WHERE ...;
注意:如果不使用 where 过滤,默认删除所有的行,删除表的所有内容,而不删除表本身
DELETE FROM table_name WHERE ...;
如果仅仅想删除表中的所有记录,不要使用 delete 用 truncate table
语句效率更好,先删除原表,然后创建一个新表,而不是逐行删除
TRUNCATE copy_user;
更新和删除的指导原则
使用强制实施引用完整性的数据库
相关文章推荐
- mysql 创建数据库 表 插入数据 查询
- MySQL 5.5版本解决中文乱码问题时my.ini内[mysqld]项中不能再写default-character-set=utf8
- MySQL的典型八小时问题
- MySQL的EXPLAIN指令使用例解
- 19个MySQL性能优化主要要点
- MySQL识别下列转义字符:
- MySQL user表简介
- mysql root给其它用户授权问题
- MySQL 存储过程 常用语法
- mysql学习笔记
- MySQL索引使用方法和性能优化
- mysql锁3.常见问题
- MySQL支持的数据类型
- MySQL 获得当前日期时间(以及时间的转换)
- mysql的in选择结果过,按照in里面的排序排序
- Mysql中创建根据第二个自增的id
- MySQL某一时间点数据与一小时前、一天前、一月前数据对比
- ubantu操作指令 访问Mysql
- MYSQL的分区字段必须包含主键-介绍以及解决方法
- mysql 索引( mysql index )