实用SQL语句编写技巧
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语句编写技巧相关推荐
- sqlserver sql语句|经典sql语句|实用sql语句
sqlserver sql语句|经典sql语句|实用sql语句 一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop databa ...
- 干货分享丨高效SQL语句编写-Oracle Code 2019中云和恩墨CTO杨廷琨的分享
导读:Oracle Code 2019 开发者大会于4月16日在深圳举行,这是甲骨文公司在中国举办的第三届Oracle Code 开发者大会.大会主要面向IT架构师和开发人员,旨在帮助开发人员深入了解 ...
- 常用SQL语句优化技巧
除了建立索引之外,保持良好的SQL语句编写习惯将会降低SQL性能问题发生. ①通过变量的方式来设置参数 好:stringsql = "select * from people p where ...
- 网站开发-实用SQL语句大全
网页程序员必备 一.常用语句 1.创建数据库 CREATE DATABASE database-name 2.删除数据库 drop database dbname 3.:备份sql server -- ...
- 常用SQL语句书写技巧-
SQL结构化查询字符串的改写,是实现数据库查询性能提升的最现实.最有效的手段,有时甚至是唯一的手段,比如在不允许大幅度修改现有数据库结构的情况下. 通过优化SQL语句提高查询性能的关键是: ? 根据实 ...
- oracle 查看连接数语句,Oracle数据库中查询连接数的实用sql语句
查询数据库中的连接信息.其中SQL_COMMAND 是可以释放进程的sql语句: select A.SID,B.SPID,A.SERIAL#,a.lockwait,A.USERNAME,A.OSU ...
- ORACLE百万记录SQL语句优化技巧
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- MySQL:实用 SQL 语句集合
写在前面的话 本文主要用于记录工作中不经常使用但是偶尔用到又非常有用的 SQL 语句,持续不断不定期更新. 数据库大小统计 1. 查看 MySQL 某个库的所有表大小,记录数,占用空间等. SELEC ...
- SQL SERVER 数据库实用SQL语句
--查看指定表的外键约束 select * from sysobjects where parent_obj in( select id from sysobjects where name='表名' ...
最新文章
- SpringMvc4中获取request、response对象的方法
- 厉害了!SpringBoot是如何动起来的!
- c++之带默认形参值的函数
- python----面向对象:1类的定义
- 数据库原理与应用(SQL Server)笔记 第十章 用户定义函数
- 田刚:怀念陈省身先生
- golang 获取当天0点时间_golang使用webAssembly的方式
- document.mozFullScreen
- java中redis存储map集合_使用RedisTemplate存储Map集合的一点注意
- 平民价国产Android,1600左右的Broncho A1真机配置
- OO生存指.....抱歉无法生存
- 2020-10-13
- 恒生电子offer含金量_收获8个Offer,来给大家分享备战和面试经验
- NMEA 0183语句经度、纬度 度分格式转度度格式计算方法
- abaqus单位问题
- Source Sink (live555)
- 转-Tensorflow之GPU和CPU
- 常用计算机辅助审计技术,常用的计算机辅助审计技术
- sql monitor简介
- IPv4如何向IPv6过渡?IPv6改造方案有哪些?