用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') ;
发布了4 篇原创文章 · 获赞 5 · 访问量 106

猜你喜欢

转载自blog.csdn.net/weixin_43730105/article/details/105333555