zoukankan      html  css  js  c++  java
  • sql--修改数据

    增 insert

    当我们需要向数据库表中插入一条新记录时,就必须使用INSERT语句。
    INSERT语句的基本语法是:

    INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);
    

    例如,我们向students表插入一条新记录,先列举出需要插入的字段名称,然后在VALUES子句中依次写出对应字段的值:

    -- 添加一条新记录

    INSERT INTO students (class_id, name, gender, score) VALUES (2, '大牛', 'M', 80);
    -- 查询并观察结果:
    SELECT * FROM students;

    注意到我们并没有列出id字段,也没有列出id字段对应的值,这是因为id字段是一个自增主键,它的值可以由数据库自己推算出来。此外,如果一个字段有默认值,那么在INSERT语句中也可以不出现。

    要注意,字段顺序不必和数据库表的字段顺序一致,但值的顺序必须和字段顺序一致。也就是说,可以写INSERT INTO students (score, gender, name, class_id) ...,但是对应的VALUES就得变成(80, 'M', '大牛', 2)。

    还可以一次性添加多条记录,只需要在VALUES子句中指定多个记录值,每个记录是由(...)包含的一组值:

    -- 一次性添加多条新记录

    INSERT INTO students (class_id, name, gender, score) VALUES
    (1, '大宝', 'M', 87),
    (2, '二宝', 'M', 81);

    SELECT * FROM students;

    使用INSERT,我们就可以一次向一个表中插入一条或多条记录。

    删 delete

    如果要删除数据库表中的记录,我们可以使用DELETE语句。

    DELETE语句的基本语法是:

    DELETE FROM <表名> WHERE ...;
    

    例如,我们想删除students表中id=1的记录,就需要这么写:

    -- 删除id=1的记录

    DELETE FROM students WHERE id=1;
    -- 查询并观察结果:
    SELECT * FROM students;

    注意到DELETE语句的WHERE条件也是用来筛选需要删除的行,因此和UPDATE类似,DELETE语句也可以一次删除多条记录:

    -- 删除id=5,6,7的记录

    DELETE FROM students WHERE id>=5 AND id<=7;
    -- 查询并观察结果:
    SELECT * FROM students;

    如果WHERE条件没有匹配到任何记录,DELETE语句不会报错,也不会有任何记录被删除。例如:

    -- 删除id=999的记录

    DELETE FROM students WHERE id=999;
    -- 查询并观察结果:
    SELECT * FROM students;

    最后,要特别小心的是,和UPDATE类似,不带WHERE条件的DELETE语句会删除整个表的数据:

    DELETE FROM students;
    这时,整个表的所有记录都会被删除。所以,在执行DELETE语句时也要非常小心,最好先用SELECT语句来测试WHERE条件是否筛选出了期望的记录集,然后再用DELETE删除。

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

    例如,分别执行删除id=1和id=999的记录:

    mysql> DELETE FROM students WHERE id=1;
    Query OK, 1 row affected (0.01 sec)

    mysql> DELETE FROM students WHERE id=999;
    Query OK, 0 rows affected (0.01 sec)

    使用DELETE,我们就可以一次删除表中的一条或多条记录。

    改 update

    如果要更新数据库表中的记录,我们就必须使用UPDATE语句。
    UPDATE语句的基本语法是:

    UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;
    例如,我们想更新students表id=1的记录的name和score这两个字段,先写出UPDATE students SET name='大牛', score=66,然后在WHERE子句中写出需要更新的行的筛选条件id=1:

    -- 更新id=1的记录

    UPDATE students SET name='大牛', score=66 WHERE id=1;
    -- 查询并观察结果:
    SELECT * FROM students WHERE id=1;

    注意到UPDATE语句的WHERE条件和SELECT语句的WHERE条件其实是一样的,因此完全可以一次更新多条记录:

    -- 更新id=5,6,7的记录

    UPDATE students SET name='小牛', score=77 WHERE id>=5 AND id<=7;
    -- 查询并观察结果:
    SELECT * FROM students;

    在UPDATE语句中,更新字段时可以使用表达式。例如,把所有80分以下的同学的成绩加10分:

    -- 更新score<80的记录

    UPDATE students SET score=score+10 WHERE score<80;
    -- 查询并观察结果:
    SELECT * FROM students;

    其中,SET score=score+10就是给当前行的score字段的值加上了10。

    如果WHERE条件没有匹配到任何记录,UPDATE语句不会报错,也不会有任何记录被更新。例如:

    -- 更新id=999的记录

    UPDATE students SET score=100 WHERE id=999;
    -- 查询并观察结果:
    SELECT * FROM students;

    最后,要特别小心的是,UPDATE语句可以没有WHERE条件,例如:

    UPDATE students SET score=60;
    这时,整个表的所有记录都会被更新。所以,在执行UPDATE语句时要非常小心,最好先用SELECT语句来测试WHERE条件是否筛选出了期望的记录集,然后再用UPDATE更新。

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

    例如,更新id=1的记录时:

    mysql> UPDATE students SET name='大宝' WHERE id=1;
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1 Changed: 1 Warnings: 0
    MySQL会返回1,可以从打印的结果Rows matched: 1 Changed: 1看到。

    当更新id=999的记录时:

    mysql> UPDATE students SET name='大宝' WHERE id=999;
    Query OK, 0 rows affected (0.00 sec)
    Rows matched: 0 Changed: 0 Warnings: 0
    MySQL会返回0,可以从打印的结果Rows matched: 0 Changed: 0看到。

    使用UPDATE,我们就可以一次更新表中的一条或多条记录。

  • 相关阅读:
    Java并发编程:并发容器之ConcurrentHashMap(转载)
    Java ConcurrentModificationException异常原因和解决方法
    Java并发编程:同步容器
    Java并发编程:深入剖析ThreadLocal
    错误:The POM for org.codehaus.plexus:plexus-compiler-api:jar:2.2 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details的解决方法
    maven工程中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
    部署时发出警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:jx-web' did not find a matching property.的解决方法
    [WARNING] The POM for com.tao:jx-service:jar:0.0.1-SNAPSHOT is missing, no dependency information available
    maven工程中警告[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
    Eclipse中Errors occurred during the build最简单的解决方法
  • 原文地址:https://www.cnblogs.com/HK769405/p/13997741.html
Copyright © 2011-2022 走看看