ziggystardust-pop

数据的更新

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\');

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-11-05
  • 2022-12-23
  • 2021-12-14
  • 2021-08-13
  • 2022-12-23
  • 2021-08-29
  • 2021-11-19
猜你喜欢
  • 2021-08-23
  • 2021-12-08
  • 2021-07-28
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
  • 2021-11-14
相关资源
相似解决方案