概要

记录在学习过程中,遇到的不懂且需要掌握的知识点。主要基于 MySQL。

 


汇总

     replace 函数

     删除重复

     取子串 substr

     项连接

     随机选取

     获取执行计划

     构造触发器

     coalesce 函数

 


详细内容

replace 函数

replace 函数有两种用法:

  1. 全字段更新替换。

    语法: REPLACE INTO table_name VALUES (item1,item2...)

    如果主键冲突,将会替换掉原来的记录,否则插入一条新的记录。
  2. 运用 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() 函数,其功能非常强大和灵活。详细自行搜索。

 

项连接

  1. 字符串连接:用符号 ||,比如在字符串 s1 与 s2 间加个逗号
s1 || ',' || s2
  1. 项连接,使用 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 值得记住的点的更多相关文章

  1. PL/SQL Developer记住用户名密码

    在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码: 设置方法:PL/SQL Developer ->tools-> ...

  2. [think]关于个人发展值得记住的一些建议 听别人的话,即使你不想听 不要只做不想 成功不能被复制,但失败总在不停复制。看看别人是怎么倒下的,你可以更早地成功

    [think]关于个人发展值得记住的一些建议 偶然看到一篇采访周爱民的文章,里面的一些建议虽然朴实无华,却感觉很有道理,特此记录: 记者:对于程序员的技术发展和职业规划能否给大家一些建议呢?----- ...

  3. 清除SQL server 记住的用户名和密码

    公司更换电脑,清除SQL server 记住的用户名和密码 请按照上图中的位置找到相应的文件SqlStudio.bin,然后把它删除,请放一百个心,这个文件会自动生成的. 需要注意的是,在删除之前一定 ...

  4. 清除SQL server2008 记住的用户名和密码

    删除以下文件即可: C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStud ...

  5. 清除 sql server 记住密码

    引用:https://www.cnblogs.com/zengbin/p/4307013.html SQL Server 2005 Management Studio %AppData%\Micros ...

  6. 设置PL/SQL Developer记住用户名密码

  7. 如何让pl/sql developer记住密码,实现快速登录

    前两天,有同事使用plsql的时候,切换数据库的时候需要不断的重复输入密码,这样太麻烦了. 下面,我这里说下如何的实现plsql不需要输入密码就能快速登录的方法: 1.一开始登录,首先像往常那样输入密 ...

  8. PL/SQL常用设置 可看引用位置更清晰直观 引自:http://blog.csdn.net/xiaoqforever/article/details/27695569

    引自:http://blog.csdn.net/xiaoqforever/article/details/27695569 1,登录后默认自动选中My Objects 默认情况下,PLSQL Deve ...

  9. jQuery+css+div一些值得注意的常用语句

    一.div页面布局 一个好的页面布局很重要,这会让你写代码的时候层次分明: 以2列左侧固定右侧自适应宽度为例子: 这是HTML代码: <!DOCTYPE html PUBLIC "-/ ...

随机推荐

  1. 解读人:刘佳维,Spectral Clustering Improves Label-Free Quantification of Low-Abundant Proteins(谱图聚类改善了低丰度蛋白的无标记定量)

    发表时间:(2019年4月) IF:3.95 单位: 维也纳医科大学: 欧洲生物信息研究所(EMBL-EBI): 分子病理学研究所: 奥地利科学院分子生物技术研究所: Gregor Mendel分子植 ...

  2. 消息中间件 | 消息协议 | AMQP -- 《分布式 消息中间件实践》笔记

    04年,AMQP开放标准被开发 06年,AMQP规范被发布   基本概念     Message:与平台无相关的数据.     Publisher:向交换器发布消息的客户端应用程序     Excha ...

  3. mail邮箱

    1. 创建163邮箱(其他邮箱同理) 2.设置授权码 3.开启服务 4.vim /etc/mail.rc 5. 给你的qq邮箱设置163账号的白名 6. 发送md5结果到qq 7.无邮件正文 mail ...

  4. ResourceBundle 读取properties文件中文乱码

    1.确认properties文件是什么编码格式,并确认文件在该格式下中文是正常显示的2.读取时候,进行转一层,先用ISO-8859-1读取字节流,然后根据properties的文件格式进行new St ...

  5. 埃氏筛法(求n以内有多少个素数)

    题目大意:给定整数n,请问n以内有多少个素数 思路:想必要判断一个数是否是素数,大家都会了,并且可以在O(根号n)的复杂度求出答案,那么求n以内的素数呢,那样求就显得有点复杂了,下面看一下这里介绍的

  6. Murano PTL&Core

    PTL: Serg Melikyan Core: Ekaterina Chernova efedorova@mirantis.com Kirill Zaitsev kzaitsev@mirantis. ...

  7. (转)Linux 文件和目录的属性

    linux 文件属性与权限 原文:https://www.cnblogs.com/kzloser/articles/2673790.html https://www.cnblogs.com/danh/ ...

  8. Storm概念学习系列之storm-starter项目(完整版)(博主推荐)

    不多说,直接上干货! 这是书籍<从零开始学Storm>赵必厦 2014年出版的配套代码! storm-starter项目包含使用storm的各种各样的例子.项目托管在GitHub上面,其网 ...

  9. 4 - Channelhandler和ChannelPipeline

    4.1 Channelhandler 4.1.1 Channel声明周期(状态事件) 方法 描述 ChannelUnregistered Channnel已创建,但是未注册到EventLoop Cha ...

  10. JSP标签和JSTL标签注意点

    1.转发和重定向问题 当前项目:/Test 转发路径:"/"根目录表示当前项目"/Test","/login.jsp"就是"/Te ...