概要

记录在学习过程中,遇到的不懂且需要掌握的知识点。主要基于 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. mysql update select 从查询结果中更新数据

    UPDATE user_online_month_atu a INNER JOIN ( SELECT user_id, sum(c.online_times) as online_times, SUM ...

  2. EcmaScript学习

    1.eval: ts: declare function eval(x: string): any; js: /** @param {*} x @return {Object} */ eval = f ...

  3. 牛客假日团队赛1 G.Superbull

    链接: https://ac.nowcoder.com/acm/contest/918/G 题意: Bessie and her friends are playing hoofball in the ...

  4. 设计模式——单例模式(Singleton)

    保证一个类仅有一个实例,并提供一个访问它的全局访问点.——DP UML类图 模式说明 个人认为单例模式是所有设计模式中最为简单的一个模式,因为实现这个模式仅需一个类,而不像其他模式需要若干个类.这个模 ...

  5. 文件系统满的话(filesystem full),该如何处理。(du and ls)

    #!/bin/bash function ergodic(){ ` do "/"$file ] then ergodic $"/"$file else loca ...

  6. Storm概念学习系列 之数据流模型、Storm数据流模型

    不多说,直接上干货! 数据流模型 数据流模型是由数据流.数据处理任务.数据节点.数据处理任务实例等构成的一种数据模型.本节将介绍的数据流模型如图1所示. 分布式流处理系统由多个数据处理节点(node) ...

  7. js 数据类型及检测

    js中基本数据类型有6种number.string.undefined.null.boolean,Symbol (ES6 新增,表示独一无二的值),还有一种数据类型为引用数据类型统称为Object对象 ...

  8. Asp.NetCore 从控制台到WebApi

    一.新建一个.NetCore控制台程序 二.添加依赖项 三.添加Startup.cs文件 using Microsoft.AspNetCore.Builder; using Microsoft.Asp ...

  9. 6 - 编码解码器-一种channelHandler

    6.1 解码器 6.1.1 抽象类-ByteToMessageDecoder decode(ChannelHandlerContext ctx, ByteBuf in, List<Object& ...

  10. 经典PHP笔试题

    1.考虑如下脚本.标记处应该添加什么代码才能让脚本输出字符串php? $alpha = 'abcdefghijklmnopqrstuvwxyz'; $letters = array(15, 7, 15 ...