精华内容
下载资源
问答
  • 插入数据
    千次阅读
    2022-05-01 08:43:03

    目录

    1、数据插入

    1.1、插入完整的行

    1.2 、插入部分行

    1.3、插入检索出的数据

    2、从一个表复制到另一个表


    如何利用SQL的INSERT语句将数据插入表中。

    1、数据插入

    INSERT用来将行插入(或添加)到数据库表。插入有几种方式:

    1. 插入完整的行;
    2. 插入行的一部分;
    3. 插入某些查询的结果。

    提示:插入及系统安全

    使用INSERT语句可能需要客户端/服务器DBMS中的特定安全权限。在你试图使用INSERT前,应该保证自己有足够的安全权限。

    1.1、插入完整的行

    把数据插入表中的最简单方法是使用基本的INSERT语法,它要求指定表名和插入到新行中的值。下面举一个例子:

    输入:

    INSERT INTO Customers
    VALUES
    ('1000000006',  'Toy Land',  '123 Any Street',  'New York',  'NY',  '11111',  'USA',  NULL,  NULL); 

    这个例子将一个新顾客插入到Customers表中。存储到表中每一列的数据在VALUES子句中给出,必须给每一列提供一个值。如果某列没有值,如上面的cust_contact和cust_email列,则应该使用NULL值(假定表允许对该列指定空值)。各列必须以它们在表定义中出现的次序填充。

    提示:INTO关键字

    在某些SQL实现中,跟在INSERT之后的INTO关键字是可选的。但是,即使不一定需要,最好还是提供这个关键字,这样做将保证SQL代码在DBMS之间可移植。

    虽然这种语法很简单,但并不安全,应该尽量避免使用。上面的SQL语句高度依赖于表中列的定义次序,还依赖于其容易获得的次序信息。即使可以得到这种次序信息,也不能保证各列在下一次表结构变动后保持完全相同的次序。因此,编写依赖于特定列次序的SQL语句是很不安全的,这样做迟早会出问题。

    编写INSERT语句的更安全(不过更烦琐)的方法如下:

    输入:

    INSERT INTO Customers
    (cust_id,  cust_name,  cust_address,  cust_city,  cust_state,  cust_zip,  cust_country,  cust_contact,  cust_email) 
    VALUES
    ('1000000006',  'Toy Land',  '123 Any Street',  'New York',  'NY',  '11111',  'USA',  NULL,  NULL); 

    这个例子与前一个INSERT语句的工作完全相同,但在表名后的括号里明确给出了列名。在插入行时,DBMS将用VALUES列表中的相应值填入列表中的对应项。VALUES中的第一个值对应于第一个指定列名,第二个值对应于第二个列名,如此等等。

    因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各列出现在表中的实际次序。其优点是,即使表的结构改变,这条INSERT语句仍然能正确工作。

    下面的INSERT语句填充所有列(与前面的一样),但以一种不同的次序填充。因为给出了列名,所以插入结果仍然正确:

    INSERT INTO Customers
    (cust_id,  cust_contact,  cust_email,  cust_name,  cust_address,  cust_city,  cust_state,  cust_zip) 
    VALUES
    ('1000000006',  NULL,  NULL,  'Toy Land',  '123 Any Street',  'New York',  'NY',  '11111'); 

    提示:总是使用列的列表

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

    注意:小心使用VALUES 

    不管使用哪种INSERT语法,VALUES的数目都必须正确。如果不提供列名,则必须给每个表列提供一个值;如果提供列名,则必须给列出的每个列一个值。否则,就会产生一条错误消息,相应的行不能成功插入

    1.2 、插入部分行

    正如所述,使用INSERT的推荐方法是明确给出表的列名。使用这种语法,还可以省略列,这表示可以只给某些列提供值,给其他列不提供值。

    请看下面的例子:

    输入:

    INSERT INTO Customers
    (cust_id,  cust_name,  cust_address,  cust_city,  cust_state,  cust_zip,  cust_country)
    VALUES
    ('1000000006',  'Toy Land',  '123 Any Street',  'New York',  'NY',  '11111',  'USA');

    没有给cust_contact和cust_email这两列提供值。这表示没必要在INSERT语句中包含它们。因此,这里的INSERT语句省略了这两列及其对应的值。

    注意:省略列

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

    1. 该列定义为允许NULL值(无值或空值)。
    2. 在表定义中给出默认值。这表示如果不给出值,将使用默认值。

    注意:省略所需的值 

    如果表中不允许有NULL值或者默认值,这时却省略了表中的值,DBMS就会产生错误消息,相应的行不能成功插入。

    1.3、插入检索出的数据

    INSERT一般用来给表插入具有指定列值的行。INSERT还存在另一种形式,可以利用它将SELECT语句的结果插入表中,这就是所谓的INSERT SELECT。顾名思义,它是由一条INSERT语句和一条SELECT语句组成的。

    假如想把另一表中的顾客列合并到Customers表中。不需要每次读取一行再将它用INSERT插入,可以如下进行:

    输入:

    INSERT INTO Customers
    (cust_id,  cust_contact,  cust_email,  cust_name, cust_address,  cust_city,  cust_state,  cust_zip,  cust_country) 
    SELECT cust_id,  cust_contact,  cust_email,  cust_name,  cust_address,  cust_city,  cust_state,  cust_zip,  cust_country 
    FROM CustNew; 

    说明:新例子的说明

    这个例子从一个名为CustNew的表中读出数据并插入到Customers表。为了试验这个例子,应该首先创建和填充CustNew表。CustNew表的结构与Customers表相同。在填充CustNew时,不应该使用已经在Customers中用过的cust_id值(如果主键值重复,后续的INSERT操作将会失败)。

    这个例子使用INSERT SELECT从CustNew中将所有数据导入Customers。SELECT语句从CustNew检索出要插入的值,而不是列出它们。SELECT中列出的每一列对应于Customers表名后所跟的每一列。这条语句将插入多少行呢?这依赖于CustNew表有多少行。如果这个表为空,则没有行被插入(也不产生错误,因为操作仍然是合法的)。如果这个表确实有数据,则所有数据将被插入到Customers。

    提示:INSERT SELECT中的列名

    为简单起见,这个例子在INSERT和SELECT语句中使用了相同的列名。但是,不一定要求列名匹配。事实上,DBMS一点儿也不关心SELECT返回的列名。它使用的是列的位置,因此SELECT中的第一列(不管其列名)将用来填充表列中指定的第一列,第二列将用来填充表列中指定的第二列,如此等等。 

    INSERT SELECT中SELECT语句可以包含WHERE子句,以过滤插入的数据。

    提示:插入多行

    INSERT通常只插入一行。要插入多行,必须执行多个INSERT语句。INSERT SELECT是个例外,它可以用一条INSERT插入多行,不管SELECT语句返回多少行,都将被INSERT插入。 

    2、从一个表复制到另一个表

    有一种数据插入不使用INSERT语句。要将一个表的内容复制到一个全新的表(运行中创建的表),可以使用SELECT INTO语句。

    说明:DB2不支持

    DB2不支持这里描述的SELECT INTO。

     与INSERT SELECT将数据添加到一个已经存在的表不同,SELECT INTO将数据复制到一个新表(有的DBMS可以覆盖已经存在的表,这依赖于所使用的具体DBMS)。

    说明:INSERT SELECT与SELECT INTO

    它们之间的一个重要差别是前者导出数据,而后者导入数据。

    下面的例子说明如何使用SELECT INTO:

    输入:

    SELECT * INTO CustCopy FROM Customers; 

    这条SELECT语句创建一个名为CustCopy的新表,并把Customers表的整个内容复制到新表中。因为这里使用的是SELECT *,所以将在CustCopy表中创建(并填充)与Customers表的每一列相同的列。要想只复制部分的列,可以明确给出列名,而不是使用*通配符。

    MariaDB、MySQL、Oracle、PostgreSQL和SQLite使用的语法稍有不同:

    CREATE TABLE CustCopy AS SELECT * FROM Customers; 

    在使用SELECT INTO时,需要知道一些事情:

    1. 任何SELECT选项和子句都可以使用,包括WHERE和GROUP BY;
    2. 可利用联结从多个表插入数据;
    3. 不管从多少个表中检索数据,数据都只能插入到一个表中。

    提示:进行表的复制

    SELECT INTO是试验新SQL语句前进行表复制的很好工具。先进行复制,可在复制的数据上测试SQL代码,而不会影响实际的数据。

    更多相关内容
  • mysql批量插入数据

    千次阅读 2021-07-23 09:48:14
    插入语句 普通使用的插入语句: insert into table (col1,col2,col3) values (’ 1’,’ John ‘,’ stu ‘); insert into table (col1,col2,col3) values (’ 2’,’ Jan ‘,’ stu ‘); insert into ...

    在此还记录了一些mysql基础知识,可以用作参考

    优化方案

    插入语句

    普通使用的插入语句:
    insert into table (col1,col2,col3) values (’ 1’,’ John ‘,’ stu ‘);
    insert into table (col1,col2,col3) values (’ 2’,’ Jan ‘,’ stu ‘);
    insert into table (col1,col2,col3) values (’ 3 ‘,’ Billy ‘,’ stu ');

    插入操作时间分配:

    链接耗时 (30%)
    发送query到服务器 (20%)
    解析query (20%)
    插入操作 (10% * 词条数目)
    插入index (10% * Index的数目)
    关闭链接 (10%)
    

    从这里可以看出单条语句,会在链接、解析部分耗费大量时间,因此我们大多时候会采用批量插入来提升插入速度,争取在一次链接中尽可能多的写入数据(下面通过几个参数来说明一次到底插入多少数据量合适)。

    使用语句拼接

    insert into table (col1,col2,col3) values (’ 1’,’ John ‘,’ stu ‘),(’ 2’,’ Jan ‘,’ stu ‘),(’ 3 ‘,’ Billy ‘,’ stu ');
    使用拼接sql语句的优势:
    降低了日志(MYSQL的binlog和innodb的事务日志)刷盘的数据量和频率、较少了SQL语句的解析次数、减少了网络传输IO(远程客户端插入数据)等;

    对于拼接语句sql有一个长度限制(官方解释是适当增大 max_allowed_packet 参数可以使client端到server端传递大数据时,系统能够分配更多的扩展内存来处理。):
    查看限制最大值:show variables like ‘%max_allowed_packet%’;

    mysql> show variables like '%max_allowed_packet%';
    +--------------------------+------------+
    | Variable_name            | Value      |
    +--------------------------+------------+
    | max_allowed_packet       | 33554432   |
    | slave_max_allowed_packet | 1073741824 |
    +--------------------------+------------+
    2 rows in set (0.00 sec)
    

    设置限制最大值:mysql一般可以在配置文件中通过设置变量max_allowed_packet 的值来更改sql长度限制最大值;
    在使用python的pymysql包提供的executemany函数,默认使用sql拼接插入数据;

    设置完限制值后,那么我们在使用拼接时,一次性拼接多少条语句合适呢?首先我们需要计算出一条语句大概占用多少内存,然后通过我们设置的max_allowed_packet的50%-75%去除单条语句的大小,最后计算出每次拼接的数量;(这里的被除数设置为max_allowed_packet的50%-75%,是本人在自己测试时,得到效率最大的区间,每台机器可能不一致,个人猜想与内存等硬件相关);总之我们应该遵循一句话:减小通信间数据包的大小和数量是一个非常好的习惯。

    使用事务

    在一条insert语句中默认会开启一个事务,当执行多个insert语句时,事务的开销就会影响到插入数据的性能;因此最常用的优化手段就是在执行一块插入语句前手动开启事务(START TRANSACTION),执行完插入语句后使用COMMIT提交;
    事务也需要控制大小,事务太大可能会影响执行的效率;MySQL有innodb_log_buffer_size配置项,超过这个值会把innodb的数据刷到磁盘中,这时,效率会有所下降。所以比较好的做法是,在数据达到这个这个值前进行事务提交。

    innodb_log_buffer_size大小查询:

    mysql> show variables like '%innodb_log_buffer_size%';
    +------------------------+----------+
    | Variable_name          | Value    |
    +------------------------+----------+
    | innodb_log_buffer_size | 67108864 |
    +------------------------+----------+
    

    总结:从以上来看,在我们提交插入数据时主要受到两个限制,一个是sql语句本身的大小,其次是事务大小限制;在最大限制下,我们可以开启事务使用sql拼接批量插入,可以节省事务开销,但是需要注意,内存是有限且共享的,如果批量插入占用太多的事务内存,那么势必会对其他的业务操作等有一定的影响。

    注:事务和sql拼接从宏观上是差不多的,都是使用了类似缓存的原理,将整块数据一起处理,微观上处理的方式还是有本质区别的;

    个人猜测:通过开启事务,会将插入的数据临时放到缓冲池中,等到COMMIT提交时,再落盘到磁盘中;当使用拼接sql
    时,其实也是将大量数据放到缓冲池中,单个拼接后sql执行过程内也会建立事务,当完成后落盘;因此使用拼接和使用事务,或者同时使用其实都是差不多,只是使用时的参数设置不同;比如单独使用事务时innodb_log_buffer_size设置大点,单数使用拼接max_allowed_packet设置大点,两者同时使用时两个配置值都适量设置;当然目前只是猜测,等日后研究后再来完善,或者大佬们提点下。

    数据插入影响

    索引的影响

    数据库插入时,需要维护索引的数据,当插入的记录无序时会增大维护索引(聚簇)的成本;我们可以参照innodb使用的B+tree索引,如果每次插入记录都在索引的最后面,索引的定位效率很高,并且对索引调整较小;如果插入的记录在索引中间,需要B+tree进行分裂合并等处理,会消耗比较多计算资源,并且插入记录的索引定位效率会下降,数据量较大时会有频繁的磁盘操作(无序,且缓冲池不够用)。

    因此有序插入在一定程度上可以优化插入的效率。

    插入缓存的影响(存在非聚簇索引时)

    对于innodb引擎来说,一次插入是涉及到事务和锁的,所以插入并不能仅仅只考虑max_allowed_packet的问题,也要考虑服务器缓冲池的大小;
    在innodb中存在一个插入缓存(insert buffer)的概念,所以在插入的时候也是要耗费一定的缓冲池内存的。当写密集的情况下,插入缓冲会占用过多的缓冲池内存,默认最大可以占用到1/2的缓冲池内存,当插入缓冲占用太多缓冲池内存的情况下,会影响到其他的操作。

    缓冲池的大小查询:

    mysql> show variables like 'innodb_buffer_pool_size';
    +-------------------------+-----------+
    | Variable_name           | Value     |
    +-------------------------+-----------+
    | innodb_buffer_pool_size | 134217728 |
    +-------------------------+-----------+
    

    插入缓冲的详细解释:
    我们都知道,在InnoDB引擎上进行插入操作时,一般需要按照主键顺序进行插入,这样才能获得较高的插入性能。当一张表中存在非聚簇的且不唯一的索引时,在插入时,数据页的存放还是按照主键进行顺序存放,但是对于非聚簇索引叶节点的插入不再是顺序的了,这时就需要离散的访问非聚簇索引页,由于随机读取的存在导致插入操作性能下降。
     InnoDB为此设计了Insert Buffer来进行插入优化。对于非聚簇索引的插入或者更新操作,不是每一次都直接插入到索引页中,而是先判断插入的非聚集索引是否在缓冲池中,若在,则直接插入;若不在,则先放入到一个Insert Buffer中。看似数据库这个非聚集的索引已经查到叶节点,而实际没有,这时存放在另外一个位置。然后再以一定的频率和情况进行Insert Buffer和非聚簇索引页子节点的合并操作。这时通常能够将多个插入合并到一个操作中,这样就大大提高了对于非聚簇索引的插入性能。

    具体可以参考:https://cloud.tencent.com/developer/article/1200824
    缓存池可以大致类比cpu将物理内存当作磁盘的缓存,innodb将缓存池用作磁盘的缓存

    日志的影响

    这里主要是介绍二进制日志BinLog:
    MySQL 的二进制日志 binlog 可以说是 MySQL 最重要的日志,它记录了所有的 DDL 和 DML 语句(除了数据查询语句select、show等),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。binlog 的主要目的是复制和恢复,比如MySQL主从复制、数据恢复等;

    启动或关闭binlog:通过配置文件中的log-bin配置项来启动及关闭;
    查看是否启动了binlog:

    mysql> show variables like 'log_bin';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_bin       | ON    |
    +---------------+-------+
    1 row in set (0.00 sec)
    

    根据项目需求,可以选择关闭binlog来优化插入数据的效率。

    服务器配置参数

    mysql配置文件:my.cnf(linux)、my.ini(win);

    • innodb_buffer_pool_size(缓冲池)
      这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲;
    • innodb_log_file_size
      指定日志文件大小;这个值分配的大小和数据库的写入速度,事务大小,异常重启后的恢复有很大的关系;
      当一个日志文件写满后,innodb会自动切换到另一个日志文件,而且会触发数据库检查点,这会导致缓存脏页小批量刷新,会明显降低innodb性能;
    • innodb_log_buffer_size
      事务在内存中的缓冲大小,我也看到说这是将日志写入磁盘日志文件前的缓冲大小;不过确实会影响到事务;
      一个事务能否成功提交的关键是日志是否成功落盘,与数据没有太大的关系
    • max_allowed_packet
      最大的sql语句大小限制;
      想要了解具体的参数可以参考:https://blog.csdn.net/wjc19911118/article/details/51784783

    mysql常用的引擎:InnoDB(上面的介绍都是以该引擎为基础)、Myisam

    展开全文
  • Oracle插入数据

    千次阅读 2021-04-30 08:32:37
    在本教程中将学习如何使用Oracle INSERT语句将数据插入到表中。Oracle INSERT语句简介要将新行插入到表中,请按如下方式使用Oracle INSERT语句:INSERT INTO table_name (column_1, column_2, column_3, ... column_...

    在本教程中将学习如何使用Oracle INSERT语句将数据插入到表中。

    Oracle INSERT语句简介

    要将新行插入到表中,请按如下方式使用Oracle INSERT语句:

    INSERT INTO table_name (column_1, column_2, column_3, ... column_n)

    VALUES( value_1, value_2, value_3, ..., value_n);

    在这个声明语句中:

    首先,指定要插入的表的名称 - table_name。

    其次,在圆括号内指定逗号分隔列名的列表。

    第三,指定对应于列列表的逗号分隔值列表。

    如果值列表与表列具有相同的顺序,则可以跳过不指定列的列表,但这不被认为是一种好的做法:

    INSERT INTO table_name

    VALUES (value_1, value_2, value_3, ..., value_n);

    如果从Oracle INSERT语句中排除一列或多列,则必须指定列列表,因为Oracle需要它与值列表中的值相匹配。

    在INSERT语句中省略的列将使用缺省值(如果可用)或者如果列接受NULL值,则使用NULL值。

    Oracle INSERT语句的例子

    我们创建一个名为discounts的新表,用来演示如何插入数据:

    -- oracle 12c 创建表语法

    CREATE TABLE discounts (

    discount_id NUMBER GENERATED BY DEFAULT AS IDENTITY,

    discount_name VARCHAR2(255) NOT NULL,

    amount NUMBER(3,1) NOT NULL,

    start_date DATE NOT NULL,

    expired_date DATE NOT NULL

    );

    -- oracle 11g 创建表语法

    drop sequence discounts_seq;

    create sequence discounts_seq

    increment by 1

    start with 1

    maxvalue 9999999999

    nocache;

    CREATE TABLE discounts (

    discount_id NUMBER, -- discounts_seq.nextval

    discount_name VARCHAR2(255) NOT NULL,

    amount NUMBER(3,1) NOT NULL,

    start_date DATE NOT NULL,

    expired_date DATE NOT NULL

    );

    在discounts表中,discount_id列是一个标识列,其默认值由系统自动生成,因此在Oracle 12c 中,不必在INSERT语句中指定discount_id列。

    其他列,如:discount_name,amount,start_date和expired_date是NOT NULL列,所以必须为它们提供值。

    以下语句将新行插入到discounts表中:

    -- Oracle 12c语法

    INSERT INTO discounts(discount_name, amount, start_date, expired_date)

    VALUES('双11电脑特价', 6.5, DATE '2017-11-11', DATE '2017-11-12');

    -- oracle 11g语法

    INSERT INTO discounts(discount_id, discount_name, amount, start_date, expired_date)

    VALUES(discounts_seq.nextval, '双11电脑特价', 6.5, DATE '2017-11-11', DATE '2017-11-12');

    在这个语句中,使用日期文字DATE '2017-11-11' 和 DATE '2017-11-12'来表示日期列start_date和expired_date。

    以下语句从discounts表中检索数据以验证插入情况:

    SELECT

    *

    FROM

    discounts;

    执行上面查询语句,得到以下结果 -

    ccab158b67ca17bf21a8316b2f90efc4.png

    以下示例向discounts表中插入一个新行:

    -- Oracle 12c写法

    INSERT INTO discounts(discount_name, amount, expired_date, start_date)

    VALUES('2017长期折扣', 9.5, DATE '2017-12-31', CURRENT_DATE);

    -- Oracle 11g

    INSERT INTO discounts(discount_id, discount_name, amount, expired_date, start_date)

    VALUES(discounts_seq.nextval, '2017长期折扣', 9.5, DATE '2017-12-31', CURRENT_DATE);

    在这个例子中,使用CURRENT_DATE函数的结果指定start_date列的值。

    注意:start_date列这里是放到了最后一个位置,而它对应的值也放到最后一个位置。

    以下语句从discounts表中检索数据以验证插入情况:

    SELECT

    *

    FROM

    discounts;

    执行上面查询语句,得到以下结果 -

    9af8a6d243d0264d2238ecd7bb7d4afd.png

    在本教程中,您已学习如何使用Oracle INSERT语句将新行插入到表中。

    ¥ 我要打赏

    纠错/补充

    收藏

    加QQ群啦,易百教程官方技术学习群

    注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

    展开全文
  • SQL插入数据

    千次阅读 2021-11-30 23:39:20
    SQL-插入数据;在日常工作中,我们经常会对已经建好的表进行插入数据操作,或者复制整张表的数据,当执行这些操作时我们将用到以下语句

    SQL插入数据

    在日常工作中,我们经常会对已经建好的表进行插入数据操作,或者复制整张表的数据,当执行这些操作时我们将用到以下语句:

    1. 目标表存在且插入全部列上(注意目标表列对于要插入的值的顺序):
    insert into table1   values  (value1,value2,value3,...);
    
    1. 目标表存在且插入指定某列上:
    insert into table1  (column_name1,column_name2,column_name3,...)  values  (value1,value2,value3,...);
    
    1. 目标表不存在,插入数据并生成一张新表(复制表):
    select  *   into  table_new   from table1--复制整张表
    
    select  column_name1,column_name2,column_name3,...    
    into  table_new   
    from table1 --指定列复制表
    

    示例:

    学生成绩表如下:

    create table [dbo].[stud_grade](
    				[stud_id] [char](10) NOT NULL,
    				[name] [nvarchar](4) NOT NULL,
    				[course_id] [char](10) NULL,
    				[grade] [decimal](4, 1) NULL
    ) 
    

    1.向成绩表插入一条数据,学号:0401050128,姓名:张三,课程编号:0401010106,成绩:90分:

    insert into  [student].[dbo].[stud_grade] values ('0401050128','张三','0401010106','90')
    --insert into table1   values  (value1,value2,value3,...)写法
    
    insert into  [student].[dbo].[stud_grade](stud_id,name,course_id,grade) 
    values ('0401050128','张三','0401010106','90')
    --insert into table1  (column_name1,column_name2,column_name3,...)  values  (value1,value2,value3,...)写法
    

    在这里插入图片描述

    执行查询数据如下

    select  * from  [student].[dbo].[stud_grade]
    

    在这里插入图片描述

    2.向成绩表插入成绩表副本(stud_grade2)所有的数据:

      insert into [student].[dbo].[stud_grade]
      select
          stud_id
          ,name
          ,course_id
          ,grade
      from [student].[dbo].[stud_grade2]
    	--insert into table1   values  (value1,value2,value3,...)写法
    	
      insert into [student].[dbo].[stud_grade](stud_id,name,course_id,grade) 	
      select
          stud_id
          ,name
          ,course_id
          ,grade
      from [student].[dbo].[stud_grade2]	
    --insert into table1  (column_name1,column_name2,column_name3,...)  values  (value1,value2,value3,...)写法
    

    在这里插入图片描述

    执行查询数据如下

    select  * from  [student].[dbo].[stud_grade]
    

    在这里插入图片描述

    3.将成绩表的数据插入一份新表(stud_grade_all),数据库无stud_grade_all表

    select  stud_id
          ,name
          ,course_id
          ,grade
    	  into stud_grade_all
    from [dbo].[stud_grade]
    

    在这里插入图片描述

    执行查询数据如下

    select  * from  [student].[dbo].[stud_grade_all]
    

    在这里插入图片描述

    end
    在这里插入图片描述

    有兴趣的小伙伴可以关注“SQL数据库笔记”公众号,一起学习吧!
    在这里插入图片描述

    展开全文
  • MySQL INSERT:插入数据(添加数据)

    千次阅读 2021-02-02 06:59:53
    数据库与表创建成功以后,需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。基本语法INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…...
  • 文章目录一、前言二、批量插入前准备1、插入到数据表的字段2、计算一行字段占用的空间3、在数据里做插入操作的时候,整体时间的分配三、批量插入数据测试1、SQL语句的大小限制2、查看服务器上的参数:3、计算一次能...
  • SQL Server-插入数据

    千次阅读 2022-03-10 23:21:31
    SQL Server-插入数据1、插入完整的行1.1、基本的insert语法(语法简单,并不安全)1.2、更安全的insert语法2、插入部分行3、插入检索出的数据4、从一个表复制到另一个表4、全部代码 在进行下面的操作前,先在数据库...
  • mysql插入数据变慢的原因

    千次阅读 2021-01-27 05:10:57
    最近的项目需要导入大量的数据插入的过程中还需要边查询边插入插入数据量在100w左右。一开始觉得100w的数据量不大,于是就插啊插,吃了个饭,回来一看,在插入了50多w条数据后,每秒就只能插10条了。。觉得很...
  • MySQL数据表插入数据

    千次阅读 2021-07-05 20:47:19
    在MySQL通过INSERT语句向数据表中插入数据。在此,我们先准备一张学生表,代码如下:    create table student(    id int,    name varchar(30),    age int,    gender varchar(30)    );  安装...
  • MySQL之插入数据(添加数据)-INSERT

    千次阅读 2021-01-18 18:11:33
    基本语法:INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句。1、INSERT...VLAUES语句INSERT VLAUES的语法格式如下:...若向表中的所有列插入数据,则全部的列名均可以省略,直接采用 ...
  • Hive/Impala批量插入数据

    千次阅读 2020-12-30 20:19:21
    问题描述现有几千条数据,需要插入到对应的Hive/Impala表中。...比在MySQL中批量插入数据慢多了,因而抱怨Impala不太好用问题分析首先,必须明确的是,把每条数据处理成insert语句的方式,肯定是最低效的,不管是在...
  • python操作mysql插入数据

    千次阅读 2021-12-02 15:34:20
    python操作mysql插入数据首先安装pymysql这个库pycharm连接数据库操作mysql语句连接数据库插入数据 由于有时候,数据存在excel表格中,需要借助python去读取数据然后再插入到数据库中 首先安装pymysql这个库 ...
  • ElasticSearch插入数据

    千次阅读 2022-04-02 15:20:29
    向之前创建的people索引中插入一条man的数据,请求的url: http://127.0.00.1:9200/people/man/1 请求类型PUT,参数如下 { "name": "wali", "country": "China", "age": 20, "date": "1996-04-20" } 如果自动...
  • MyBatis 批量插入数据的 3 种方法

    万次阅读 2021-11-12 13:17:24
    批量插入功能是我们日常工作中比较常见的业务功能之...开始之前我们先来创建数据库和测试数据,执行的 SQL 脚本如下: -- ---------------------------- -- 创建数据库 -- ---------------------------- SET NAMES utf
  • MySQL插入数据的三种方法

    万次阅读 2021-07-26 16:49:00
    Mysql 插入数据 1、mysql中常用的三种插入数据的方法 insert into:正常的插入数据插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错。 replace into:替换数据。插入时,如果表中已经存在相同的...
  • kafka如何插入数据(数据制造)

    千次阅读 2020-09-02 11:51:59
    (物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处),类似于数据库的表名 (3)Partition topic中的数据...
  • MySQL 批量插入数据,单次插入多少条数据效率最高

    万次阅读 多人点赞 2019-11-26 18:29:10
    文章目录一、前言二、批量插入前准备1、插入到数据表的字段2、计算一行字段占用的空间3、在数据里做插入操作的时候,整体时间的分配三、批量插入数据测试1、SQL语句的大小限制2、查看服务器上的参数:3、计算一次能...
  • Hive数据导入/插入数据(重点)

    千次阅读 2021-05-07 19:01:51
    向表中导入数据(load) 实操案例: (1)创建一张表: create table student(id string, name string) row format delimited fields terminated by '\t'; (2)加载本地文件到Hive,如果是从linux本地加载的文件,...
  • Oracle批量插入数据的三种方式

    千次阅读 2021-05-05 03:08:23
    第一种:begininsert into tableName(column1, column2, column3...) values(value1,value2,value3...);insert into tableName(column1, column2, column3...) values(value1,value2,value3...);...
  • Hive建表及插入数据浅析

    千次阅读 2022-04-26 14:42:01
    通过已有表创建新表(仅创建表结构) ...建表后,直接插入数据 --建表 create table table_name ( id int ,name string ) --插入数据 insert into table_name values(1,'colin'); 建表后,通过
  • mysql插入数据失败原因分析

    千次阅读 2021-01-19 03:31:19
    其实操作起来也很简单的,但是中途出现了问题,100条左右的数据,总会有10来条数据导入失败,我不想浪费这些资源啊,还是想要这些数据,如实开始分析原因。select查询数据库A里面的信息,print_f打印出来,完成正...
  • 1、自增主键情况下插入数据获取自增主键值 mybatis为我们提供了一个方法,能够插入数据时获取自动生成的值,并且把取的值赋值给实体类的某一属性 设置方法: 要求:主键必须是自增的 <insert id = "insert" ...
  • Oracle 循环插入数据

    千次阅读 2019-09-24 18:52:00
    在Oracle中,为一个表循环插入数据,为了开发方便,我们不会让其数据全部一样,在这里总结一下,如何插入能够符合自己开发需求的数据。 1. 首先介绍一下varray,即我们将会用到的在Oracle中数组的概念。 Oracle中...
  • 外键约束的表怎么插入数据

    千次阅读 2021-01-19 03:45:49
    有外键的情况应该先添加主表数据,再添加副表数据。如:有以下两张表班级表:CLASSID NAME1 一班2 二班学生表:SID NAME CLASSID1 张三 12 李四 13 王五 2其中学生表中的CLASSID是班级表CLASSID的外键。现在要求在...
  • MySQL中如何插入数据

    万次阅读 多人点赞 2020-05-09 21:52:13
    插入数据1数据插入2插入完整行3插入多个行4插入检索出的数据 1数据插入 INSERT是用来插入(或添加)行到数据库表的。插入可以用几种方式使用: 插入完整的行; 插入行的一部分; 插入多行; 插入某些查询的结果。 ...
  • Mysql之向表中插入数据

    千次阅读 2022-01-28 23:45:20
    Mysql之向表中插入数据 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); //注意:此处( field1, ...
  • Mysql 插入数据 1、插入数据方法 mysql中常用的三种插入数据的语句: insert into:正常的插入数据插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错; replace into:表示插入并替换数据,若表中有...
  • 数据库请求:插入数据(INSERT)

    千次阅读 2021-02-08 12:07:46
    MySQL中, INSERT 语句用来向数据表中插入数据。可以一次性插入一条或多条数据。语法:SQL中通过 INSERT INTO 命令向数据表中插入数据。下面是通用语法:INSERTINTOtable_name(field1,field2,...fieldN)VALUES(value1...
  • SQL 插入数据

    万次阅读 多人点赞 2019-02-17 10:38:40
    SQL 插入数据 一、数据插入: INSERT用来将行插入(或添加)到数据库表。 插入有几种方式: 1.插入完整的行。 2.插入行的一部分。 3.插入某些查询的结果。 注意:插入及系统安全 使用INSERT语句可能需要...
  • 视图中插入数据

    千次阅读 2020-12-22 08:54:53
    (1)使用INSERT语句向数据表中插入数据时,用户必须有插入数据的权利。 (2)由于视图只引用表中的部分字段,所以通过视图插入数据时只能明确指定视图中引用的字段的取值。而那些表中并未引用的字段,必 须知道在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,446,355
精华内容 978,542
关键字:

插入数据