zoukankan      html  css  js  c++  java
  • MySQL学习笔记

    基础知识

    1、插入、更新一句搞定

    在用数据库的时候经常会遇到这种情况:如果不存在则插入,如果存在则更新(通过主键判断是否存在),粗暴并不简单的做法是分成三步:

    1. 先select出来,判断有没有数据;
    2. 如果有数据,执行更新操作;
    3. 如果没有数据,执行插入操作;

    这种处理方式并不严谨,数据库提供了另外一种方式来实现:ON DUPLICATE KEY UPDATE,比如:

    INSERT INTO 
    	table (a,b,c) VALUES (1,2,3),(4,5,6)
    ON DUPLICATE KEY UPDATE 
    	c=VALUES(a)+VALUES(b);  
    

    配合IF这个功能的威力还会增强不少。另外有时候需要将删除、插入用一句搞定,那么可以用REPLACE INTO来做。


    2、group by的其他信息

    经常会用group by配合max/min来求最值,但是需要注意的是下面这段SQL:

    select key1, key2, max(val) from your_table group by key1

    直观上我们希望得到的key2是对应val最大值的那条记录,但事实上并非如此,而是被group by分组之后的第一条数据。那么如果想要返回对应的记录只需要先排序让对应的记录到第一个即可:

    select key1, key2, max(val) from (select * from your_table order by val desc) t group by key1.


    3、数据库和实例

    MySQL是单进程多线程,也就是说MySQL在系统上的体现就是一个进程。而数据库则是指一系列的物理文件:

    高级货

    ----- updating -----

  • 相关阅读:
    Leetcode Unique Binary Search Trees
    Leetcode Decode Ways
    Leetcode Range Sum Query 2D
    Leetcode Range Sum Query
    Leetcode Swap Nodes in Pairs
    Leetcode Rotate Image
    Leetcode Game of Life
    Leetcode Set Matrix Zeroes
    Leetcode Linked List Cycle II
    CF1321A
  • 原文地址:https://www.cnblogs.com/antispam/p/4250147.html
Copyright © 2011-2022 走看看