实验四使用SQL语句修改SQL Server 数据库

时间:2019-05-13 09:32:41下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《实验四使用SQL语句修改SQL Server 数据库》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《实验四使用SQL语句修改SQL Server 数据库》。

第一篇:实验四使用SQL语句修改SQL Server 数据库

实验四使用SQL语句修改SQL Server数据库

1、实验目的:

(1)了解SQL Server数据库的逻辑结构和物理结构;

(2)掌握使用SQL语句修改数据库的方法;

2、实验准备:

(1)要明确能够修改数据库的用户必须是系统管理员,或者是被授权使用CREATE DATABASE语句的用户;

(2)修改数据库必须要明确:除存储位置,即物理文件名不能修改外,其它项均可以修改,包括数据库名、数据库大小和增长量等数据;

(3)了解使用SQL语句修改数据库的方法。

3、实验内容:

(1)删除实验三中创建的数据库;

(2)用自己名字创建一个数据库,包含一个主数据文件data1和一个日志文件log1,最大值都是5M;增长量分别为10%和1M;存储在自己的文件夹下;

(3)添加一个数据文件data2,最大值为3M;

(4)添加一个日志文件log2,最大值为4M;

(5)添加一个文件组group1;

(6)添加一个次数据文件data3放在文件组group1中;

(7)修改数据文件data2,将最大值改为5M;

(8)删除日志文件log1;

(9)删除次数据文件data3、data2;

(10)修改文件组,将group1改名为group2;

(11)删除文件组group2;

(12)将log2的增长量改为1M。

(13)缩小该数据库的大小,保留自由空间1M,保留释放的文件空间。

(14)将数据库的日志文件log2缩小到3M。

(15)将数据库更名为stud+自己的名字。

第二篇:数据库SQL语句十题

作业十题

1.查询所有学生的基本信息,并按学号降序排列

SELECT * FROM STUDENT

ORDER BY sno DESC;

2.查询系别代码为“02”的女同学信息

SELECT * FROM STUDENT

WHERE ssex=’女’ and sdept=‘02’;

3.查询学生的总人数

SELECT COUNT(*)AS 学生总人数

FROM STUDENT;

4.所有选修课学生的姓名,课程名及成绩

SELECT sname,cname,grade

FROM STUDENT,COURSE,SC

WHERE STUDENT.sno=SC.sno and COURSE.cno=SC.cno;

5.不及格学生姓名(合并重复项)

SELECT distinct sname

FROM SC,STUDENT

WHERE grade<=60 and STUDENT.sno=SC.sno;

6.查询学号为“011110”的学生的哪些课程的成绩比他数据库的成绩要高 SELECT cno

FROM COURSE

WHERE sno=’011110’ and grade>(SELECT grade FROM COURSE,SC

WHERE cname=’数据库’ and sno=‘011110’ and

COURSE.cno=SC.cno);

7.查询选修课在3门以上(包括3门)的学生学号及选课门数 SELECT sno,COUNT(*)AS 选修门数

FROM SC

GROUP BY sno HAVING COUNT(*)>=3;

8.查询学号为“011110”的学生的平均成绩,并以平均成绩命名 SELECT AVG(grade)AS average grade

FROM SC

WHERE sno=’011110’;

9.查询计算机系或英语系的所有学生的个人信息

SELECT*FROM STUDENT

WHERE sdeptIN(SELECT sdept FROM DEPT

WHERE sdname=’计算机系’OR sdname=’英语系’);

10.查询与“罗宇波”同一个系的学生情况

SELECT * FROM STUDENT

WHERE sdept=(SELECT sdept FROM STUDENT

WHERE sname=’罗宇波’);

第三篇:SQL数据库实验报告 实验二

实验2SQL Server数据库的管理

1.实验目的(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。

(2)掌握使用SQL Server管理平台对数据库进行管理的方法。

(3)掌握使用Transact-SQL语句对数据库进行管理的方法。

2.实验内容及步骤

(1)在SQL Server管理平台中创建数据库。

① 运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。

② 右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。

(2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。

(3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。指定“最大文件大小”为5MB。修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。

(4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL语句CREATE DATABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。

(5)在查询设计器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。

(6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。

(7)使用SQL Server管理平台将studb数据库的名称更改为student_db。

(8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。

3.实验思考

(1)数据库中的日志文件是否属于某个文件组?

(2)数据库中的主数据文件一定属于主文件组吗?

(3)数据文件和日志文件可以在同一个文件组吗?为什么?

(4)删除了数据库,其数据文件和日志文件是否已经删除?是否任何人都可以删除数据库?

(5)能够删除系统数据库吗?

第四篇:SQL数据库编程学习应用语句

SQL数据库编程学习应用语句大全

1as 的用处

as可以对表和列取别名

在开发过程中经常遇到开始给某一个的字段去field1的名称,但后来有感觉field1字段指定不确切,于是又把此字段改成了field2,由于开始认为field1是常量,于是到处使用字符串field1,而且程序中又含有大量对field1的处理,此时就可以使用as

例如原来的 select field1 from tableA,改为selectfield2 asfield1 from tableA 代码基本就可以不动了。

2自增长的字段的插入

开发中经常遇到某个字段类型为IDENTITY,也就是自增长类型,但由于特殊需要,又要插入数据

需要临时去掉,可以使用如下语句set IDENTITY_INSERTtablename on,在处理完成后在使用如下语句恢复 set IDENTITY_INSERTtablenameoff

3分组取每组的前N个数据

开发中还会遇到需要对某一组数据先分组,然后取每组的前n条记录的情况

不妨试试如下代码

[sql] view plaincopy

/*

按CurrentNodeLevel列分组,每组按NodeID排序,取出每个组中的前3个元素*/

declare @temp table(NodeIDint, CurrentNodeLevelint ,rowNumberint)--定义临时表insert into @temp

selectNodeID,CurrentNodeLevel,ROW_NUMBER()

OVER(partitionby CurrentNodeLevel

order by NodeID)as rowNumber

from SchoolTerminalStruct---给临时表中插入数据

select * from @temp where rowNumber<=3--从临时表中取数据

4生成随机数

主意此方法只能写成存储过程,不能写成函数

[sql] view plaincopy

-----返回Max,Min之间的随机数不能写成函数

createproc [dbo].[getRAND]

(@Max int,--最大值

@Min int--,--最小值)

AS

BEGIN

DECLARE @result int

SELECT @result=RAND()*(@Max-@Min)+@Min

select@result

END

5把满足一定条件的数据用逗号分隔

这可能也是一个很常用的语句了,经常出现在一对多的关系中对外展示,要求把子表中的数据取出来用逗号或者其他符号分隔开

[sql] view plaincopy

/*

把满足 t2.NodeID=t1.NodeID的tableA 的字段NodeName 以逗号分隔开合并为一个字段输出

*/

select *,stuff((select ',' + t1.NodeName from tableA t1,tableB t2

wheret2.NodeID=t1.NodeID

for xml path('')), 1 , 1 , '')as text

fromtableA

6在数据库中处理异常

通过个参数附加output标志来输出参数,通过TRY,CATCH捕捉异常

[sql] view plaincopy

CREATE PROCEDURE [dbo].[sp_UpdateFunctionTree]

@nodenameint,@Result int output---2,操作失败;0操作成功

AS

BEGIN

begin

BEGIN TRY

UPDATE FunctionTree SET NodeName=@nodename

set @Result=0--操作成功

END TRY

BEGIN CATCH

set @Result=-2--操作失败

END CATCH

end

END

7查询中的条件判断

经常遇到在某些条件下应该查询这个字段,在另外一些条件下需要其他字段的情况,可以通过unoin来完成,但也可以通过CASE WHEN 完成[sql] view plaincopy

/*

在State=0 时返回field1 ,在State=1时返回 field2 ,其他时返回field3

*/

SELECT(CASE WHENState=0 THEN field1 WHENState=1 THEN field2

ELSE field3 END)as State

FROM tablename

8单引号的处理

在包含单引号时应该使用两个单引号转义

[sql] view plaincopy

dbo.sp_executesql @statement = N' select indexID,Sex=(case when Sex=0then ''男'' else ''女'' end)

fromtablename '

9使用游标

[sql] view plaincopy

declare @temp table(TaskIDint ,NodeIdint)--声明临时表

insert into @temp select A.TaskID ,A.NodeIdfrom tableAA,tableB B

whereA.TaskID=B.TaskID--//--给声明的临时表中插入记录

DECLARE tnames_cursor CURSORLOCAL FORWARD_ONLY READ_ONLY--声明游标

FOR select TaskID,NodeId from @temp;--游标需要用到的列

open tnames_cursor--打开游标

DECLARE @TaskIDint,@NodeIdint;--声明变量

FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId--移动游标给变量赋值,应该与游标需要用到的列一一对应,顺序类型应该一致

WHILE(@@FETCH_STATUS = 0)--循环

BEGIN

BEGIN

exec TaskType @TaskID,@NodeId--调用存储过程

END

FETCH NEXT FROM tnames_cursor INTO @TaskID,@NodeId ,@TaskRunCYCType--移动游标给变量赋值 应该与游标需要用到的列一一对应,顺序类型应该一致

END

CLOSE tnames_cursor--关闭游标

DEALLOCATE tnames_cursor--释放游标

10合并更新和插入

在开发中大部分情况下,插入和更新传递的参数基本上是一样,那为什么不合并呢

[sql] view plaincopy

createproc [dbo].[Save_TableName]

(@field1 varchar(50),@field2varchar(200),@ID int,@insertOrUpdate--小于0插入 大于0更新)

as

begin

if(@insertOrUpdate<0)

begin

INSERT INTOTableName(field1,field2,ID)

values(@field1,@field2,@ID);

end

else

begin

UPDATE TableNameSET field1= @field1, field2 = @field2

where ID =@ID;

end

end

11定义函数

在没有满足要求的情况时,可以定义函数,但是使用自己定义的函数时需要加上架构名称

[sql] view plaincopy

create FUNCTION [dbo].[CheckTime]

(@startTimedatetime,@endTimedatetime--,)

RETURNSint

AS

BEGIN

DECLARE @result int

SET@result=DATEDIFF(hour, @startTime, @endTime)--

if(@result=0)--小时相同 比较分钟

begin

SET@result=DATEDIFF(minute, @startTime, @endTime)

if(@result=0)--分钟相同比较秒

begin

SET@result=DATEDIFF(second, @startTime, @endTime)

end

end

RETURN @result

END

调用此函数

[sql] view plaincopy

dbo.CheckTime(@startTime1, @startTime2)--需要加上架构名称

12递归读取数据

在实际的应用中经常遇到树结构的表,但读取会比较麻烦,这里提够一个函数

[sql] view plaincopy

/*

函数 返回表,返回给定节点的所有子孙节点,而不仅仅是子节点

*/

Create Function [dbo].[GetChildren](@NodeIDInt)

Returns @Tree Table(NodeIDInt, NodeNameVarchar(50), ParentIDInt)

As

Begin

Insert @Tree Select NodeID, NodeName, ParentIDFromTreetable Where ParentID = @NodeID

While @@Rowcount> 0

Insert @Tree Select A.NodeID, A.NodeName, A.ParentID

From Treetable A

Inner Join @Tree B

On A.ParentID = B.NodeIDAndA.NodeID Not In(Select NodeID From @Tree)Return

End

13通过默认值实现存储过程重载

存储过程可以使用默认值,估计都知道,但以此就可以实现类似函数重载的效果

例如,如下的存储过程由于使用了默认值,就可以不传递参数,传递一个参数,两个,三个,[sql] view plaincopy

CREATE PROCEDURE dbo.my_proc

@firstint = NULL,--NULL default value

@secondint = 2,--Default value of 2

@thirdint = 3--Default value of 3

AS SELECT @first, @second, @third;

14在数据库中拼字符串,也可以用参数

在实际的开发中,某些情况下在数据库中拼字符串不可避免,但又担心有特殊字符,导致拼出来的SQL有问题,其实数据库中拼字符串也可以使用参数,这就要用到dbo.sp_executesql,这样就可以避免SQL注入和特殊字符导致的错误

[sql] view plaincopy

DECLARE @IntVariable INT;--定义变量

DECLARE @SQLString NVARCHAR(500);--存储拼出来的SQL

DECLARE @ParmDefinition NVARCHAR(500);---存储拼出来的SQL中的参数

/* Build the SQL string one time.*/

SET @SQLString =

N'SELECT * FROM AdventureWorks.Sales.Store WHERE SalesPersonID = @SalesID';/* Specify the parameter format one time.*/

SET @ParmDefinition = N'@SalesIDint';--赋值

/* Execute the string with the first parameter value.*/

SET @IntVariable = 275;--赋值

EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;

/* Execute the same string with the second parameter value.*/

SET @IntVariable = 276;

EXECUTE dbo.sp_executesql@SQLString, @ParmDefinition,@SalesID = @IntVariable;

16触发器需要注意的问题

在使用触发器时有一个问题,或许很少有人注意到,一条更新语句一次更新了十条记录,会触发几次触发器?只有一次!很奇怪,但却是事实,所以这需要注意,一不小心就会把好

多数据漏了

第五篇:实验四SQL语言

实验四 SQL语言——数据更新操作

2007-06-16 01:12:44|分类: 课程作业 |标签:数据更新操作sql语言|字号大中小 订阅

实验四 SQL语言——数据更新操作

三、实验条件与环境

1.通用PC机

2.PC机必须安装Windows 2000系列、Windows XP系列或Windows NT操作系统平台 3.PC机还须安装Microsoft SQL Server 2000 任意一版本(个人版、标准版、企业版)

4.最好有一台公用的SQL Server 2000 服务器

四、实验目的1.通过上机实验进一步加深对SQL数据更新(插入、修改及删除)语句的基本语法格式的掌

2.通过上机实验掌握单个元组插入操作的实现过程

3.通过上机实验掌握多个元组插入操作的实现过程

4.通过上机实验掌握单个元组修改操作的实现过程

5.通过上机实验掌握多个元组修改操作的实现过程

6.通过上机实验掌握单个元组删除操作的实现过程

7.通过上机实验掌握多个元组删除操作的实现过程

8.通过上机实验加深对更新操作时数据库中数据一致性问题的了解

9.通过上机实验加深对约束条件在数据更新操作执行中的作用问题的了解

五、实验要求

1.本实验所有实验内容要求在规定时间(2课时)内完成2.实验内容中涉及到的各更新操作均通过SQL语言来实现

3.本实验中各操作内容的执行均会更新当前数据库,为便于下一实验内容的顺利执行,请在每成功完成一个实验内容后重新导入初始状态下的实验数据库

4.实验完成后需要书写实验报告,本次实验报告需在下次实验课堂上上交

六、实验内容:

1.在S表中插入元组“s6,华誉,40,广州,02085268888”

2.在J表中插入元组“j8,传感器厂”

3.对每一个供应商,求他为各种工程供应零件的总数量,并将此结果存入数据库

4.将P表中PNO值为p6的元组的color属性值改为绿,weight属性值改为60

5.将SPJ表中前4个元组的qty属性值统一修改为300

6.将S表中city属性名含有“京”或“津”的相应status属性值增加100

7.将供应商s2为“一汽”工程项目所供应的零件数量修改为2000

8.将全部红色零件的颜色修改为浅红色

9.由s5供给j4的零件p6改为由s3供应,请在数据库中作必要的数据修改

10.在SPJ表中新增一列属性名为SDATE的属性列,对该表中的每一元组在SDATE属性列

上填上实验当时的日期和时间

11.删除所在城市为“广州”的供应商记录

12.删除所有零件名称中第一个字为“螺”字的零件记录,并在供应情况表中删除相应的记录

13.删除s3和s4两供应商为“三建”工程供应“螺母”或“螺丝刀”零件的相应供应情况数

据信息

七、实验总结:

数据更新操作(插入操作[INSERT]、修改操作[UPDATE]、删除操作[DELETE])是关系数据库系统中一种极为重要、数据更新能力强、使用灵活的数据操纵方式,此数据操作的使用不是完全独立的,而是和数据定义操作、数据查询操作有着紧密联系的。实验完成后,请同学们总结一下SQL语言在实现各种数据更新操作时与数据定义操作和数据查询操作两类操作之间的相互联系,通过深入总结,从而学会利用SQL语言实现较为复杂的数据更新任务。

实验四 SQL语言——数据更新操作

实验内容参考答案

六、实验内容

1.在S表中插入元组“s6,华誉,40,广州,02085268888”

use shiyan

go

insert

into s

values('s6','华誉',40,'广州','02085268888')

2.在J表中插入元组“j8,传感器厂”

use shiyan

go

insert

into j(jno,jname)

values('j8','传感器厂')

3.对每一个供应商,求他为各种工程供应零件的总数量,并将此结果存入数据库

use shiyan

go

create table TotalQTYofS(SNO char(4)not null unique,TotalQTY int);

insert

into TotalQTYofS

select sno,sum(qty)

from spj

group by sno;

4.将P表中PNO值为p6的元组的color属性值改为绿,weight属性值改为60

use shiyan

go

update p

set color='绿',weight=60

where pno='p6'

5.将SPJ表中前4个元组的qty属性值统一修改为300

use shiyan

go

update spj

set qty=300

from(select top 4 * from spj order by sno)as table1

where spj.sno=table1.sno

6.将S表中city属性名含有“京”或“津”的相应status属性值增加100

use shiyan

go

update s

set status=status+100

where city like '%京%' or city like '%津%

7.将供应商s2为“一汽”工程项目所供应的零件数量修改为2000

use shiyan

go

update spj

set qty=2000

where sno='s2' and jno=(select jno

from j

where jname='一汽')

8.将全部红色零件的颜色修改为浅红色

use shiyan

go

update p

set color='浅红'

where color='红'

9.由s5供给j4的零件p6改为由s3供应,请在数据库中作必要的数据修改

use shiyan

go

update spj

set sno='s3'

where sno='s5' and jno='j4' and pno='p6'

10.在SPJ表中新增一列属性名为SDATE的属性列,对该表中的每一元组在SDATE属性列

上填上实验当时的日期和时间

use shiyan

go

alter table spj

add SDATE datetime

update spj

set SDATE=getdate()

11.删除所在城市为“广州”的供应商记录

use shiyan

go

delete

from s

where city='广州'

12.删除所有零件名称中第一个字为“螺”字的零件记录,并在供应情况表中删除相应的记录

use shiyan

go

delete

from p

where pname like '螺%'

delete

from spj

where pno in(select pno

from p

where pname like '螺%')

13.删除s3和s4两供应商为“三建”工程供应“螺母”或“螺丝刀”零件的相应供应情况数据信息

use shiyan

go

delete

from spj

where(sno='s3' or sno='s4')and jno in(select jno

from j

where jname='三建')and pno in(select pno

from p

where pname='螺母' or pname='螺丝刀')

下载实验四使用SQL语句修改SQL Server 数据库word格式文档
下载实验四使用SQL语句修改SQL Server 数据库.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    实验六SQL语句[推荐5篇]

    实验六 SQL语句(续)一、实验目的 (1)进一步掌握查询的概念和方法。 (2)熟练掌握单表查询的select语句。 (3)熟练掌握聚合函数的使用。 (4)熟练掌握连接查询方法 (5)熟练掌握嵌套查询方法......

    VB数据库SQL语句学习(精选多篇)

    1.Select * from student查询所有原始记录 2. Select StudentID, StudentName from student 只查询学号和姓名 3. Select StudentID as 学号, StudentName as 姓名, Sex as......

    SQL简单语句小结 数据库菜鸟不可不看

    数据库菜鸟不可不看简单SQL语句小结为了大家更容易理解我举出的SQL语句,本文假定已经建立了一个学生成绩管理数据库,全文均以学生成绩的管理为例来描述。 1.在查询结果中显示......

    数据库实验四(含5篇)

    山东建筑大学 计算机学院 实验报告 班级: 姓名: 学号: 实验成绩: 课程:数据库 同组者: 实验日期: 2018.5.22 实验四 数据库安全性和完整性 一.实验目的 1. 加深对数据库安全性和完整......

    WordPress使用SQL语句批量替换修改文章内容信息 Hu(本站推荐)

    WordPress使用SQL语句批量替换修改文章内容信息Hu 文章目录起因你是否遇到过如下几种状况:1、批量修改文章内容:2、批量修改文章摘要:3、批量修改文章的作者:4、批量修改文章评......

    使用SQL语句实现用户登录

    使用SQL语句实现用户登录 5、在DA.cs类文件中添加如下代码 /// /// 验证顾客登陆 /// /// 查询语句 /// 指定顾客数据集 public DataSet CustomerLogin(string SqlStr) { S......

    文管二级Access数据库SQL语句详解

    第一讲 上面是Access数据库中所涉及的两个表 下面我们介绍Access数据库中用于查询数据的语句: 1、 SELECT 语句 SELECT语句是数据库中使用频率最高的语句,就是我们通常说的查......

    SQL语句判断数据库、表、字段是否存在

    SQL语句判断数据库、表、字段是否存在 --判断[TestDB]是否存在 if exists(select 1 from master..sysdatabases where name='TestDB') print 'TestDB存在' else print 'Test......