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 "-/ ...
随机推荐
- bzoj 3944: Sum(杜教筛)
3944: Sum Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4930 Solved: 1313[Submit][Status][Discuss ...
- postgresql数据库linux下设置开机自启动
设置PostgreSQL开机自启动PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下cd /opt/soft_bak/postgre ...
- 帝都Day6——图论
//P2O5呢? 一.图的存储: 邻接矩阵:邻接表. 邻接矩阵:n*n的[][],[i][j]节点有边记1没边0 缺点 空间复杂度O(n^2) 占用内存较大(我为什么要把这些东西写到这里呢???) 邻 ...
- AtCoder Beginner Contest 121 题解
题目链接:https://atcoder.jp/contests/abc121 A White Cells 分析:题目数据规模很小,直接暴力修改都可以.或者可以推出公式. 代码: #include & ...
- Java基础--常用API--java.lang.Object
一.简述 1.Object类是所有类的父类,即直接或间接的继承java.lang.Object类.省略了extends Object. 2.方法 (1)protected native Object ...
- Retina显示屏-揭秘移动端的视觉稿通常会设计为传统PC的2倍
一.Retina显示屏简介 retina:一种具备超高像素密度的液晶屏,同样大小的屏幕上显示的像素点由1个变为多个,如在同样带下的屏幕上,苹果设备的retina显示屏中,像素点1个变为4个. reti ...
- 06.Spring 资源加载 - ResourceLoader
基本概念 ResourceLoader 接口,在 Spring 中用于加载资源,通过它可以获取一个 Resouce 对象. 内部构造 首先来看它的接口定义: public interface Reso ...
- 【密码学】SHA1算法实现及详解
1 SHA1算法简介 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digit ...
- 打印流-PrintStream
打印流-PrintStream java.io.PrintStream为其他输出流添加了功能,使其他的流能够更方便的打印各种数据值表现形式 PrintStream特点: 1.只负责数据的输入,不负责数 ...
- .net笔试题一(简答题)
1. 简述 private. protected. public. internal 修饰符的访问权限答:private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类 ...