SQL 语句继续学习之记录三

一,数据的插入(insert 语句的使用方法)

使用insert语句可以向表中插入数据(行)。原则上,insert语句每次执行一行数据的插入。

列名和值用逗号隔开,分别扩在()内,这种形式称为清单。

对表中所有列进行insert 操作时可以省略表名后的列清单。

插入null时需要在values子句的值清单中写入null。

可以为表中的列设定默认值(初始值)。默认值可以通过在create table语句中,为列设置default约束来设定。

插入默认值可以通过两种方式实现。即在insert语句的values子句中指定default关键字(显示方法),或省略列清单(隐式方法)。

使用 insert ...select 可以从其他表中复制数据。

1,什么是insert

通过create table 语句创建出来的表,可以将其比作一个空空如也的箱子,只有把数据装入到箱子中,它才能被称为数据库。

为了学习insert语句,我们创建一张新表,除了为hanbai_tanka 列(销售单价)设置了Default ) 的约束外,其他与之前的完全相同。

如上,仅仅创建了一张空表,还没有插入数据

2,insert 语句的基本语法

复制代码
INSERT into <表名> (列1,列2,列3,...) values (值1,值2,值3,...);

由于shohin_id, shohin_mei,shohin_bunrui 列是字符型,所以插入的数据需要加单引号,torokubi是日期类型,也需要加单引号。

列清单------ (shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi)

值清单------('0001','T恤衫','衣服',1000,500,'2009-09-20')

注意,值清单中列的个数需和列清单中列的数量一致,否则语句错误。

并且,原则上,执行一次insert语句会插入一行数据。因此,插入多行时,通常需要循环执行所需次数的insert语句。但是关于多行insert,在部份DBMS中,支持如下多行insert 语句

复制代码
insert into shoinIns values 
('0002','打孔器','办公用品',500,320,'2009-09-11'),
('0003','运动T恤','衣服',4000,2800,null),
('0004','菜刀','厨房用具',3000,2800,'2009-09-20');

如上,对表进行全列insert时,可以省略表名后的列清单。这时values子句的值会默认按照从左到右的顺序赋给每一列。

3,插入null

复制代码
insert into shoinIns values 
('0003','运动T恤','衣服',4000,2800,null),

如上介绍中,insert语句中想要给某一列赋予null值时,可以直接在values子句的值清单中写入null,但是想要插入null的列一定不能设置not null 约束。

4,插入默认值

可以向表中插入默认值(初始值)。默认值的设定,可以通过在创建表的create table语句中设置default约束来实现。本次创建表语句时,

复制代码
create table shoinIns
(shohin_id CHAR(4) not null,
shohin_mei VARCHAR(100) not null,
shohin_bunrui VARCHAR(32) not null,
hanbai_tanka INTEGER DEFAULT 0,
shiire_tanka INTEGER ,
torokubi DATE ,
primary key (shohin_id));

其中hanbai_tanka integer Default 0, 意思就是为hanbai_tanka 列设置了0 这样的默认值,如果插入一行数据,在不提供值或者提供default值时,该值即为 0 。

有2中方式插入默认值,称为显示插入默认值或者隐式插入默认值。

1)显示插入默认值示例如下

复制代码
Insert into shoinIns (shohin_id,shohin_mei,shohin_bunrui,hanbai_tanka,shiire_tanka,torokubi)
values ('0007','切菜板','厨房用具',DEFAULT,790,'2009-04-28');

上述Default 即为创建表时设置的 0,

  1. 通过隐式方法插入默认值

插入默认值时可以不使用default关键字,只要在列清单和values 中省略设定了默认值的列即可

复制代码
Insert into shoinIns (shohin_id,shohin_mei,shohin_bunrui,shiire_tanka,torokubi)
values ('0007','切菜板','厨房用具',790,'2009-04-28');

但是注意,如果省略了没有设定默认值的列的话,该列的值就会被设定为null。如果省略的是设置了not null 约束列的话,insert语句就会出错。

如果设定默认值的列名被省略,就会自动设定为该列的默认值

如果没有设置默认值的列名被省略,就会自动设定为null

相关推荐
敲敲了个代码1 小时前
从硬编码到 Schema 推断:前端表单开发的工程化转型
前端·javascript·vue.js·学习·面试·职场和发展·前端框架
我命由我123453 小时前
SVG - SVG 引入(SVG 概述、SVG 基本使用、SVG 使用 CSS、SVG 使用 JavaScript、SVG 实例实操)
开发语言·前端·javascript·css·学习·ecmascript·学习方法
QQ14220784494 小时前
没有这个数据库账户,难道受到了sql注入式攻击?
数据库·sql
勇往直前plus4 小时前
MyBatis/MyBatis-Plus类型转换器深度解析:从基础原理到自定义实践
数据库·oracle·mybatis
cyhysr5 小时前
sql将表字段不相关的内容关联到一起
数据库·sql
无名-CODING5 小时前
SQL 注入指南
sql·mybatis
Fern_blog5 小时前
鸿蒙学习之路
学习
小智RE0-走在路上6 小时前
Python学习笔记(11) --数据可视化
笔记·python·学习
Asus.Blogs8 小时前
SSE + Resty + Goroutine + Channel 完整学习笔记
笔记·学习·golang
·云扬·8 小时前
MySQL分页查询优化:从基础到进阶实践
数据库·mysql·oracle