用sql修改基本表及其更新表中數據

修改基本表的基本語句:
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') ;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章