SQL:插入、修改、删除表数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B2Squku9-1608205820355)(F:\JianShu_material\MySQL\图片\插入、修改、删除数据\插入、.png)]

1. 插入数据

SQL的数据插入语句INSERT通常有两种形式:

  • 一种是插入一个元组
  • 另一种是插入子查询结果,可以一次插入多个元组

1.1 插入元组

插入元组的INSERT语句的格式为:

INSERT
INTO <表名> [(<属性列1>[,<属性列2>]……)]
VALUES (<常量1> [,<常量2>]……);

其功能是将新元组插入指定表中,其中新元组的属性列1的值为常量1,属性列2的值为常量2,……

若INTO子句中没有出现的属性列,新元组将在这些列上取空值

如果INTO子句中没有指明任何属性列名,则新插入的元组必须在每个属性列上均有值

#案例一:简单插入一行数据
INSERT 
INTO stuinfo(stuid,stuname,stugender,email,age)
VALUES(1,'张三','男','zhangsan@qq.com',12);
 
#案例二:可以为空字段如何插入
#忽视相关字段的列名和值,或者直接写NULL
INSERT 
INTO stuinfo(stuid,stuname,stugender,age)
VALUES(2,'李四','男',13);

INSERT 
INTO stuinfo(stuid,stuname,stugender,email,age)
VALUES(2,'李四','男',13,NULL);

#案例三:默认字段如何插入
#不写默认值字段,或使用DEFAULT
INSERT 
INTO stuinfo(stuid,stuname,email,age)
VALUES(3,'王五','wangwu@qq.com',13);

INSERT 
INTO stuinfo(stuid,stuname,stugender,email,age)
VALUES(3,'王五',DEFAULT,'wangwu@qq.com',13);

#案例四:可以省略字段列表,默认所有字段
INSERT 
INTO stuinfo
VALUES(4,'赵六','男','zhaoliu@qq.com',14)

1.2 插入子查询结果

子查询不仅可以嵌套在SELECT语句中用以构造父查询的条件,也可以嵌套在INSERT语句中用以生成要插入的批量数据

插入子查询结果的INSERT语句格式为:

INSERT
INTO <表名> [(<属性列1>[,<属性列2>]……)]
子查询;
#案例:对每一个系,求学生的平均年龄,并把结果存入数据库
#1.首先在数据库中建立一个新表,其中一列存放系名,另一列存放相应的学生平均年龄
CREATE TABLE Dept_age
	(Sdept CHAR(15)
     Avg_age SMALLINT);
#2.让后对Student表按系分组求平均年龄,再把系名和平均年龄存入新表中
INSERT 
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student 
GROUP BY Sdept;

2. 修改数据

修改操作又称为更新操作,其语句的一般格式为:

UPDATE <表名>
SET <列名>=<表达式> [,<列名>=<表达式>]……
[WHERE <条件>];

其功能是修改指定表中满足WHERE子句条件的元组

其中SET子句给出< 表达式 >的值用于取代相应的属性列值

如果省略WHERE子句,则表达要修改表中所有元组

#1.修改某一个元组的值
#案例:将学生201215121的年龄改为22岁
UPDATE Student
SET Sage = 22
WHERE Sno = '201215121';

#2.修改多个元组的值
#案例:将所有学生的年龄增加一岁
UPDATE Student
SET Sage = Sage + 1;

#3.带子查询的修改语句
#子查询也可以嵌套在UPDATE语句中,可以构造修改的条件
#案例:将计算机科学系全体学生的成绩置零
UPDATE SC
SET Grade = 0
WHERE Sno IN
	(SELECT Sno
     FROM Student
     WHERE Sdept = 'cs');

3. 删除数据

删除语句的一般格式为:

DELETE
FROM <表明>
[WHERE <条件>];

DELETE语句的功能是从指定表中删除满足WHERE子句条件的所有元组

如果省略WHERE子句则表示删除表中全部元组,但表的定义仍在字典中

也就是说,DELETE语句删除的是表中的数据,而不是关于表的定义

#1.删除某一个元组的值
#案例:删除学号为201215128的学生记录
DELETE 
FROM Student
WHERE Sno = '201212128';

#2.删除多个元组的值
#案例:删除所有学生选课记录
DELETE
FROM SC;

#3.带子查询的删除语句
#子查询同样也可以嵌套在DELETE语句中,可以构造执行删除操作的条件
#案例:删除计算机科学系所有学生的选课记录
DELETE
FROM SC
WHERE Sno IN
	(SELETE Sno
     FROM Student
    WHERE Sdept = 'CS');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值