SQL 值得记住的点
概要
记录在学习过程中,遇到的不懂且需要掌握的知识点。主要基于 MySQL。
汇总
replace 函数
删除重复
取子串 substr
项连接
随机选取
获取执行计划
构造触发器
coalesce 函数
详细内容
replace 函数
replace 函数有两种用法:
- 全字段更新替换。
语法: REPLACE INTO table_name VALUES (item1,item2...)
如果主键冲突,将会替换掉原来的记录,否则插入一条新的记录。 - 运用 REPLACE(X,Y,Z) 函数。其中X是要处理的字符串,Y 是 X 中将要被替换的字符串,Z 是用来替换 Y 的字符串,最终返回替换后的字符串。例如
UPDATE table_name SET content = replace(content,2017,2018); //清除表中 content 字段中的 2017 必改为 2018 ,有必要也可以加 WHERE 语句进行筛选
删除重复
比如说删除表中重复员工编号 emp_no,并且保留最小,可以这样实现:
DELETE FROM table_name WHERE id not in (SELECT min(id) FROM table_name GROUP BY emp_no)
取子串 substr
语法: substr(string, start, length);
其中 string为字符串,start 为起始位置(字符从 1 开始编号),如果取负数表示倒数第几个开始;length 为长度,如果忽略,默认取到最后。
MySQL 字符串截取函数:left(), right(), substring(), substring_index(),mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,其功能非常强大和灵活。详细自行搜索。
项连接
- 字符串连接:用符号 ||,比如在字符串 s1 与 s2 间加个逗号
s1 || ',' || s2
- 项连接,使用 group_concat(item, str=',') 函数,第二个字符串为分割符,默认是逗号,与 group 一起使用。比如将某个部门的员工编号用逗号连接起来:
SELECT t.dept_no, group_concat(emp_no) FROM table_name t GROUP BY dept_no
随机选取
比如要在表中随机选取 5 条记录:
... ORDER BY rand() LIMIT 5
获取执行计划
可以用 "EXPLAIN" 关键字,用于描述表的细节,比如
EXPLAIN SELECT * FROM employees
构造触发器
触发器用于某个表中执行某项操作时,触发另一个操作。注意以下几点:
- 创建触发器使用语句:CREATE TRIGGER trig_name
- 指定触发器触发的事件在执行某操作之前还是之后,使用语句:BEFORE/AFTER [INSERT/UPDATE/ADD] ON tablename
- 触发器触发的事件写在 BEGIN 和 END 之间,中间的语句记得用
;号 - 触发器中可以通过 NEW 获得触发事件之后对应的 tablename 的相关列的值,OLD 获得触发事件之前的对应的 tablename 的相关列的值
比如构造一个触发器 audit_log,在向 employees_test 表中插入一条数据的时候,触发插入相关的数据到 audit 中:
CREATE TRIGGER audit_log AFTER INSERT ON employees_test
BEGIN
INSERT INTO audit VALUES(NEW.ID,NEW.NAME);
END
coalesce 函数
coalesce():返回参数中的第一个非空表达式(从左向右),如果都为空 NULL,则返回 NULL。
SQL 值得记住的点的更多相关文章
- PL/SQL Developer记住用户名密码
在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码: 设置方法:PL/SQL Developer ->tools-> ...
- [think]关于个人发展值得记住的一些建议 听别人的话,即使你不想听 不要只做不想 成功不能被复制,但失败总在不停复制。看看别人是怎么倒下的,你可以更早地成功
[think]关于个人发展值得记住的一些建议 偶然看到一篇采访周爱民的文章,里面的一些建议虽然朴实无华,却感觉很有道理,特此记录: 记者:对于程序员的技术发展和职业规划能否给大家一些建议呢?----- ...
- 清除SQL server 记住的用户名和密码
公司更换电脑,清除SQL server 记住的用户名和密码 请按照上图中的位置找到相应的文件SqlStudio.bin,然后把它删除,请放一百个心,这个文件会自动生成的. 需要注意的是,在删除之前一定 ...
- 清除SQL server2008 记住的用户名和密码
删除以下文件即可: C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStud ...
- 清除 sql server 记住密码
引用:https://www.cnblogs.com/zengbin/p/4307013.html SQL Server 2005 Management Studio %AppData%\Micros ...
- 设置PL/SQL Developer记住用户名密码
- 如何让pl/sql developer记住密码,实现快速登录
前两天,有同事使用plsql的时候,切换数据库的时候需要不断的重复输入密码,这样太麻烦了. 下面,我这里说下如何的实现plsql不需要输入密码就能快速登录的方法: 1.一开始登录,首先像往常那样输入密 ...
- PL/SQL常用设置 可看引用位置更清晰直观 引自:http://blog.csdn.net/xiaoqforever/article/details/27695569
引自:http://blog.csdn.net/xiaoqforever/article/details/27695569 1,登录后默认自动选中My Objects 默认情况下,PLSQL Deve ...
- jQuery+css+div一些值得注意的常用语句
一.div页面布局 一个好的页面布局很重要,这会让你写代码的时候层次分明: 以2列左侧固定右侧自适应宽度为例子: 这是HTML代码: <!DOCTYPE html PUBLIC "-/ ...
随机推荐
- 解读人:刘佳维,Spectral Clustering Improves Label-Free Quantification of Low-Abundant Proteins(谱图聚类改善了低丰度蛋白的无标记定量)
发表时间:(2019年4月) IF:3.95 单位: 维也纳医科大学: 欧洲生物信息研究所(EMBL-EBI): 分子病理学研究所: 奥地利科学院分子生物技术研究所: Gregor Mendel分子植 ...
- 消息中间件 | 消息协议 | AMQP -- 《分布式 消息中间件实践》笔记
04年,AMQP开放标准被开发 06年,AMQP规范被发布 基本概念 Message:与平台无相关的数据. Publisher:向交换器发布消息的客户端应用程序 Excha ...
- mail邮箱
1. 创建163邮箱(其他邮箱同理) 2.设置授权码 3.开启服务 4.vim /etc/mail.rc 5. 给你的qq邮箱设置163账号的白名 6. 发送md5结果到qq 7.无邮件正文 mail ...
- ResourceBundle 读取properties文件中文乱码
1.确认properties文件是什么编码格式,并确认文件在该格式下中文是正常显示的2.读取时候,进行转一层,先用ISO-8859-1读取字节流,然后根据properties的文件格式进行new St ...
- 埃氏筛法(求n以内有多少个素数)
题目大意:给定整数n,请问n以内有多少个素数 思路:想必要判断一个数是否是素数,大家都会了,并且可以在O(根号n)的复杂度求出答案,那么求n以内的素数呢,那样求就显得有点复杂了,下面看一下这里介绍的
- Murano PTL&Core
PTL: Serg Melikyan Core: Ekaterina Chernova efedorova@mirantis.com Kirill Zaitsev kzaitsev@mirantis. ...
- (转)Linux 文件和目录的属性
linux 文件属性与权限 原文:https://www.cnblogs.com/kzloser/articles/2673790.html https://www.cnblogs.com/danh/ ...
- Storm概念学习系列之storm-starter项目(完整版)(博主推荐)
不多说,直接上干货! 这是书籍<从零开始学Storm>赵必厦 2014年出版的配套代码! storm-starter项目包含使用storm的各种各样的例子.项目托管在GitHub上面,其网 ...
- 4 - Channelhandler和ChannelPipeline
4.1 Channelhandler 4.1.1 Channel声明周期(状态事件) 方法 描述 ChannelUnregistered Channnel已创建,但是未注册到EventLoop Cha ...
- JSP标签和JSTL标签注意点
1.转发和重定向问题 当前项目:/Test 转发路径:"/"根目录表示当前项目"/Test","/login.jsp"就是"/Te ...