返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 2077|回复: 0

[转载] 【转载】MySQL中如何插入数据

[复制链接]
发表于 2023-4-19 17:04:49 | 显示全部楼层 |阅读模式

少侠不来段修仙之旅吗~

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
本帖最后由 da11 于 2023-4-19 20:46 编辑

MySQL中如何插入数据


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

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


2插入完整行
把数据插入表中的最简单的方法是使用基本的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值(假定表允许对该列指定空值)。各个列必须以它们在表定义中出现的次序填充。第一列cust_id也为NULL。这是因为每次插入一个新行时,该列由MySQL自动增量。你不想给出一个值(这是MySQL的工作),又不能省略此列(如前所述,必须给出每个列),所以指定一个NULL值(它被MySQL忽略,MySQL在这里插入下一个可用的cust_id值)。

编写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语句完全相同的工作,但在表名后的括号里明确地给出了列名。在插入行时,MySQL将用VALUES列表中的相应值填入列表中的对应项。VALUES中的第一个值对应于第一个指定的列名。第二个值对应于第二个列名,如此等等。

因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各个列出现在实际表中的次序。其优点是,即使表的结构改变,此INSERT语句仍然能正确工作。你会发现cust_id的NULL值是不必要的,cust_id列并没有出现在列表中,所以不需要任何值。

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


INSERT INTO customers(cust_name,
      cust_contact,
      cust_address,
      cust_email,
      cust_city,
      cust_state,
      cust_zip,
      cust_country)  
    VALUES('Pep E. LaPew',
       NULL,
       NULL,
      '100 Main Street',
      'Los Angeles',
      'CA',
      '90046',
      'USA');   


3插入多个行
INSERT可以插入一行到一个表中。但如果你想插入多个行怎么办?可以使用多条INSERT语句,甚至一次提交它们,每条语句用一个分号结束,如下所示:

INSERT INTO customers(cust_name,
      cust_address,
      cust_city,
      cust_state,
      cust_zip,
      cust_country)  
    VALUES(
       'Pep E. LaPew',
      '100 Main Street',
      'Los Angeles',
      'CA',
      '90046',
      'USA'),
    (
      'M. MaRtian',
      '42 Galaxy Way',
      'New York',
      'NY',
      '11123',
      'USA');

分析:其中单条INSERT语句有多组值,每组值用一对圆括号括起来,用逗号分隔。

4插入检索出的数据

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;

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

这个例子导入了cust_id(假设你能够确保cust_id的值不重复)。你也可以简单地省略这列(从INSERT和SELECT中),这样MySQL就会生成新值。


游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表