17.基础-插入数据(INSERT)

数据插入

       INSERT是用来插入(添加)行到数据库表的,有以下几种情况:

       1.插入完整的行;

       2.插入行的一部分;

       3.插入多行;

       4.插入某些查询的结果;

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

插入完整的行

输入:INSERT INTO Customers     //指定表名
          VALUES(NULL,                     //被插入新行中的值
                 'Pep E. LaPew',
                 '100 Main Street'
                 'Los Angeles'
                 'CA'
                 '90046',

                 NULL,

                 NULL);

输出:INSERT语句不会产生输出;第一列为NULL,是因为该列由MySQL自动增量,如果你不想给出一个值,但又不能省略该列,所以指定一个NULL值;

       上面的SQL语句高度依赖于表中列的定义次序,并且还依赖于其次序容易获得的信息。即使可得到这种次序信息,也不能保证下一次表结构变动后各个列保持完全相同的次序。因此,编写依赖于特定列次序的SQL语句是很不安全的。

输入:INSERT INTO Customers (cust_name,   //指定列名顺序
                  cust_address,
                  cust_city,
                  cust_state,
                  cust_zip,
                  cust_country,
                  cust_contact,
                  cust_email)
          VALUES(NULL,                     //被插入新行中的值
                 'Pep E. LaPew',
                 '100 Main Street'
                 'Los Angeles'
                 'CA'
                 '90046',

                 NULL,
                 NULL);

输出:因为指定了列名顺序,所以即便改变了表的结构,此INSERT语句依然能正确执行。

总是使用列的列表:一般不要使用没有明确给出列的列表的INSERT语句。使用列的列表能使SQL代码继续发挥作用,即使表结构发生了变化。

仔细地给出值:不管使用哪种INSERT语法,都必须给出VALUES的正确数目。如果不提供列名,则必须给每个表列提供一个值。如果提供列名,则必须对每个列出的列给出一个值。如果不这样,将产生一条错误消息,相应的行插入不成功。



插入多个行

        可以使用多条INSERT语句,每条语句用分号结束;



提高INSERT的性能:此技术可以提高数据库处理的性能,因为MySQL用单条INSERT语句处理多个插入比使用多条INSERT语句快。

插入检索出的数据

       可以利用INSERT将一条SELECT语句的结果插入表中。这就是所谓的INSERT SELECT,顾名思义,它是由一条INSERT语句和一条SELECT语句组成的。


INSERT SELECT中的列名:为简单起见,这个例子在INSERT和SELECT语句中使用了相同的列名。但是,不一定要求列名匹配。事实上,MySQL甚至不关心SELECT返回的列名。它使用的是列的位置,因此SELECT中的第一列(不管其列名)将用来填充表列中指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。这对于从使用不同列名的表中导入数据是非常有用的。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页