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

相关推荐
Rverdoser1 小时前
【SQL】多表查询案例
数据库·sql
leegong231112 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
敲敲敲-敲代码2 小时前
【SQL实验】触发器
数据库·笔记·sql
和道一文字yyds2 小时前
MySQL 中的索引数量是否越多越好?为什么?如何使用 MySQL 的 EXPLAIN 语句进行查询分析?MySQL 中如何进行 SQL 调优?
数据库·sql·mysql
Moonnnn.3 小时前
51单片机学习——动态数码管显示
笔记·嵌入式硬件·学习·51单片机
南宫生3 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
技术小齐4 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
小刘|4 小时前
深入理解 SQL 注入漏洞及解决方案
数据库·sql
竹言笙熙4 小时前
代码审计初探
学习·web安全
日记成书4 小时前
物联网智能项目
物联网·学习