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教程

  • 相关阅读:
    hdu 1269 迷宫城堡 (并查集)
    hdu 1272 小希的迷宫 (深搜)
    hdu 1026 Ignatius and the Princess I (深搜)
    hdu 1099 Lottery
    hdu 1068 Girls and Boys (二分匹配)
    几个基础数位DP(hdu 2089,hdu 3555,uestc 1307 windy 数)
    hdu 1072 Nightmare (广搜)
    hdu 1398 Square Coins (母函数)
    hdu 1253 胜利大逃亡 (深搜)
    hdu 1115 Lifting the Stone (求重心)
  • 原文地址:https://www.cnblogs.com/cpcpp/p/13019515.html
Copyright © 2011-2022 走看看