SQL学习笔记——表数据的添加(Insert)

插入记录插入记录使用 INSERT 语句

语法格式

INSERT [ TOP ( expression ) [ PERCENT ] ] 
[INTO]  table_or view_name   	/*表或视图名*/  
 {
 	 [ (column_list)]    	 /*列的列表*/  
 	 	{ VALUES                   /*指定列值的子句*/    
		 ({DEFAULT | NULL |expression} [,…n])  /*列值的构成形式*/    
		  | derived_table                      /*结果集*/    
		  | exectute_statement            /*有效的 EXECTUTE 语句*/ 
		 }
  }  
 | DEFAULT   VALUES              /*所有列均取默认值*/ 
[; ] 

参数说明
TOP ( expression ) [ PERCENT ]:指定将插入的随机行的数目或百分比。expression 可以是行数或行的百分比。在和 INSERT、UPDATE 或 DELETE 语句结合使用的 TOP 表达式中引用的行不按任何顺序排列。
INTO:一个可选的关键字,可以将它用在INSERT 和目标表之间。
table_or view_name:要接收数据的表或视图的名称。
( column_list ) :要在其中插入数据的一列或多列的列表。必须用括号将 column_list 括起来,并且用逗号进行分隔。如果某列不在 column_list 中,则 SQL Server Database Engine 必须能够基于该列的定义提供一个值;否则不能加载行。

如果列满足下面的条件,则数据库引擎将自动为列提供值
具有 IDENTITY 属性。使用下一个增量标识值。
有默认值。使用列的默认值。
具有 timestamp 数据类型。
使用当前的时间戳值。
可为空值。使用空值。
是计算列。使用计算值。
当向标识列中插入显式值时,必须使用column_list 和 VALUES 列表,并且表的 SET IDENTITY_INSERT 选项必须为 ON。

VALUES:引入要插入的数据值的列表。对于column_list(如果已指定)或表中的每个列,都必须有一个数据值。必须用圆括号将值列表括起来。如果 VALUES 列表中的各值与表中各列的顺序不相同,或者未包含表中各列的值,则必须使用 column_list 显式指定存储每个传入值的列
DEFAULT:强制数据库引擎 加载为列定义的默认值。如果某列并不存在默认值,并 且该列允许空值,则插入NULL。对于使用 timestamp 数据类型定义的列,插入下一个时间戳值。DEFAULT 对标识列无效。
expression:一个常量、变量或表达式。表达式不能包含 SELECT或 EXECUTE 语句。
derived_table:任何有效的 SELECT语句,它返回将加载到表中的数据行。SELECT 语句不能包含公用表表达式 (CTE)。
execute_statement:任何有效的EXECUTE 语句,它使用 SELECT 或 READTEXT 语句返回数据。SELECT 语句不能包含 CTE。
DEFAULT VALUES:强制新行包含为每个列定义的默认值。

表数据添加操作:
基于前面已建立的数据库,对Student表,Teacher表,Course表,SC表进行数据的添加。

--向Student表中添加数据
insert into Student values('01' , '赵雷' , '1990-01-01' , '男',null);
insert into Student values('02' , '钱电' , '1990-12-21' , '男',default);
insert into Student values('03' , '孙风' , '1990-05-20' , '男',default);
insert into Student values('04' , '李云' , '1990-08-06' , '男',default);
insert into Student values('05' , '周梅' , '1991-12-01' , '女',default);
insert into Student values('06' , '吴兰' , '1992-03-01' , '女',default);
insert into Student values('07' , '郑竹' , '1989-07-01' , '女',default);
insert into Student values('08' , '王菊' , '1990-01-20' , '女',default);

--查看学生表信息添加是否成功
select * from Student

--向教师表添加数据
insert into Teacher
select '01' , '张三', '教师一部'union
select '02' , '李四', '教师二部'union
select '03' , '赵六', '教师一部'union
select '04' , '周恒', '教师二部'union
select '05' , '王五', '教师一部'

--查看教师表信息添加是否成功
select * from Teacher
--向课程表中添加数据
insert into Course values
('01' , '02' ,'语文'),
('02' , '01' , '数学'),
('03' , '03', '英语' ),
('04' , '04' ,'物理'),
('05' , '05' ,'化学')

--查看课程表信息添加是否成功
select * from Course

--向成绩表中添加数据
insert into SC values('01' , '01' , 80);
insert into SC values('01' , '02' , 90);
insert into SC values('01' , '03' , 99);
insert into SC values('02' , '01' , 70);
insert into SC values('02' , '02' , 60);
insert into SC values('02' , '03' , 80);
insert into SC values('03' , '01' , 80);
insert into SC values('03' , '02' , 80);
insert into SC values('03' , '03' , 80);
insert into SC values('04' , '01' , 50);
insert into SC values('04' , '02' , 30);
insert into SC values('04' , '03' , 20);
insert into SC values('05' , '01' , 76);
insert into SC values('05' , '02' , 87);
insert into SC values('06' , '01' , 31);
insert into SC values('06' , '03' , 34);
insert into SC values('07' , '02' , 89);
insert into SC values('07' , '03' , 98);

--查看成绩表信息添加是否成功
select * from SC 

心得:表的数据输入只要用到了insert语句,虽然语句写起来比较容易理解,但是在实操过程中意外频出。
主要有:

输入的数据与表定义格式字段的属性不匹配
输入的数据与表定义的字段不匹配
如果主表信息未输入,直接输入附表的数据执行会报错,理由是外键约束的原因,所以输入时优先输入主表的数据等

当然,在表数据的输入是使用insert语句,但是使用的方法却又三种,这得看每个人的喜好了吧。不过个人还是喜欢多行输入,这样比较省事,毕竟我是个严重的懒癌患者。

1、逐行输入:insert into table_name values(字段1值,字段2值,.....);
       	    insert into table_name values(字段1值,字段2值,.....);
            ..............
2、多行输入:insert into table_name values
      	    (字段1值,字段2值,.....),
      	    (字段1值,字段2值,.....),
      	    ........
3、联合输入:insert into table_name
            select 字段1值,字段2值,.... union
            select 字段1值,字段2值,.... union
      			  ..........
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲小憨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值