修改基本表的基本語句:
ALTER TABLE <表名>
[ ADD[COLUMN] <新列名> <數據類型> [ 完整性約束 ] ]
[ ADD <表級完整性約束>]
[ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ]
[ DROP CONSTRAINT<完整性約束名>[ RESTRICT | CASCADE ] ]
[ALTER COLUMN <列名><數據類型> ] ;
其中
<表名>是要修改的基本表
ADD子句用於增加新列、新的列級完整性約束條件和新的表級完整性約束條件
例:alter table student add phoneno int; 向基本表student中增加phoneno列,數據類型爲int型。
alter table student add unique( phoneno);向基本表中的phoneno列增加唯一性約束條件。
DROP COLUMN子句用於刪除表中的列
例:alter table sd drop column grade; 刪除基本表sd中的grade列。
如果指定了CASCADE短語,則自動刪除引用了該列的其他對象
如果指定了RESTRICT短語,則如果該列被其他對象引用,關係數據庫管理系統將拒絕刪除該列
DROP CONSTRAINT子句用於刪除指定的完整性約束條件
例:alter table sc drop constraint FK;刪除表sc中的FK約束
ALTER COLUMN子句用於修改原有的列定義,包括修改列名和數據類型
例: alter table sc alter column grade char(10);將sc表中的grade列的數據類型改爲char(10)
刪除基本表:
DROP TABLE <表名>[RESTRICT| CASCADE];
RESTRICT:刪除表是有限制的。
欲刪除的基本表不能被其他表的約束所引用
如果存在依賴該表的對象,則此表不能被刪除
CASCADE:刪除該表沒有限制。
在刪除基本表的同時,相關的依賴對象一起刪除
例: 刪除Student表
DROP TABLE Student CASCADE;
基本表定義被刪除,數據被刪除
表上建立的索引、視圖、觸發器等一般也將被刪除
數據更新:
1.插入數據
兩種插入數據方式
①插入元組
②插入子查詢結果:可以一次插入多個元組
語句格式
INSERT
INTO <表名> [(<屬性列1>[,<屬性列2 >…)]
VALUES (<常量1> [,<常量2>]… );
INTO子句
指定要插入數據的表名及屬性列
屬性列的順序可與表定義中的順序不一致
沒有指定屬性列:表示要插入的是一條完整的元組,且屬性列屬性與表定義中的順序一致
指定部分屬性列:插入的元組在其餘屬性列上取空值
VALUES子句
提供的值必須與INTO子句匹配
值的個數
值的類型
insert
into 選課
values(
'020204', '103', '71'
)*/
即在基本表‘選課’中插入數據’020204’, ‘103’, ‘71’。數據的排序與表中列的排序相同,不然不對應。
INSERT
INTO SC(Sno,Cno)
VALUES ('201215128 ',' 1 ');
插入一條選課記錄( ‘200215128’,'1 ')關係數據庫管理系統將在新插入記錄的Grade列上自動地
賦空值。即
INSERT
INTO SC(Sno, Cno , Grade)
VALUES (' 201215128 ',' 1 ',NULL);
插入子查詢結果:
語句格式
INSERT
INTO <表名> [(<屬性列1> [,<屬性列2>… )]
子查詢;
INTO子句
子查詢
SELECT子句目標列必須與INTO子句匹配
值的個數
值的類型
/*求信息院學生的選課課程及成績,把數據放在一個新表*/
use 學生_課程
go
create table sd
(sno char(10),
name char(13),
course char(20),
grade int)
go
insert
into sd(sno,name,course,grade)
select 學生.學號,姓名,課程名,成績
from 學生,課程,選課
where 學院='信息' and 學生.學號=選課.學號 and 選課.課程號=課程.課程號;
修改數據
語句格式
UPDATE <表名>
SET <列名>=<表達式>[,<列名>=<表達式>]…
[WHERE <條件>];
功能
修改指定表中滿足WHERE子句條件的元組
SET子句給出<表達式>的值用於取代相應的屬性列
如果省略WHERE子句,表示要修改表中的所有元組
有三種修改方式:
1.修改某一個元組的值
2.修改多個元組的值
3.帶子查詢的修改語句
/*修改表中某一屬性的數據*/
update sd
set grade = 87
where sno='020101' and course='英語'
即將表sd中符合學號爲020101且選修課程爲英語的學生的成績改爲87。
/*修改表中某列的所有數據*/
update sd
set grade=grade+1;
/*將計算機科學系全體學生的成績置零*/
UPDATE SC
SET Grade=0
WHERE Sno IN
(SELETE Sno
FROM Student
WHERE Sdept= 'CS' );
刪除數據
語句格式
DELETE
FROM <表名>
[WHERE <條件>];
功能
刪除指定表中滿足WHERE子句條件的元組
WHERE子句
指定要刪除的元組
缺省表示要刪除表中的全部元組,表的定義仍在字典中
同修改數據一樣有三種刪除方式:
1.刪除某一個元組的值
2.刪除多個元組的值
3.帶子查詢的刪除語句
/* 刪除數據*/
delete
from sd
where sno='020101' and grade=86;
刪除基本表sd中符合學號爲020101且成績爲86的元組(就是一行的數據)。
/*刪除所有的學生選課記錄*/
DELETE
FROM SC;
/*刪除計算機科學系所有學生的選課記錄*/
DELETE
FROM SC
WHERE Sno IN
(SELETE Sno
FROM Student
WHERE Sdept= 'CS') ;