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