SQL练习6 - INSERT / UPDATE / DELETE / NULL / VIEW

插入数据:

SQL的数据插入语句INSERT通常有两种形式,一种是插入一个元组,另一种是插入子查询结果。后者可以一次插入多个元组。
1、插入元组:
插入元组的INSERT语句格式为:
INSERT
INTO<表名>[(<属性列1>[,<属性列2>]…)]
VALUES(<常量1>[,<常量2>]…)
其功能是将新元组插入指定表中。其中新元组的属性列1的值为常量1,属性列2的值为常量2。INTO子句中没有出现的属性列,新元组在这些列上会去空值。但必须注意的是,在表定义时说明了NOT NULL的属性列不能取空值,否则会出错。如果INTO子句中没有指明任何属性列名,则新插入的元组必须在每个属性列上均有值。
【例3.69】将一个新学生元组(学号:201215132,姓名:温宁,性别:女,所在系:IS,年龄:18岁)插到Student表中。

INSERT
INTO Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES('201215132','温宁','女','IS',18)

SELECT *
FROM Student

在这里插入图片描述
在INTO子句中指出了表名Student,并指出了新增加的元组在哪些属性上要赋值,属性的顺序可以与CREATE TABLE中的顺序不一样。VALUES子句对新元组的各个属性赋值,字符串常量要用单引号括起来
【例3.70】将学生张成民的信息插入到Student表中

INSERT
INTO Student
VALUES('201215133','张成民','男',18,'CS')

SELECT *
FROM Student

在这里插入图片描述
与例3.69不同的是,在该例的3.70中INTO子句只指出了表名,没有指出属性名,所以在这种情况下VALUES子句中的值应该是与Student表中的属性列相对应,如果不对应,那么可能会出现数据类型不匹配的错误
【例3.71】插入一条选课记录(‘201215132’,‘1’)

INSERT
INTO SC(Sno,Cno)
VALUES('201215132','1')

SELECT *
FROM SC

在这里插入图片描述
此时系统自动的为未输入的Grade列赋值为NULL
2、插入子查询结果:
子查询不仅可以嵌套在SELECT语句中用以构造父查询的条件,还可以嵌套在INSERT语句中用以生成插入的批量数据
插入子查询结果的INSERT语句格式为:
INSERT
INTO<表名>[(<属性列1>[,<属性列2>…])]
子查询
【例3.72】对每一个系,求学生的平均年龄,并把结果存入数据库

/*首先在数据库中建立一个新表,其中一列存放系名,另一列存放相应的学生平均年龄*/
CREATE TABLE Dept_age
	  (Sdept CHAR(15),
	  Avg_age SMALLINT)
/*对Student表按系分组求平均年龄,再把系名和平均年龄存入新表中*/
INSERT
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值