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. 使用自定义材质球,实现NGUI屏幕溶解和灰显
  2. mysql数据意外删了怎么办_MySQL数据库意外崩溃导致表数据文件损坏无法启动怎么办...
  3. Linux先发送条件变量,浅谈Linux条件变量的使用
  4. linux命令 renice,Linux命令之nice和renice
  5. 我是京东智能配送机器人,已抵达您的楼下
  6. oracle数据库使用odbc导出到access失败
  7. 安装ADB Interface驱动
  8. 2362:数字游戏(小k和小p的传奇)
  9. java在上海就业_叩丁狼教育上海Java一期就业报道
  10. Excise_Thread1
  11. 【SandQuant 量化投资】詹姆斯·托宾:风险条件下的流动性偏好行为
  12. 远程办公,这13个工具比微信更好用!
  13. 5月30日第壹简报,星期一,农历五月初一
  14. 未明学院:国际政治专业出身,如何pk掉港大、美籍商科生,拿下亚马逊市场部德勤offer!
  15. 一个简单的Hello World程序
  16. 深度学习专业术语之英文介绍——附含历届ILSVRC冠亚军结果
  17. 客户端连接linux的MySQL数据库出现被自己拒绝的错误
  18. 基于java的微信支付之JSAPI公众号充值
  19. SPDY:Google开发的下一代HTTP协议
  20. iOS身份证识别(OCR源码)

热门文章

  1. 应用农产品追溯系统价值
  2. 2023年电脑学剪辑要用什么软件 电脑剪辑视频怎么学会
  3. 供应化学试剂BHQ-1 氨基|BHQ-1 amine|1308657-79-5
  4. 分享几款常用远程连接工具
  5. 编程练习:非质数分解成质数相乘
  6. 8Manage PMO:多项目管理工作经验分享
  7. 【博客278】TCP连接异常关闭的几种情况
  8. CSS animation动画:实现台球运动效果
  9. c语言坐标如何判定碰撞,台球碰撞 (C语言代码)
  10. 7-21 查询水果价格