zoukankan      html  css  js  c++  java
  • MySQL 增-删-改操作

    数据库的基本操作就是:增-删-查-改。

    用得最多的查:SELECT,在MySQL 查询操作已经讲过,现在学习其他三种。

    插入-INSERT

    基本语法:

    INSERT INTO <tablename> (list1, list2, ...) VALUES (val1, val2, ...);
    
    eg:INSERT INTO students (class_id, name, gender, score) VALUES (2, '柯基', 'M', 80);                     插入一条记录
       INSERT INTO students (class_id, name, gender, score) VALUES (1, '二哈', 'M', 87),(2, '二宝', 'M', 81);  插入多条记录
    INSERT INTO students (class_id, name, gender, score) SELECT class_id, name, gender, score FROM studentsB; 插入select出来的数据

    值得注意的几点:

    · 如果表使用了自增型主键,系统可以通过自增自动算出,该字段可以不用给出。

    · 可以省略不写(list1,list2…),如果不写,给出的val顺序必须和表中列的顺序一致。不过建议写上列名,这样语句更容易理解,也不容易出错。

    · 插入操作自动插到表末。关系数据库的记录集没有顺序的概念,只有查询的时候才会排序。查询不指定顺序,得到的就是表中实际存放的顺序,如果设置了主键且为自增型,那么就是按主键排序的结果。

    有时插入的记录在原表中已经存在,如果任然使用普通的insert,会插入一条新的记录,这条记录与原有的某条记录重复。

    有时我们不希望这样,大致可以分为三种情形:

    1.原表中存在这个数据,我们希望将原记录删除,替换成新插入的记录。使用replace into,如果没有该记录,和普通插入一样。
    REPLACE
    INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);

    2.不删除,直接在原记录基础上更新,使用ON DUPLICATE KEY UPDATE,如果没有该记录,和普通插入一样。
    INSERT INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99) ON DUPLICATE KEY UPDATE name='小明', gender='F', score=99;

    3.如果该记录存在,就忽略这条语句,什么也不干,如果不存在,插入。
    INSERT IGNORE INTO students (id, class_id, name, gender, score) VALUES (1, 1, '小明', 'F', 99);

    那么如何判断原记录是否存在呢?这里是通过主键(或者唯一索引)进行判断的,因此表必须要有主键或者唯一索引,并且这些语句必须给出插入的主键(上例即id)。

    修改-UPDATE

    更新表中的数据,用UPDATE命令。语法如下:

    UPDATE <tablename> SET list1=val1, list2=val2, ... WHERE ...;
    
    eg:UPDATE students SET name='大牛', score=66 WHERE id=1;          修改id为1的记录中name和score;
       UPDATE students SET name='小牛', score=77 WHERE id=5 AND id=7;  同时修改id=5和id=7的记录
    UPDATE students SET score=NULL WHERE id=5; 将id=5的分数删除,可以置空NULL

    当没有WHERE条件时,整个表都会被更新。

    在使用MySQL关系数据库时,UPDATE语句会返回更新的行数以及WHERE条件匹配的行数。

    删除-DELETE

    删除某些记录,语法:

    DELETE FROM <tablename> WHERE ...;
    
    eg:DELETE FROM students WHERE id=1;
       DELETE FROM students WHERE id>=1 AND id<=10;

    不指定where时,表中所有记录都会被删除。MySQL不能读档,所以一定要小心,最好在删除和更新之前,使用select看where筛选是否正确。

    在使用MySQL关系数据库时,DELETE语句会返回删除的行数以及WHERE条件匹配的行数。

    小练习:想删除第1和第3行,应该是:WHERE id=1 OR id=3;而不是AND;AND匹配不到任何记录。

     参考:廖雪峰的SQL教程

  • 相关阅读:
    《软件需求模式》阅读笔记二
    《软件需求模式》阅读笔记一
    《编写有效用例》阅读笔记三
    《编写有效用例》阅读笔记二
    《编写有效用例》阅读笔记一
    《软件需求十步走》阅读笔记三
    英文一分钟自我介绍
    c语言面试常见题
    docker
    LLDP
  • 原文地址:https://www.cnblogs.com/cpcpp/p/13019515.html
Copyright © 2011-2022 走看看