欢迎投稿

今日深度:

数据更新、视图的创建与修改,数据更新视图创

数据更新、视图的创建与修改,数据更新视图创建


一、实验目的

1、学会使用INSERTUPDATEDELETESQL语句进行数据更新;

2、学会使用CREATEDROPSQL语句创建和删除视图。

二、实验内容

1、在SQL Server Management Studio中使用INSERTUPDATEDELETE语句进行数据更新。

2、在SQL Server Management Studio中使用CREATEDROP语句创建和删除视图。

三、实验步骤

1利用SQL Server Management Studio在数据库S_C的三个表中分别插入以下数据:学生表S

sno

sname

birthday

sdeptartment

tel

sex

J0401

李军

1985-2-12

计算机系

0576-85123464

J0402

刘晨

1986-5-22

数学系

0576-85123466

J0403

王敏

1986-4-28

计算机系

0576-85123464

J0404

张立

1984-9-8

计算机系

0576-85123464

课程表C:

cno

cname

teacher

pcno

C01

数据库

GUO

C03

C02

VB

LIU

C03

C03

计算机基础

LI

 

C04

数学

WANG

 

C05

数据结构

ZHANG

C03

C06

C语言

CHEN

C03

成绩表SC

sno

cno

grade

J0401

C05

92

J0401

C06

85

J0401

C02

88

J0401

C01

90

J0402

C04

80

J0403

C02

76

J0404

C03

88

2、在查询窗口中:

1选择数据库S_C,用INSERT语句向学生表S中插入一个新生记录(snoJ0405;sname:陈东;birthday1987-5-3sdeptartment中文系;tel0576-85123466;sex女)

Sql语句:

INSERT INTO S 

VALUES('J0405', '陈东', '1987-5-3', '中文系', '0576-85123466', '')

2把课程名为VB的成绩从基本表SC中删除

Sql语句:

DELETE FROM SC WHERE cno = 

(SELECT cno FROM C WHERE cname = 'VB')

3把女生的成绩提高10%

Sql语句:

UPDATE SC

SET SC.grade = SC.grade*1.1 FROM SC, S

WHERE SC.sno = S.sno AND S.sex = ''

4如果学号为J0404的学生成绩少于90分,则加上10

Sql语句:

UPDATE SC

SET SC.grade = SC.grade+10

WHERE SC.sno = 'J0404' AND SC.grade < 90

5将成绩最低的学生成绩加上10

  UPDATE SC

SET SC.grade = SC.grade+10

WHERE SC.grade = (SELECT TOP 1 SC.grade FROM SC ORDER BY SC.grade)

6将成绩最高前3名的学生成绩减去20

Sql语句:

UPDATE SC

SET SC.grade = SC.grade-20

WHERE SC.grade IN (SELECT TOP 3 SC.grade FROM SC ORDER BY SC.grade DESC)

7将成绩最低前10%的学生成绩减去5

Sql语句:

UPDATE SC

SET SC.grade = SC.grade-5

WHERE SC.grade IN (SELECT TOP 10 PERCENT SC.grade FROM SC ORDER BY SC.grade)

8把王敏同学的学习选课和成绩全部删去。

Sql语句:

DELETE FROM SC

WHERE SC.sno = (SELECT S.sno FROM S WHERE S.sname = '王敏')

9从学生表中删除成绩出现过 分的所有学生信息

Sql语句:

DELETE FROM S

WHERE S.sno = (SELECT SC.sno FROM SC WHERE SC.grade = 0)

3、在查询分析器中用CREATE语句建立视图。

1建立计算机系学生的视图IS_student

Sql语句:

CREATE VIEW IS_student

AS

SELECT * FROM S

WHERE S.sdeptartment = '计算机系'

WITH CHECK OPTION

2建立计算机系选修了C02课程的学生的视图IS_C02

Sql语句:

CREATE VIEW IS_C02

AS

SELECT * FROM S

WHERE S.sdeptartment = '计算机系' AND S.sno = 

(SELECT SC.sno FROM SC WHERE SC.cno = 'C02')

WITH CHECK OPTION

3建立计算机系选修了C02课程且成绩在90分以上的学生的视图IS_C0290

Sql语句:

CREATE VIEW IS_C0290

AS

SELECT * FROM S

WHERE S.sdeptartment = '计算机系' AND S.sno = 

(SELECT SC.sno FROM SC WHERE SC.cno = 'C02' AND SC.grade >= 90)

WITH CHECK OPTION

4、在查询分析器中用DROP语句删除视图IS_student。

Sql语句:

DROP VIEW IS_student

四、实验总结

新手自学 有错勿喷


sql 数据库中可以用创建好的视图来更改表的内容?

不可以的 视图是虚表 它是方便用户使用的 把几张表集中在一个视图里 视图不可以修改 一般情况下之进行创建和删除
 

SQL 数据库里是否可以通过视图更改表中的数据?

对于没有复杂处理的 单表 视图, 是可以 UPDATE 的。
例如这样的视图
CREATE VIEW v_1 AS SELECT * FROM 某表

但是 假如你的视图, 是 单表的, 带统计的, 那恐怕是不能 直接 UPDATE 了。
例如这样的视图
CREATE VIEW v_2 AS SELECT id, COUNT(*) as num FROM 某表

--- 前面是单表的, 下面说多表的 ---

对于2张表的,假如你的查询里面, 这2张表是 一对一的关系。 且视图里面, 包含了主键,那么是可以 UPDATE 的。
例如下面这样的 视图
CREATE VIEW temp_view AS
SELECT
t1.name AS t1Name,
t1.age AS t1Age,
t2.name AS t2Name,
t2.age AS t2Age
FROM
t1, t2
WHERE
t1.name = t2.name

然后直接更新视图。
UPDATE temp_view SET t1Age = t2Age;

完整的例子, 可参考
hi.baidu.com/...a.html

但是假如你的视图里面的 2个表, 不是一一对应的。
或者是带了 SUM / COUNT 等统计函数的, 那么可能是没办法更新了。
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3647.html NewsArticle 数据更新、视图的创建与修改,数据更新视图创建 一、实验目的 1 、学会使用 INSERT 、 UPDATE 、 DELETE 等 SQL 语句进行数据更新; 2 、学会使用 CREATE 、 DROP 等 SQL 语句创建和删除视图。...
相关文章
    暂无相关文章
评论暂时关闭