mysql系列(四)插入数据

        • 前言
        • 1.数据插入
        • 2 插入完整的行
        • 3.插入多个行
        • 4.插入检索出的数据
        • 总结

前言

上一篇博客讲了如何创建和删除表,这一章接着讲怎么对表插入数据。没有学习上一章的可以先学习上一章再来学习本章知识,mysql系列(三)创建表和删除表。或者你已经知道如何创建表则可以直接进入本章学习,在学习之前先在数据库中导入student.sql,创建student表,本文所有插入数据都在这张表上操作。

1.数据插入

INSERT插入(或添加)行到数据库表。可以使用以下几种方式:

  • 插入完整的行
  • 插入行的一部分
  • 插入多行
  • 插入某些查询的结果

插入以及系统安全:可以针对每个表或者每个用户,利用MySQL的安全机制禁止使用INSERT语句

2 插入完整的行

把数据插入表中的最简单的方法是使用基本的INSERT语句,它要求指定表名被插入到新行的值,有以下两种插入方式:

方式一:

INSERT INTO t_student VALUES(1,"张三",18,'男','2018-05-28','18125864478');

方式二:

INSERT INTO t_student(id,student_name,age,sex,birthday,tel) 
VALUES(2,"李四",10,'男','2008-05-28','18215864478');
  • 一般使用方式二,使用列的列表能使SQL代码继续发挥作用,即使表结构发生了变化。
  • 仔细地给出值。不管使用哪种INSERT语法,都必须给出VALUES的正确数目。如果不提供列名,则必须给每个表列提供一个值。如果提供列名,则必须对每个列出的列给出一个值。如果不这样,将产生一条错误信息,相应的行不会插入成功。
  • 省略列。如果表的定义允许,则可以在INSERT操作中省略某些列。省略的列必须满足一下某个条件:
    1) 该列定义为允许NULL值(无值或者空值);
    2)在表定义中给出默认值,如果不给出值,将使用默认值。
  • 提高整体性能。数据库经常被多个客户访问,对处理什么请求以及用什么次序处理进行管理是MySQL的任务。INSERT操作可能会很耗时,而且可能降低等待处理的SELECT语句的性能。如果数据检索是最重要的,则可以通过在INSERT 和INTO之前添加关键字LOW_PRIORITY,指示降低INSERT语句的优先级,如下所示:INSERT LOW_PRIORITY INTO。这也适用于UPDATE和DELETE语句。

3.插入多个行

  • 1.可以使用多条INSERT语句,甚至一次提交他们,每条语句用一个分号结束:
INSERT INTO t_student(student_name,age,sex,birthday,tel) 
VALUES("王五",11,'男','2007-05-28','18215864478');  
INSERT INTO t_student(student_name,age,sex,birthday,tel) 
VALUES("赵六",12,'男','2006-05-28','18215864478');
  • 2.只要每条INSERT语句中的列名和次序相同,也可以使用单条INSERT语句有多组值,每组值用一对圆括号括起来,用逗号分隔
INSERT INTO t_student(student_name,age,sex,birthday,tel) 
VALUES("钱七",11,'男','2007-05-28','18215864478'),
      ("李八",12,'男','2006-05-28','18215864478');

可以看到这两条已经在数据库插入成功了:
mysql系列(四)插入数据_第1张图片

4.插入检索出的数据

INSERT一般用来给表插入一个指定列值的行。但是,INSERT还存在另一种形式,可以利用它将一条SELECT语句的结果插入表中。这就是所谓的INSERT SELECT,顾名思义,它是由一条INSERT语句和一条SELECT语句组成的。
先建立一张与t_student表结构一模一样的新表t_student_new,如图所示:
mysql系列(四)插入数据_第2张图片
然后给表t_student_new插入一条数据,如图:
mysql系列(四)插入数据_第3张图片
将表t_student_new的数据插入表t_student,执行如下sql语句:

INSERT INTO t_student(student_name,age,sex,birthday,tel) 
SELECTstudent_name,age,sex,birthday,tel FROM t_student_new;

可以看到已经插入成功了:
mysql系列(四)插入数据_第4张图片

  • 注意
    t_student_new的表结构应该和t_student表相同,在填充t_student表时,不应该使用已经在t_student中出现的id,或仅省略这列值让MySQL在导入数据的过程中产生新值。

总结

本文主要讲述了怎么给数据库表插入数据,包括单行插入与多行插入以及插入检索出的数据。

你可能感兴趣的:(mysql,mysql极简入门教程)