• SQL 值得记住的点


    概要

    记录在学习过程中,遇到的不懂且需要掌握的知识点。主要基于 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。
     
     
     

  • 相关阅读:
    Win Server 2008 R2 一键配置全环境 PHP5+MYSQL5+ZEND+PHPMYADMIN
    服务器加固,安全狗V4.0正式版 (Windows)
    Win server 2008 R2激活工具使用图文教程(SK Patch v1 R2 Final OEM)
    Laoy8 V4.0 营销插件
    OK3W发布插件
    流量精灵(P2P方式,刷真实流量)
    aspcms2发布插件
    今天写一篇技术文章,关于TemplateEngine的。
    全面分析新浪博客的登录过程
    网站克隆插件
  • 原文地址:https://www.cnblogs.com/zhoukui/p/9006753.html
Copyright © 2020-2023  润新知