一、数据插入
select是最常用的sql语句
但是还有3个经常使用的SQL语句需要学习。
下面学习insert
1. 插入的方式
- 插入完整的行
- 插入行的一部分
- 插入多行
- 插入某些查询的结果
二、插入完整的行
insert into 表名
values(列值1, 列值2, ...)
- 例如
insert into customers
values(NULL,
'Pep E. Lapew',
'100 Main Street',
'Los Angles',
'CA',
'90046',
'USA',
NULL,
NULL
);
第一列cust_id为NULL,这是因为每次插入一个新行时,该列由MySQL自动增量。你不想给出一个值(这是MySQL的工作),又不能省略此列(如前所述,必须给出每个列),所以指定一个NULL值。
insert语句一般不会产生输出
编写insert语句的更安全的方法: 将列名标出来
insert into customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,'
cust_email)
values(
'Pep E. Lapew',
'100 Main Street',
'Los Angles',
'CA',
'90046',
'USA',
NULL,
NULL
);
注意1. 总是使用列的列表
一般不要使用没有明确给出列的列表的insert语句。
注意2. 仔细地给出值
不管使用哪种insert语句,都必须给出values的正确数目。
- 如果不提供列名,则必须给每个表列提供一个值。
- 如果提供列名,则必须对每个列给出一个值。
注意3. 省略列
如果表的定义允许,则可以在insert操作中省略某些列。
省略的列必须满足以下某个条件:
- 该列定义为允许NULL值
- 在表定义中给出默认值。
如果对表中不允许null且没有默认值的列不给出值,则mysql将报错。
注意4. 提高整体性能
数据库经常被多个客户访问,insert会很耗时,而且可能降低等待处理的select语句的性能。
如果数据检索是重要的,可以通过在insert和into之间添加关键字LOW_PRIORITY,指示mysql降低insert语句的优先级。
INSERT LOW_PRIORITY INTO ...
另外,LOW_PRORITY也适用于UPDATE和DELETE语句
三、插入多个行
方式1. 多个insert语句一次提交
insert into customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
values(
'Pep E. Lapew',
'100 Main Street',
'Los Angles',
'CA',
'90046',
'USA'
);
insert into customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
values(
'M. Martin',
'142 Galaxy Way',
'New York',
'NY',
'90046',
'USA'
);
方式2. values后面直接跟多组数据,数据间用逗号隔开
insert into customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
values(
'Pep E. Lapew',
'100 Main Street',
'Los Angles',
'CA',
'90046',
'USA'
),(
'M. Martin',
'142 Galaxy Way',
'New York',
'NY',
'90046',
'USA'
);
单条insert语句有多组值,每组值用一对圆括号括起来,用逗号分隔。
四、插入检索出来的数据
利用insert将一条select语句的结果插入表中,即所谓的insert select语句。由一条insert和一条select语句组成
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;
网友评论