zoukankan      html  css  js  c++  java
  • 实用SQL语句

    廖雪峰数据库教学资料读书笔记.

    实用的SQL语句

    插入或替换

    如果我们希望插入一条新纪录,但是如果记录已经存在,就先删除原纪录.此时可以使用REPLACE语句,这样就不必先查询,再决定是否先插入再删除. (可以看到name字段变色了, 尽量不要使用这种关键字.)

    REPLACE INTO students (id,class_id,name,gender,score) VALUES (1,1,'小明','M',90); 
    

    插入或更新

    如果我们希望插入一条新纪录,但如果记录已经存在,那么更新该记录,此时,就可以使用INSERT INTO ... ON DUPLICATE KEY UPDATE ...语句

    INSERT INTO students ( id, class_id, NAME, gender, score )
    VALUES
    	( 1, 1, '小明', gender = 'F', score = 90 ) 
    	ON DUPLICATE KEY UPDATE NAME = "小明",
    	gender = 'F',
    	score = 90;
    

    插入或忽略

    如果我们希望插入一条新纪录(INSERT), 但如果记录已经存在, 就啥也不干直接忽略, 此时可以使用 INSERT IGNORE... 语句.

    INSERT IGNORE INTO students ( id, class_id, NAME, gender, score )
    VALUES
    	( 1, 1, '小明', 'F', 99 );
    

    创建快照

    如果想要对一个表创建快照,即复制一份当前表的数据到一个新表, 即可以结合CREATE TABLE 和 SELECT:

    CREATE TABLE students_of_class1 SELECT * FROM students WHERE class_id=1;
    

    写入查询结果集

    如果查询结果集需要写入到表中,可以结合INSERT和SELECT,将SELECT语句的结果集直接插入到指定表中,例如创建一个统计成绩的表statistics,记录各班的平均成绩.

    CREATE TABLE statistics ( id BIGINT NOT NULL AUTO_INCREMENT, class_id BIGINT NOT NULL, average DOUBLE NOT NULL, PRIMARY KEY ( id ) );
    
    INSERT INTO statistics ( class_id, average ) SELECT
    class_id,
    AVG( score ) 
    FROM
    	students 
    GROUP BY
    	class_id;
    

    廖雪峰数据库教学资料读书笔记.

  • 相关阅读:
    学习&分享
    跳槽
    20121113:延期通知书
    2012.9.9 baocheng博客园正式与大家见面啦!
    数据库
    ASP.Net模板引擎
    javascript图片切换效果
    dockercompose环境下zookeeper单机搭建、集群搭建
    Linux服务器日常巡检脚本
    MMOS FFB伺服直驱方向盘主控板DIY
  • 原文地址:https://www.cnblogs.com/A-FM/p/11143355.html
Copyright © 2011-2022 走看看