zoukankan      html  css  js  c++  java
  • mysql 必知必会整理—数据插入和更新还有删除[十]

    前言

    简单整理数据插入更新还有删除。

    正文

    插入:

    INSERT INTO customers(
    customers.cust_address,
    customers.cust_city,
    customers.cust_state,
    customers.cust_zip,
    customers.cust_country,
    customers.cust_contact,
    customers.cust_email
    )
    VALUES('zhangsan','good','111','ca','dasdsa','usa',NULL)
    

    这样就插入成功了。

    在插入的时候为了安全起见,那么每次插入的时候应该写好列名。

    不管使用哪种INSERT语法,都必须给出VALUES的正确数目。

    如果不提供列名,则必须给每个表列提供一个值。如果提供列名,则必须对每个列出的列给出一个值。

    如果不这样,将产生一条错误消息,相应的行插入不成功。

    省略列 如果表的定义允许,则可以在INSERT操作中省略某些列。省略的列必须满足以下某个条件。

    1. 该列定义为允许NULL值(无值或空值)。

    2. 在表定义中给出默认值。这表示如果不给出值,将使用默认值

    提高整体性能 数据库经常被多个客户访问,对处理什么请求以及用什么次序处理进行管理是MySQL的任务。

    INSERT操作可能很耗时(特别是有很多索引需要更新时),而且它可能降低等待处理的SELECT语句的性能。

    如果数据检索是最重要的(通常是这样),则你可以通过在INSERT和INTO之间添加关键字LOW_PRIORITY,指示MySQL降低INSERT语句的优先级。

    INSERT INTO customers(
    customers.cust_address,
    customers.cust_city,
    customers.cust_state,
    customers.cust_zip,
    customers.cust_country,
    customers.cust_contact,
    customers.cust_email
    )
    VALUES('zhangsan','good','111','ca','dasdsa','usa',NULL)
    ,('zhangsan','good','111','ca','dasdsa','usa',NULL)
    ,('zhangsan','good','111','ca','dasdsa','usa',NULL)
    ,('zhangsan','good','111','ca','dasdsa','usa',NULL)
    

    如果想插入多行,只需要加入多个values即可。

    INSERT一般用来给表插入一个指定列值的行。但是,INSERT还存在另一种形式,可以利用它将一条SELECT语句的结果插入表中。

    这就是所谓的INSERT SELECT,顾名思义,它是由一条INSERT语句和一条SELECT语句组成的。

    假如你想从另一表中合并客户列表到你的customers表。不需要每次读取一行,然后再将它用INSERT插入,可以如下进行:

    insert into customers(xx,xx,xx)
    select xx,xx,xx
    from newcustomers
    

    差不多就是这样的了。

    INSERT SELECT中的列名 为简单起见,这个例子在INSERT和SELECT语句中使用了相同的列名。

    但是,不一定要求列名匹配。事实上,MySQL甚至不关心SELECT返回的列名。

    它使用的是列的位置,因此SELECT中的第一列(不管其列名)将用来填充

    表列中指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。

    这对于从使用不同列名的表中导入数据是非常有用的。

    下面介绍更新操作。

    为了更新(修改)表中的数据,可使用UPDATE语句。可采用两种方式使用UPDATE:

    1.更新表中特定行;

    2.更新表中所有行。

    UPDATE customers
    SET cust_email = 'email@qq.com'
    where cust_id = 10005;
    

    上面这就是更新语句了。

    如果更新多个列的话:

    UPDATE customers
    SET cust_email = 'email@qq.com',
    cust_name = 'game'
    where cust_id = 10005;
    

    IGNORE关键字 如果用UPDATE语句更新多行,并且在更新这些行中的一行或多行时出一个现错误,则整个UPDATE操作被取消(错误发生前更新的所有行被恢复到它们原来的值)。

    为即使是发生错误,也继续进行更新,可使用IGNORE关键字,如下所示: UPDATE IGNORE customers…

    这么说明一下,如果确定只更新一行的话,那么建议是更新是用update 1这种模式,指明只更新一行。

    为了从一个表中删除(去掉)数据,使用DELETE语句。可以两种方式使用DELETE:

    1. 从表中删除特定的行;

    2. 从表中删除所有行。

    删除表的内容而不是表 DELETE语句从表中删除行,甚至是
    删除表中所有行。但是,DELETE不删除表本身。

    更快的删除 如果想从表中删除所有行,不要使用DELETE。

    可使用TRUNCATE TABLE语句,它完成相同的工作,但速度更快(TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)

    下一节,表和视图。

  • 相关阅读:
    hdu 5224 Tom and paper 水题
    2015 UESTC 搜索专题N题 韩爷的梦 hash
    2015 UESTC 搜索专题M题 Palindromic String 马拉车算法
    2015 UESTC 搜索专题K题 秋实大哥の恋爱物语 kmp
    2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
    2015 UESTC 搜索专题F题 Eight Puzzle 爆搜
    2015 UESTC 搜索专题E题 吴队长征婚 爆搜
    2015 UESTC 搜索专题D题 基爷的中位数 二分
    2015 UESTC 搜索专题C题 基爷与加法等式 爆搜DFS
    2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
  • 原文地址:https://www.cnblogs.com/aoximin/p/15358025.html
Copyright © 2011-2022 走看看