sql语句(2)数据的更新(插入,修改和删除)

数据的更新

1.创建数据库后创建表格

CREATE TABLE Student(
	Sno char(9) not null,
	Sname char(20),
	Ssex char(2),
	Sage smallint,
	Sdept char(20)

	primary key (Sno)
);

CREATE TABLE Course(
	Cno char(4) not null,
	Cname char(40),
	Cpno char(4),
	Ccredit smallint,
	primary key (Cno)
);

CREATE TABLE SC(
	Sno char(9) not null,
	Cno char(4) not null,
	Grade smallint,
	constraint pk_SC primary key(Sno,Cno),
	foreign key (Sno) references Student(Sno),
	foreign key (Cno) references Course(Cno),
);

2.使用insert语句向表格添加数据

(1)插入元组

插入元组有两种语法,一种是指定列,另一种不指定列,只指出表名,表示新元组要在表的所有的属性列上都指定值,此需与建表时的次序相同,values子句中的值与属性列要一一对应,不然会因为数据类型不匹配可能出错

INSERT
INTO<表名>[(<属性列1>[,<属性列2>],.....)]
VALUES(<常量1>[,<常量2>].....)
--INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept)
--VALUES(201215121,‘李勇‘,‘男‘,20,‘CS‘)
--INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept)
--VALUES(201215122,‘刘晨‘,‘女‘,19,‘CS‘)
INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept)
VALUES(201215123,‘王敏‘,‘女‘,18,‘MA‘);

INSERT INTO Student(Sno,Sname,Ssex,Sage,Sdept)
VALUES(201215125,‘张立‘,‘男‘,19,‘IS‘);

insert into Course values(1,‘数据库‘,5,4);
insert into Course values(2,‘数学‘,null,2);
insert into Course values(3,‘信息系统‘,1,4);
insert into Course values(4,‘操作系统‘,6,3);
insert into Course values(5,‘数据结构‘,7,4);
insert into Course values(6,‘数据处理‘,null,2);
insert into Course values(7,‘PASCAL语言‘,6,4);

insert into SC VALUES(201215121,1,92);
insert into SC VALUES(201215121,2,85);
insert into SC VALUES(201215121,3,88);
insert into SC VALUES(201215122,2,90);
insert into SC VALUES(201215122,3,80);

(2)插入子查询结果

子查询可以用于嵌套在insert语句中,生成要插入的批量数据

例如:对每一个系,求学生的平均年龄,并将结果放入数据库中

--首先建立新的表存放数据:
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;

3.修改表格数据

一般格式:

update<表名>
set<列名>=<表达式> [,<列名>=<表达式>]...
[where<条件>];

(1)修改某一元组

update Student
set Sage=22
where Sno=‘201215121‘;

(2)修改多个元组

--将所有的学生年龄都增加一岁
update Student set Sage = Sage+1;

(3)带子查询的修改语句

将CS专业的全体学生成绩置为100

update SC set Grade=100
where Sno IN(select Sno from Student where Sdept=‘CS‘);

4.删除数据

一般格式:delete from<表名>[where <条件>];

(1)删除某个元组的值

delete
from Student where Sno=‘201215128‘;

(2)删除多个元组的值

删除所有课程

delete from Course;

(3)带子查询的删除语句

delete from SC
where Sno IN(select Sno from Student where Sdept=‘CS‘);

sql语句(2)数据的更新(插入,修改和删除)

上一篇:MySQL--utf8mb4排序规则


下一篇:MongoDB副本集oplog设置过小问题