SQL基础学习总结:6(INSERT语句的相关使用方法)

数据的插入(INSERT语句的使用方法)

我们之前在表的创建部分简单地介绍了一下INSERT语句的功能和使用方法,现在我们再详细讲一下它的用法。

INSERT语句的基本语法

其语法结构如下:

INSERT INTO <表名> (列名1,列名2,列名3...)
    -> VALUES (数据1,数据2,数据3...);

例:在这里插入图片描述
将列名和值用逗号隔开,分别括在()内,这种形式称为清单。像上面这个例子就分为列清单值清单

列清单的省略

但我们对表进行全列INSERT时,可以省略表名后面的列清单,这时VALUES子句的值就会默认按照从左到右的顺序赋给每一列,但是,要注意此时VALUES子句的中的值要按照创建表时列的默认顺序来插入,否则将会出现错误。
例:值清单中的数据不按照列的默认顺序
在这里插入图片描述
例:正确的做法
在这里插入图片描述

插入NULL

使用INSERT语句想要给某一列赋予NULL值时,可以直接在VALUES子句得值清单中写入NULL。
例:
在这里插入图片描述
注意:想要插入NULL的列一定不能设置NOT NULL约束,否则,向设置了NOT NULL约束的列中插入NULL时,INSERT语句会出现错误。

插入默认值

我们还可以向表中插入默认值(初始值)。可以通过在创建表的CREATE TABLE语句中设置DEFAULT约束来设定默认值。

例:设置默认值
SQL基础学习总结:6(INSERT语句的相关使用方法)_第1张图片
在上表中我们设置了学生编号的默认值为0,如下图我们可以看到student_id那一列的默认值为0。
SQL基础学习总结:6(INSERT语句的相关使用方法)_第2张图片

默认值的使用方法通常有显式和隐式两种。

通过显式方法插入默认值

在VALUES子句中指定DEFAULT关键字。
例:通过显式方法设定默认值
在这里插入图片描述
SQL基础学习总结:6(INSERT语句的相关使用方法)_第3张图片
因为student_id列的默认值是0,所以student_id列被赋予了0。

通过隐式方法插入默认值

插入默认值时也可以不使用DEFAULT关键字,只要在列清单和VALUES中省略设定了默认值的列就可以了,如下图:
SQL基础学习总结:6(INSERT语句的相关使用方法)_第4张图片
SQL基础学习总结:6(INSERT语句的相关使用方法)_第5张图片
注意:如果我们省略了没有设定默认值的列,该列的值就会被设定为NULL(仅限未设置NOT NULL约束的列)

从其他表中复制数据

要插入数据,除了使用VALUES子句指定具体的数据之外,还可以从其他表中复制数据,如下:

只复制表的结构,不复制表的数据

语法结构如下:

CREATE TABLE <新表名> SELECT * FROM <旧表名> WHERE 1=2;

CREATE TABLE <新表名> LIKE <旧表名>;

例:
在这里插入图片描述

在这里插入图片描述
查看新表中是否存在数据
SQL基础学习总结:6(INSERT语句的相关使用方法)_第6张图片

SQL基础学习总结:6(INSERT语句的相关使用方法)_第7张图片
我们可以看到新表中是空的,只有旧表的结构,并不存在任何数据。

复制表的结构和数据

方法一

语法结构如下:

CREATE TABLE <新表名> SELECT * FROM <旧表名>;

例:
在这里插入图片描述
SQL基础学习总结:6(INSERT语句的相关使用方法)_第8张图片
SQL基础学习总结:6(INSERT语句的相关使用方法)_第9张图片
我们可以看到,新表完全复制了旧表的结构和表中存在的数据。

方法二

使用INSERT INTO SELECT 语句从旧表复制数据,然后把数据插入到一个已存在的表(新表)中,新表中任何已存在的行都不会受影响。
语法结构如下:

INSERT INTO <新表> SELECT * FROM <旧表>;

例:
我们先创建一个新表
SQL基础学习总结:6(INSERT语句的相关使用方法)_第10张图片
我们可以先往新表中插入数据
在这里插入图片描述
进行复制操作
SQL基础学习总结:6(INSERT语句的相关使用方法)_第11张图片
查看复制结果
SQL基础学习总结:6(INSERT语句的相关使用方法)_第12张图片
我们可以发现,新表中在进行复制之前存在的数据在复制过程中并没有受到影响。

注意:如果两个表的结构不同,复制会出现错误,如下:
SQL基础学习总结:6(INSERT语句的相关使用方法)_第13张图片

你可能感兴趣的:(数据库)