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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM