zoukankan      html  css  js  c++  java
  • MySQL-插入数据(INSERT)

    Insert语句可将一行或多行插入到表中。

    INSERT语法:

    INSERT INTO table(column1,column2...) VALUES (value1,value2,...); 首先,在INSERT INTO子句之后,在括号内指定表名和逗号分隔列的列表。 然后,将括号内的相应列的逗号分隔值放在VALUES关键字之后。 在执行插入语句前,需要具有执行INSERT语句的INSERT权限

    INSERT语法实际应用:

    tasts表:
    
    USE testdb;
    
    CREATE TABLE IF NOT EXISTS tasks (
        task_id INT(11) AUTO_INCREMENT,
        subject VARCHAR(45) DEFAULT NULL,
        start_date DATE DEFAULT NULL,
        end_date DATE DEFAULT NULL,
        description VARCHAR(200) DEFAULT NULL,
        PRIMARY KEY (task_id)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    插入:
    
    INSERT INTO tasks(subject,start_date,end_date,description)
    VALUES('Learn MySQL INSERT','2017-07-21','2017-07-22','Start learning..');

    插入多行:
    INSERT INTO tasks(subject,start_date,end_date,description)
    VALUES ('任务-1','2017-01-01','2017-01-02','Description 1'),
           ('任务-2','2017-01-01','2017-01-02','Description 2'),
           ('任务-3','2017-01-01','2017-01-02','Description 3');

    INSERT与SELECT混合应用

    MySQL中,可以使用SELECT语句返回的列和值来填充INSERT语句的值

    INSERT INTO table_1
    SELECT c1, c2, FROM table_2;

    假设要将tasks表复制到tasks_bak表。

    首先,通过复制tasks表的结构,创建一个名为tasks_bak的新表,如下所示:
    INSERT INTO tasks_bak
    SELECT * FROM tasks;
    
    第二步,使用以下INSERT语句将tasks表中的数据插入tasks_bak表:
    INSERT INTO tasks_bak
    SELECT * FROM tasks;
    
    第三步,检查tasks_bak表中的数据,看看是否真正从tasks表复制完成了。
    mysql> select * from tasks;

    INSERT与On Duplicate Key Update

    应用On Duplicate Key Update:
    
    INSERT INTO tasks(task_id,subject,start_date,end_date,description)
    VALUES (4,'Test ON DUPLICATE KEY UPDATE','2017-01-01','2017-01-02','Next Priority')
    ON DUPLICATE KEY UPDATE 
       task_id = task_id + 1, 
       subject = 'Test ON DUPLICATE KEY UPDATE';
    
    应用Update函数:
    
    UPDATE tasks 
    SET 
        task_id = task_id + 1,
        subject = 'Test ON DUPLICATE KEY UPDATE'
    WHERE
        task_id = 4;

    INSERT IGNORE语句

    功能介绍:

    INSERT语句向表中添加一些行数据并且在处理期间发生错误时,INSERT语句将被中止,并返回错误消息。因此,可能不会向表中没有插入任何行。

    但是,如果使用INSERT INGORE语句,则会忽略导致错误的行,并将其余行插入到表中。

    INSERT IGNORE语法:
    
    INSERT IGNORE INTO table(column_list)
    VALUES( value_list),
          ( value_list),
          ...

    STRICT语句

    STRICT模式打开时,如果您尝试将无效值插入到表中,MySQL将返回错误并中止INSERT语句。

    创建一个名为tokens的新表:
    
    USE yiibaidb;
    
    CREATE TABLE IF NOT EXISTS tokens (
        s VARCHAR(6)
    );
    
    
    将长度为7的字符串插入到tokens表中
    
    INSERT INTO tokens VALUES('abcdefg');
    
    STRICT模式打开,MySQL发出以下错误
    
    mysql> INSERT INTO tokens VALUES('abcdefg');
    1406 - Data too long for column 's' at row 1

     

  • 相关阅读:
    POJ2175 Evacuation Plan
    POJ3252 Round Numbers
    POJ2115 C Looooops
    POJ3422 Kaka's Matrix Travels
    POJ1659 Frogs' Neighborhood
    POJ2635 The Embarrassed Cryptographer
    POJ3436 ACM Computer Factory
    FZU1607 Greedy division
    EOJ440 Buying Feed
    POJ2135 Farm Tour
  • 原文地址:https://www.cnblogs.com/loser1949/p/8120990.html
Copyright © 2011-2022 走看看