插入数据——INSERT

顾名思义,INSERT是用来插入行到数据库表的

插入可以用几种方式使用:

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

 

一、插入完整的行

INSERT INTO customers
VALUES
(
     NULL,
	'pep',
	'100 Street',
	'Los Angles',
	'CA',
	'90046',
	'USA',
	NULL,
    NULL
)

分析:此例子为插入一个新客户到customers表,如果某个列没有值,应该使用NULL(表允许该值为空),第一列cust_id也为NULL,因为这是自动增量

上面的语法很简单,但并不安全,因为它高度依赖于表中列的定义次序,也不能保证下一次表结构变动后的次序和原来相同。

我们来改动一下INSERT语句,使它更安全。

INSERT INTO customers
(
  cust_name,
	cust_address,
	cust_city,
	cust_state,
	cust_zip,
	cust_country,
	cust_contact,
	cust_email
)
VALUES
(
	'pep',
	'100 Street',
	'Los Angles',
	'CA',
	'90046',
	 'USA',
	 NULL,
	 NULL
)

分析:我们给出了明确的列名,在插入时只需保证value与之对应就行了。而且该列的顺序与表中定义的顺序可以不同

省略列的情况:

  1. 该列定义为允许NULL值(无值或空值)
  2. 该列定义给出了默认值
  3. 如果表中不允许为NULL且没有默认值的列,插入时不给出值,则会报错

二、插入多个行

每一组值用圆括号括起来,用逗号分隔,此技术可以提高数据库处理的性能,因为单条语句比多条语句执行速度块

INSERT INTO customers
(
  cust_name,
	cust_address,
	cust_city,
	cust_state,
	cust_zip,
	cust_country
)
VALUES
(
	'pep',
	'100 Street',
	'Los Angles',
	'CA',
	'90046',
	 'USA'
),
(
	'aaa',
	'31 Street',
	'New York',
	'NY',
	'11232',
	'CHINA'
);

三、插入检索出的数据

加入你想把一张表的数据插入到另一张表,你可以使用插入查询INSERT SELECT.

INSERT INTO customers
(
    cust_name,
	cust_address,
	cust_city,
	cust_state,
	cust_zip,
	cust_country
)
SELECT 
    cust_name,
	cust_address,
	cust_city,
	cust_state,
	cust_zip,
	cust_country
FROM custnew;

这个例子使用INSERT SELECT从custnew中将所有数据插入到customers。

MySQL不关心SELECT返回的列名,因此SELECT的第一列值将用来填充INSERT中指定的第一列。这对于使用不同列名的表中导入数据是非常有用的。

发布了156 篇原创文章 · 获赞 34 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/bbj12345678/article/details/105572734