數據的更新
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');
