1.插入或替换

插入一条新记录(INSERT)时候,如果记录已经存在,就先删除原记录,再插入新记录。此时,可以使用REPLACE语句,这样就不必先查询,再决定是否先删除再插入。

  语法是:replace into ... values ... 。若 id =1 的记录不存在,replace语句将插入新纪录,否则id=1的记录将被删除,然后再插入新纪录。

mysql> replace into students (id, name, nickname, sex) -> VALUES (1, '小明', '明明', '女');
Query OK, 2 rows affected (0.00 sec)

2.插入或更新

插入一条新记录(INSERT)时候,如果记录已经存在,就更新该记录。此时,可以使用 insert into ... on duplicate key update ... 语句。若 id=1 的 记录不存在,INSERT语句将插入新记录,否则,当前id=1的记录将被更新,更新的字段由UPDATE指定。

mysql> insert into students (id, name, nickname, sex)     -> values (1, '晓康', '小康', '男') -> on duplicate key update name = '晓康', nickname = '小康', sex = '男';
Query OK, 2 rows affected (0.01 sec)

3.插入或忽略

插入一条新记录(INSERT),但如果记录已经存在,就啥事也不干直接忽略。此时,可以使用insert ignore into ... 语句,若 id=1 的记录不存在,INSERT语句将插入新记录,否则,不执行任何操作。

mysql> insert ignore into students (id, name, nickname, sex) -> values (1, '小红', '红红', '女');
Query OK, 0 rows affected, 1 warning (0.00 sec)  -- 返回0 rows说明没有被执行

4.快照

如果想要对一个表进行快照,即复制一份当前表中的数据到一个新表,可以结合 create table 和 select。新创建的表结构 和 SELECT使用的表结构完全一致。

mysql> create table students_class2 select * from students where id > 4;
Query OK, 7 rows affected (0.02 sec)
Records: 7  Duplicates: 0  Warnings: 0

5.写入查询结果集

如果查询结果集需要写入到表中,可以结合INSERT和SELECT,将SELECT语句的结果集直接插入到指定表中。例如:创建一个统计男女生人数的表 students_sexnums :

create table students_sexnums (id bigint not null auto_increment,sex varchar(10) not null,nums int default 0,primary key (id)
);

然后,就可以用一条语句写入男女生人数:

mysql> insert into students_sexnums (sex, nums) select sex, COUNT(*)-> from students_class2 group by sex;
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> select * from students_sexnums;
+----+-----+------+
| id | sex | nums |
+----+-----+------+
|  1 | 女  |    3 |
|  2 | 男  |    4 |
+----+-----+------+
2 rows in set (0.00 sec)

实用SQL语句编写技巧相关推荐

  1. sqlserver sql语句|经典sql语句|实用sql语句

    sqlserver sql语句|经典sql语句|实用sql语句 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop databa ...

  2. 干货分享丨高效SQL语句编写-Oracle Code 2019中云和恩墨CTO杨廷琨的分享

    导读:Oracle Code 2019 开发者大会于4月16日在深圳举行,这是甲骨文公司在中国举办的第三届Oracle Code 开发者大会.大会主要面向IT架构师和开发人员,旨在帮助开发人员深入了解 ...

  3. 常用SQL语句优化技巧

    除了建立索引之外,保持良好的SQL语句编写习惯将会降低SQL性能问题发生. ①通过变量的方式来设置参数 好:stringsql = "select * from people p where ...

  4. 网站开发-实用SQL语句大全

    网页程序员必备 一.常用语句 1.创建数据库 CREATE DATABASE database-name 2.删除数据库 drop database dbname 3.:备份sql server -- ...

  5. 常用SQL语句书写技巧-

    SQL结构化查询字符串的改写,是实现数据库查询性能提升的最现实.最有效的手段,有时甚至是唯一的手段,比如在不允许大幅度修改现有数据库结构的情况下. 通过优化SQL语句提高查询性能的关键是: ? 根据实 ...

  6. oracle 查看连接数语句,Oracle数据库中查询连接数的实用sql语句

    查询数据库中的连接信息.其中SQL_COMMAND 是可以释放进程的sql语句: select   A.SID,B.SPID,A.SERIAL#,a.lockwait,A.USERNAME,A.OSU ...

  7. ORACLE百万记录SQL语句优化技巧

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  8. MySQL:实用 SQL 语句集合

    写在前面的话 本文主要用于记录工作中不经常使用但是偶尔用到又非常有用的 SQL 语句,持续不断不定期更新. 数据库大小统计 1. 查看 MySQL 某个库的所有表大小,记录数,占用空间等. SELEC ...

  9. SQL SERVER 数据库实用SQL语句

    --查看指定表的外键约束 select * from sysobjects where parent_obj in( select id from sysobjects where name='表名' ...

最新文章

  1. SpringMvc4中获取request、response对象的方法
  2. 厉害了!SpringBoot是如何动起来的!
  3. c++之带默认形参值的函数
  4. python----面向对象:1类的定义
  5. 数据库原理与应用(SQL Server)笔记 第十章 用户定义函数
  6. 田刚:怀念陈省身先生
  7. golang 获取当天0点时间_golang使用webAssembly的方式
  8. document.mozFullScreen
  9. java中redis存储map集合_使用RedisTemplate存储Map集合的一点注意
  10. 平民价国产Android,1600左右的Broncho A1真机配置
  11. OO生存指.....抱歉无法生存
  12. 2020-10-13
  13. 恒生电子offer含金量_收获8个Offer,来给大家分享备战和面试经验
  14. NMEA 0183语句经度、纬度 度分格式转度度格式计算方法
  15. abaqus单位问题
  16. Source Sink (live555)
  17. 转-Tensorflow之GPU和CPU
  18. 常用计算机辅助审计技术,常用的计算机辅助审计技术
  19. sql monitor简介
  20. IPv4如何向IPv6过渡?IPv6改造方案有哪些?

热门文章

  1. 路由器lan和wan的解释和网线插入
  2. 性能优化之@Contended减少伪共享
  3. 软件项目管理知识点(期末复习)
  4. FILE c语言的使用
  5. oracle数据库tns配置方法详解-转
  6. VsCode乱码问题解决方法
  7. Shell内值命令之exit
  8. x64+dbgview 中如何显示kdPrint的几种方法总结
  9. 2021年安全员-C证考试题库及安全员-C证考试内容
  10. 杨辉三角 python