Mac安装使用Mysql教程(从零开始)
- 第一章 Mac安装MySQL
- 第二章 安装数据库管理软件DBeaver
- 第三章 DBeaver创建MySQL数据库
- 第四章 终端管理MySQL
- 第五章 MySQL基本操作之查询
- 第六章 MySQL基本操作之插入
- 第七章 MySQL基本操作之更新与删除
- 第八章 创建和操纵表
- 第九章 使用视图
- 第十章 使用存储过程
- 第十一章 管理事务处理
- 第十二章 游标
- 第十三章 MySQL学习问题及解决记录
第六章 MySQL基本操作之插入
本章将继续以第五章所示五个表格为例总结介绍MySQL的插入(Insert)操作。
6.1 插入整行数据
INSERT INTO Customers
VALUES('1000000006',
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);
由于无法保证表结构改变后,各列次序依然保持不变,所以上述方式并不安全,采取以下方式虽然麻烦但更加安全:
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);
6.2 插入行的一部分
插入行的一部分和插入完整行的用法其实差不多,只不过在插入行一部分时未插入值的列名不会写出。
```
INSERT INTO Customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
VALUES('1000000008',
'CF Land',
'321 Tic Avenue',
'Shanghai',
'SH',
'18484',
'CCP');
```
注意:
- 省略列时列定义要允许NULL值(空值或无值)
- 表定义有默认值,表示若不给处值时将使用默认值。
6.3 插入查询结果
如果希望将另一个表中的顾客列插入Customer表中就需要使用 INSERT SELECT 语句,即一条 INSERT 语句再加一条 SELECT 语句。
INSERT INTO Customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
SELECT cust_id,
cust_call,
cust_place,
cust_town,
cust_province,
cust_code,
cust_nation
FROM CustNew;
6.4 从一个表复制到另一个表
有一种数据插入不使用 INSERT,即将一个表的内容复制到另一个全新的表中,此时使用 SELECT INTO 语句。不同 DBMS 对 SELECT INTO 的支持度也不同,DB2不支持 SELECT INTO,SQL Server 使用 SELECT INTO 的语法为:
SELECT *
INTO CustCopy
FROM Customers;
而 MariaDB、MySQL、Oracle、PostgreSQL和SQLite 使用的语法如下:
CREATE TABLE CUstCopy AS
SELECT * FROM Customers;
6.5 参考
[1] Ben Forta.SQL必知必会-中文-第4版
[2] .MySQL 8.0参考手册(pdf)
[3] .MySQL 8.0参考手册(web)