常用的SQL语句,除了select用于查询,还有insert、update、delete等。

一、insert

insert:用来插入(或添加)行到数据库中,常见方式有以下几种:

①插入完整的行;

②插入行的一部分;

③插入多行;

④插入某些查询的结果;

1、插入完整的行

例如:insert into usertable

values(null,

'zhangsan',

'25',

'1992-05-20',

null,

null);

这条SQL语句插入一条新的个人信息到usertable表,存储在每个表列中的数据在values中给出,对每个列必须提供一个值,如果某个列没有值,应使用null(假定表允许对该项指定空值);

各个列必须以它们在表定义中出现的次序填充;缺点在于;高度依赖表中列的定义次序,如果表结构出现变动,难免出现问题。

更安全的方法如下(相对比较麻烦):

例如:insert into usertable(user_id,

user_name,

user_year,

user_birthday,

user_address,

user_email)

values(null,

'zhangsan',

'25',

'1992-05-20',

null,

null);

这条SQL语句与上面的SQL语句完成同样的工作,但给出了列名,valuse必须以指定的次序匹配指定的列名,不一定按照列出现在表中的实际次序;优点是:即使表结构改变,此insert语句仍然正确工作。

insert使用注意事项:

①无论使用哪种insert语法,都必须给出values的正确数目,如果不提供列名,则必须给每个表列提供一个值;如果提供列名,则必须对每个列出的列给出一个值;

②如果表定义允许,则可以在insert操作中省略某些列,列必须满足这两个条件(1.改列定义为允许null值;2.在表定义中给出默认值【如果不给出值,则使用默认值】);

③数据库被多个用户访问,一般检索是最重要的,可以通过在insert和into中间添加关键字low priority,指示MySQL降低insert语句的优先级(同样适用于update和delete语句);

2、插入多个行

例如:insert into usertable(user_id,

user_name,

user_year,

user_birthday,

user_address,

user_email)

values(null,

'zhangsan',

'25',

'1992-05-20',

null,

null);

或者只要每条insert语句中的列名(和次序)相同,可以只在insert语句后面输入一次列名就可以(单个insert语句由多组值,每组值用一堆圆括号包含,用逗号隔开)

PS:MYSQL用单条insert语句处理多个插入比使用多个insert语句快。

3、插入检索出的数据

例如:insert into usertable(user_id,

user_name,

user_year,

user_birthday,

user_address,

user_email)

select user_id,

user_name,

user_year,

user_birthday,

user_adress,

user_email

from newtablebase;

这条SQL语句中,select从newtablebase表中检索出要插入的数据,select列出的每个列对应tablebase表名后所跟的列表中的每个列。

PS:insert select语句中,不一定要求列名匹配,实际上select中的第一列将用来填充表列中指定的第一列;insert select语句中select语句可包含where子句过滤插入的数据。

二、更新数据

如果要更新(修改)表中的数据,可以使用update语句,有以下两种方法:

①更新表中特定行;

②更新表中所有行;

update语句由三部分构成:

①要更新的表;

②列名和它们的新值;

③确定要更新行的过滤条件;

例如:update usertable

set user_email = '3033310371@qq.com'

where user_id = '10086';

这条SQL语句中,要更新的表名为usertable,set命令用来将新值赋给被更新的列user_email;

PS:update语句总是以要更新的表的名字开始,以where子句结束,它告诉MySQL更新哪一行。

更新多个列:update usertable

set user_name = 'zhangsan',

user_email = '3033310371@qq.com'

where user_id = '10086';

更新多个列时,只需要使用单个set命令,每个“列=值”对之间用逗号分隔(最后一列不用逗号)。

PS:如果用update更新多个行,且更新中一行或多行出现错误,则update操作将被取消(错误发生前执行的动作将被回滚到最初状态。即已更新的被恢复原来的值);

如果希望出错误,更新继续执行,可以使用ignore关键字:update ignore tablebase......

如果希望删除一个值,可以将它设置为null(如果表定义允许null值),例子如下:

update usertable

set user_email = null

where user_id = '10086';

三、删除数据

从一个表汇总删除数据,使用delete语句;有以下两种方式:

①从表中删除特定行;

②从表中删除所有行;

例如:delete from usertable where user_id = '10086';

这条SQL语句中,delete from要求指定从中删除数据的表名,where子句过滤要删除的行。

PS:delete不需要列名或者通配符,delete删除整行而不是整列,为了删除指定的列,可使用update语句(delete从表中删除行甚至表中所有行,但不删除表本身);

如果想删除表中所有行,可使用truncate table语句,它的执行效率比delete更快(truncate实际上是删除原来表并重新新建一个表,而不是逐行删除表中数据)。

更新和删除规则:

①除非确实打算更新或删除每一行,否则决不能使用不带where子句的update或delete语句;

②保证每个表都有主键,尽可能像where子句那样使用;

③对update和delete语句使用where子句前,最好先select进行测试,保证过滤的数据是正确的;

④使用强制实施引用完整性的数据库(这样MySQL将不允许删除具有与其他表相关联的数据的行)。

MySQL(九)插入、更新和删除相关推荐

  1. mysql插入第一_mySQL教程 第5章 插入 更新与删除数据

    第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 ...

  2. mySQL教程 第5章 插入 更新与删除数据

    第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 ...

  3. mysql删除新添加数据,MySQL添加、更新与删除数据

    添加.更新与删除数据 添加数据 为表中所有字段添加数据 INSERT INTO 表名(字段名1,字段名2,--) VALUES(值1,值2,--); insert into 表名 values(值1, ...

  4. MySQL添加、更新、删除数据

    MySQL添加.更新.删除数据 1.查询数据 select * from student; 2.添加数据 insert into student values(1,"张三",&qu ...

  5. Mysql批量插入更新性能优化

    Mysql批量插入更新性能优化 对于数据量较大的插入和更新,因io/cpu等性能瓶颈,会产生大量的时间消耗,目前主流的优化主要包括预编译.单条sql插入多条数据.事务插入等,下面详细介绍一下: 单条插 ...

  6. ubuntu mysql 更新_数据库应用(三): Ubuntu 下 MySQL添加、更新与删除数据

    添加.更新与删除数据 1.添加数据 命令格式: INSERT|replace INTO 表名(字段名1,字段名2,--) VALUES(值1,值2,--), (值1,值2,--); 需要注意:使用in ...

  7. node.js中mysql批量插入更新的三种方法

    [背景]在项目中遇到一个批量插入数据的需求,由于之前写过的sql语句都是插入一个对象一条数据,于是去网上搜关键词 "sql批量插入"."mysql批量插入"等, ...

  8. MySQL 添加、更新和删除数据

    一.添加数据 在MySQL中使用INSERT添加数据分为: 为表中所有字段添加数据 为表的指定字段添加数据 同时添加多条数据 1.为表中所有字段添加数据 使用insert的MySQL语句为: INSE ...

  9. mySQL 插入,更新和删除数据

    插入数据: 语法: INSERT INTO table_name ( field1, field2,...fieldN )VALUES( value1, value2,...valueN ); 如果数 ...

  10. 初识Mysql(part13)--我需要知道的7条Mysql语句之更新和删除数据

    学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:UPDATE关键字.IGNORE关键字.DELETE关键字.TRUNCATE TABLE语句 此Blo ...

最新文章

  1. Apache Kylin v2.5.0正式发布,开源分布式分析引擎
  2. keepalived+httpd 做web服务的高可用
  3. mysql将权限分为几个层级_MySQL多层级结构-区域表使用树详解
  4. Mac终端显示 bogon的问题
  5. python --version没输出_如何在Linux上安装Python
  6. Dubbo 线上 Thread pool is EXHAUSTED 问题排查
  7. 92.与上游服务建立连接
  8. java性能优化权威指南_《Java性能优化权威指南》PDF 下载
  9. MIPI学习--CSI2
  10. 3. 二叉哥的二叉树
  11. 【论文笔记】Dynamic Convolution: Attention over Convolution Kernels
  12. 28岁自学3年前端成功转行的励志故事
  13. 独立开发变现周刊(第66期): 如何把一个短链接生成工具变成一个可持续盈利的产品?...
  14. 互联网老兵谈中国早期黑客的历史(转载)
  15. type、dtype和astype
  16. wl_15 Scanner使用
  17. ubuntu20+PHP项目运行环境搭建
  18. 大数据运维:datanode启动后挂了Initialization failed for Block pool <registering>
  19. .NET 6 之 ABP vNext 初体验
  20. Vue电商系统后台API接口

热门文章

  1. 29.rust类型转换.rs
  2. C++设计模式之适配器模式
  3. Linux 进程控制 :进程创建,进程终止,进程等待,程序替换
  4. scrapy框架的概念和流程
  5. docker学习笔记(五)docker实战
  6. Sping+ActiveMQ整合
  7. JAVA多线程之UncaughtExceptionHandler——处理非正常的线程中止
  8. 图文结合,白话 Go 的垃圾回收原理
  9. 对话RTP作者Ron Frederick: 我非常期待QUIC的发展
  10. 三种CDN调度系统实现原理详解