MySQL插入,更新,删除数据

2019-01-31 来源: 故事, 发布在  https://www.cnblogs.com/tianzeng/p/10341640.html

插入

单行插入

  1.insert into 表名 values(col1_value,col2_value,...);

  •   每个列必须提供一个值,如果没有值,要提供NULL值
  •   每个列必须与它在表中定义的次序相同

  2.insert into 表名(col1,col2...) values(col1_value,col2_value...);

  •   values必须与指定的列名次序匹配,不一定按照列在表中的实际出现的次序,即使表结构改变也能正常的工作

注意

  如果表的定义允许,在插入时可以省略某些列,表的定义应该如下

  1. 该列允许为NULL值
  2. 在表定义时给出默认值,如果插入时不给出值,则使用默认值

多行插入

  insert into 表名(col1,col2...) values(col1_value1,col2_value1...),values(col1_value2,col2_value2...)values(col1_value3,col2_value3...);

插入检索出的数据

  insert into 表名1(col1,col2...) select col1,col2... from 表名2

  •   这条语句插入多少行依赖于表名1中有多少行,如果表名1为空,则没有数据插入,此操作为合法操作
  •   它不关心select返回的列名,使用的是列的位置,select中的第一列用于填充表中的第一列等
  •   select可以使用where过滤数据

拓展

  由于数据库是被客户访问,对处理什么请求及什么次序处理是MySQL任务,insert很耗时并且可能降低select语句的性能

  insert low_priority into 可以降低insert优先级也使用update和delete

更新

  更新的是列,由三部分组成

  1. 要更新的表
  2. 列名和他们的值
  3. 确定要更新的过滤条件
update 表名
    -> set 列名=要更新的值
    -> where 过滤条件;

注意

  1. 一定要使用where!!!where!!!where!!!
  2. 可以在update中使用子查询,能够使select语句检索出的数据更新列数据
  3. 如果使用update更新多行,在更新时出现一个或多个错误,则整个update操作被取消,恢复到被更新的原来的值,若使用update ignore 表,可以继续更新
  4. 保证每个表都有主键,像where字句那样使用它
  5. 使用where之前,先使用select进行测试,保证过滤出正确的记录

删除

  删除的是整行

delete from 表名
    -> where 过滤条件;

  要删除全部的行用

truncate table 表名;

  此操作是将原来的表删除并创建一个新表,并不是逐行删除数据

注意

  1. 一定要使用where!!!where!!!where!!!
  2. delete删除的是表中的行或所有的行,不删除表本身
  3. 保证每个表都有主键,像where字句那样使用它
  4. 使用where之前,先使用select进行测试,保证过滤出正确的记录
  5. 删除列用update
  6. 强制实施引用完整性的数据库,这样mysql不允许删除具有与其他表相关联的数据的行

相关文章