sql作业历史记录

热门资讯  点击:   2014-06-21

sql作业历史记录篇一

SQL2000中创建作业

SQL2000中创建作业(定时查询,更新)

2008-01-07 20:20

企业管理器

--管理

--SQL Server代理

--右键作业

--新建作业

--"常规"项中输入作业名称

--"步骤"项

--新建

--"步骤名"中输入步骤名

--"类型"中选择"Transact-SQL 脚本(TSQL)"

--"数据库"选择执行命令的数据库

--"命令"中输入要执行的语句:

update base set flag=0 where datediff(dd,date,getdate())=0 --确定

--"调度"项

--新建调度

--"名称"中输入调度名称

--"调度类型"中选择你的作业执行安排

--如果选择"反复出现"

--点"更改"来设置你的时间安排为一天一次

然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法:

我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.

============================

在sql server中创建作业(转)

如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,

可以用管理->SQL Server代理->作业来实现。

1、管理->SQL Server代理->作业(按鼠标右键)->新建作业->

2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->

分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用

户[也可选其它的登录]->

描述[填写本次工作详细描述内容];

[ 创建作业分类的步骤:

SQL Server代理->作业->右键选所有任务->添加、修改、删除 ]

3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型

[Transact-SQL(TSQL)脚本]->

数据库[要操作的数据库]->命令

[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件

如果要执行存储过程,填

exec p_procedure_name

v_parameter1,[ v_parameter2„v_parameterN]

]

->确定

(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);

4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->

更改[调度时间表]->确定

(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);

5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。

跟作业执行相关的一些SQL Server知识:

SQLSERVERAGENT服务必须正常运行,启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致。

点作业右键可以查看作业执行的历史记录情况,也可以立即启动作业和停止作业。

最近在看作业历史记录时,发现有的作业记录的历史记录多,有的作业记录的记

录的历史记录少.

如何能使某些作业按各自的需求,保留一段时间.比如保留一个月的历史记录. 看了SQL Server的在线帮助文档,里面介绍说:

在管理->SQL Server代理->右键选属性->作业系统->限制作业历史记录日志的大小->

作业历史记录日志的最大大小(行数) 默认为1000 如果某台机器的作业数量很多,一定要提高它,例如为100000

每个作业历史记录日志的最大行数 默认为100 如果作业每天执行两次,需要保留一个月的日志,可以设为60

它们之间有一个相互制约关系, 我们可以根据自己的需要来改.

如果SQL Server服务器改过机器名, 管理是旧名称时建立的job的时候可能会遇到

错误14274: 无法添加、更新或删除从MSX服务器上发起的作业(或其步骤或调度)

看了Microsoft的文档:

说SQL Server 2000系统里msdb..sysjobs 里originating_server 字段里存的是原来的服务器的名称.

24X7在用的系统肯定不能按上面Microsoft的文档说的那样把名字改回来又改过去。

于是想,msdb..sysjobs 能否update originating_server 字段成现在在用的新服务器名?

use msdb

select * from sysjobs

找到originating_server 字段还是旧服务器的job_id, 然后执行update语句: update sysjobs set originating_server='new_server_name'

where job_id='B23BBEBE-A3C1-4874-A4AB-0E2B7CD01E14'

(所影响的行数为 1 行)

这样就可以添加、更新或删除那些曾经出error 14274 的作业了。

如果想把作业由一台机器迁移到另一台机器,可以先保留好创建作业的脚本, 然后在另一台机器上运行。

导出所有作业的创建脚本操作步骤:

管理->SQL Server代理->作业(鼠标右键)->所有任务->生成SQL脚本->保存到操作系统下的某个sql文件

导出某一个作业的创建脚本操作步骤:

管理->SQL Server代理->作业->选中待转移的作业(鼠标右键)->所有任务->生成SQL脚本->保存到OS下的某个sql文件

然后在目的服务器上运行刚才保存下来的创建作业的sql脚本。

( 如果建作业的用户或者提醒的用户不存在, 则会出错;

我们需要在目的服务器上建立相关的WINDOWS用户或者SQL Server数据库登录, 也可以修改创建作业的脚本, 把目的服务器上不存在的用户替换成已经有的用户。

如果生成日志的物理文件目录不存在,也应该做相关的修改,例如d:\区转f:\区等

字符串的 @command 命令里有分隔符号 go 也会出错, 可以把它去掉) ==================

在数据库的应用系统中,充分的利用数据库的后台服务端的功能可以可以简化客户端前台的工作,更可以降低网络的负荷,同时使整个系统设计更合理,便于维护移植和升级,后台计划任务作业在很多数据库应用中经常会用到,当然是配合存储过程使用。

在SQL Server2000中,可以手动一步一步的在企业管理器中建立后台计划任务作业,但这样既麻烦也不便于发布,因此本文给出使用T-SQL脚本创建作业的方法。

需要下面三个SQL Server2000 msdb系统库中的存储过程来完成作业的建立,在此之前请先开启数据库实例的SQLServerAgent服务,SQL Server安装后默认是没有启动该服务的。

顺便说一句,SQL Server在2000版本中才有了明显的“实例”的概念,在{sql作业历史记录}.

7.0版中没有明确的实例,因此在SQL Server2000默认安装时创建了一个默认实例,这是为了和SQl Server 7.0兼容,如果你是默认方式创建的实例,则实例名为空。啥子?你不晓得啥子是“实例”?个人去找点资料看看,oracel、sybase都有实例和表空间,所以我叫SQL Server2000之前的SQL Server为桌面数据库。

进入正题,步骤是“作业”-〉“作业调度”-〉“作业步骤”,具体如下:

1、使用sp_add_job 添加由 SQLServerAgent 服务执行的新作业。

2、使用sp_add_jobschedule创建作业调度。

3、使用sp_add_jobstep将一个步骤(操作)添加到作业中

下面以在汽车客运站票务系统中的脚本为例给出实际例子,在看例子之前,请先看一下上面三个系统存储过程的帮助。在例子中使用了一个自定义的存储过程“tksp_bakdata”,它的功能是处理当日之前售票数据(只需知道是一个自定义存储过程就行了)。

例子1:每日0点30分处理售票数据

use msdb

EXEC sp_add_job @job_name = 'tk_bakdata',

@enabled = 1,

@description = '每日00:30处理售票数据',

@start_step_id = 1,

@owner_login_name = 'tkuser'

exec sp_add_jobserver @job_name = 'tk_bakdata'

go

EXEC sp_add_jobschedule @job_name = 'tk_bakdata',

@name = 'Bakdata003000',

@freq_type = 4,

{sql作业历史记录}.

@freq_interval = 1,

@active_start_time = 003000

go

EXEC sp_add_jobstep @job_name = 'tk_bakdata',

@step_name = 'bakdata',

@subsystem = 'TSQL',

@command = 'EXEC tksp_bakdata ',

@database_name='ticket'

go

例子2:每日SQLServer启动时处理售票数据,这样在每天需要关机的服务器中

sql作业历史记录篇二

SQL SERVER定时作业的设置方法

如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,

可以用管理->SQL Server代理->作业来实现。

1、管理->SQL Server代理->作业(按鼠标右键)->新建作业->

2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->

分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->{sql作业历史记录}.

描述[填写本次工作详细描述内容];

[ 创建作业分类的步骤:

SQL Server代理->作业->右键选所有任务->添加、修改、删除 ]

3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->

数据库[要操作的数据库]->命令

[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件 如果要执行存储过程,填

exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN] ]

->确定

(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);

4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->

更改[调度时间表]->确定

(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);

5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。

跟作业执行相关的一些SQL Server知识:

SQLSERVERAGENT服务必须正常运行,启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致。

点作业右键可以查看作业执行的历史记录情况,也可以立即启动作业和停止作业。

最近在看作业历史记录时,发现有的作业记录的历史记录多,有的作业记录的记录的历史记录少.

如何能使某些作业按各自的需求,保留一段时间.比如保留一个月的历史记录.

看了SQL Server的在线帮助文档,里面介绍说:

在管理->SQL Server代理->右键选属性->作业系统->限制作业历史记录日志的大小->

作业历史记录日志的最大大小(行数) 默认为1000 如果某台机器的作业数量很多,一定要提高它,例如为100000

每个作业历史记录日志的最大行数 默认为100 如果作业每天执行两次,需要保留一个月的日志,可以设为60

它们之间有一个相互制约关系, 我们可以根据自己的需要来改.

如果SQL Server服务器改过机器名, 管理是旧名称时建立的job的时候可能会遇到

错误14274: 无法添加、更新或删除从MSX服务器上发起的作业(或其步骤或调度)

看了Microsoft的文档:

说SQL Server 2000系统里msdb..sysjobs 里originating_server 字段里存的是原来的服务器的名称.

24X7在用的系统肯定不能按上面Microsoft的文档说的那样把名字改回来又改过去。

于是想,msdb..sysjobs 能否update originating_server 字段成现在在用的新服务器名?

use msdb

select * from sysjobs

找到originating_server 字段还是旧服务器的job_id, 然后执行update语句:

update sysjobs set originating_server='new_server_name'

where job_id='B23BBEBE-A3C1-4874-A4AB-0E2B7CD01E14'

(所影响的行数为 1 行)

这样就可以添加、更新或删除那些曾经出error 14274 的作业了。

如果想把作业由一台机器迁移到另一台机器,可以先保留好创建作业的脚本, 然后在另一台机器上运行。

导出所有作业的创建脚本操作步骤:

管理->SQL Server代理->作业(鼠标右键)->所有任务->生成SQL脚本->保存到操作系统下的某个sql文件

导出某一个作业的创建脚本操作步骤:

管理->SQL Server代理->作业->选中待转移的作业(鼠标右键)->所有任务->生成SQL脚本->保存到OS下的某个sql文件

然后在目的服务器上运行刚才保存下来的创建作业的sql脚本。

( 如果建作业的用户或者提醒的用户不存在, 则会出错;

我们需要在目的服务器上建立相关的WINDOWS用户或者SQL Server数据库登录,

也可以修改创建作业的脚本, 把目的服务器上不存在的用户替换成已经有的用户。

如果生成日志的物理文件目录不存在,也应该做相关的修改,例如d:\区转f:\区等

字符串的 @command 命令里有分隔符号 go 也会出错, 可以把它去掉)

如何在SQL Server 2005中使用作业实现备份和特定删除

步骤如下:

1.需要启动服务Sql Server Agent(sql server 代理)

2.新建作业,名称为backupDatabase

3.选择步骤,点击“新建”,输入步骤名称,选择需要备份的数据库,然后再命令中写上:

DECLARE @data_ago NVARCHAR(50)

DECLARE @cmd VARCHAR(50)

SET @data_ago = 'D:\bak\' + 'backupname' + CONVERT(CHAR(8), GETDATE() -15, 112)

+ '.bak'

SET @cmd = 'del ' + @data_ago

EXEC MASTER..xp_cmdshell @cmd

DECLARE @strPath NVARCHAR(200)

SET @strPath = 'D:\bak\' + 'backupname' + CONVERT(CHAR(8), GETDATE(), 112) +

'.bak'

BACKUP DATABASE [databasename] TO DISK = @strPath WITH NOINIT , NOUNLOAD ,

NOSKIP , STATS = 10, NOFORMAT

说明:databasename是备份的数据库名称;backupname是备份时文件名称

4.选择计划,点击“新建”,输入计划的名称,根据自己的需要选择频率,每天频率等。 SQL Server 2005 中引入的 xp_cmdshell 选项是服务器配置选项,

使系统管理员能够控制是否可以在系统上执行 xp_cmdshell 扩展存储过程。 默认情况下,xp_cmdshell 选项在新安装的软件上处于禁用状态,

但是可以通过使用外围应用配置器工具或运行 sp_configure 系统存储过程来启用它, 如下示例所示:

1、打开外围应用配置器:勾选启用xp_cmdshell

2、运行 sp_configure 系统存储过程来启用,

代码如下

EXEC sp_configure 'show advanced options', 1

GO

RECONFIGURE

GO

EXEC sp_configure 'xp_cmdshell', 1

GO

RECONFIGURE

GO

sql作业历史记录篇三

sql练习作业~

------------------------------------表结构--------------------------------------

--学生表tblstudent(编号stuid、姓名stuname、年龄stuage、性别stusex)

--课程表tblcourse(课程编号courseid、课程名称coursename、教师编号teaid)

--成绩表tblscore(学生编号stuid、课程编号courseid、成绩score)

--教师表tblteacher(教师编号teaid、姓名teaname)

--------------------------------------------------------------------------------- --1、查询“001”课程比“002”课程成绩高的所有学生的学号;

select t1.stuid

from (select stuid, score from tblscore where courseid = '001') t1,

(select stuid, score from tblscore where courseid = '002') t2

where t1.stuid = t2.stuid

and t1.score > t2.score;

--2、查询平均成绩大于60分的同学的学号和平均成绩;

select stuid, avg(nvl(score, 0))

from tblscore

group by stuid

having avg(nvl(score, 0)) > 60

order by stuid;

--3、查询所有同学的学号、姓名、选课数、总成绩;

select tblstudent.stuid,

tblstudent.stuname,

count(tblscore.courseid),

sum(nvl(score, 0))

from tblstudent

left outer join tblscore

on tblstudent.stuid = tblscore.stuid

group by tblstudent.stuid, stuname; --4、查询姓“李”的老师的个数;

select count(*) from tblteacher where teaname like '李%';

--5、查询没学过“叶平”老师课的同学的学号、姓名;

select s.stuid, s.stuname

from tblstudent s

where stuid not in

(select stuid

from tblscore where courseid in

(select courseid

from tblcourse

where teaid = (select teaid from tblteacher where teaname = '叶平'))); --6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;

select s.stuid, s.stuname

from tblstudent s,

(select stuid from tblscore where courseid = '001') t1,

(select stuid from tblscore where courseid = '002') t2

where t1.stuid = t2.stuid

and s.stuid = t1.stuid; --7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;

select stuid,stuname

from tblstudent

where stuid in

(select tblscore.stuid

from tblcourse

left join tblscore

on tblcourse.courseid = tblscore.courseid

where tblcourse.teaid = (select teaid from tblteacher where teaname = '叶平') group by tblscore.stuid

having count(*) = (select count(*)

from tblcourse

where teaid =

(select teaid from tblteacher where teaname = '叶平'))); --8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名; select t1.stuid, t1.stuname

from (select s.stuid, s.stuname, tblscore.score

from tblstudent s

left join tblscore

on s.stuid = tblscore.stuid

where courseid = 002) t1{sql作业历史记录}.

left join (select s.stuid, s.stuname, tblscore.score

from tblstudent s

left join tblscore

on s.stuid = tblscore.stuid

where courseid = 001) t2

on t1.stuid = t2.stuid

where t1. score < t2. score;

--9、查询所有课程成绩小于60分的同学的学号、姓名;

select stuid, stuname

from tblstudent

where stuid not in (select tblstudent.stuid

from tblstudent, tblscore

where tblstudent.stuid = tblscore.stuid

and score > 60);

--10、查询没有学全所有课的同学的学号、姓名;

select s.stuid, s.stuname

from tblstudent s

left join tblscore

on s.stuid = tblscore.stuid

group by s.stuid, s.stuname

having count(tblscore.courseid) < (select count(*) from tblcourse);

--11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;

select distinct s.stuid, s.stuname

from tblstudent s

left join tblscore

on s.stuid = tblscore.stuid

where tblscore.courseid in

(select courseid from tblscore where stuid = '1001'); --12、查询至少学过学号为“1001”同学所有课程的其他同学学号和姓名;

select distinct s.stuid,s.stuname

from tblstudent s

left join tblscore

on s.stuid = tblscore.stuid

where tblscore.stuid <> '001'

and tblscore.courseid in

(select courseid from tblscore where stuid = '001');

--13、把“sc”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;

update tblscore sct

set sct.score =

(select avg(score)

from tblscore sct2

where sct2.courseid = sct.courseid)

where sct.courseid = (select c.courseid

from tblcourse c, tblteacher t

where c.courseid = sct.courseid

and c.teaid = t.teaid

and t.teaname = '叶平');

--14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;

select stuid

from tblscore

where stuid != '1002'

and courseid in (select courseid from tblscore where stuid = '1002')

group by stuid

having count(*) = (select count(*) from tblscore where stuid = '1002');

--15、删除学习“叶平”老师课的sc表记录;

delete from tblscore sct

where sct.courseid in (select c.courseid

from tblcourse c, tblscore sct2, tblteacher t

where c.courseid = sct2.courseid

and c.teaid = t.teaid

and t.teaname = '叶平');

--16、向sc表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、'002'号课的平均成绩;

insert into tblscore

(stuid, courseid, score)

select s.stuid,

'003',

(select avg(score) from tblscore sct where sct.courseid = '002')

from tblstudent s

where s.stuid not in

(select sct.stuid from tblscore sct where sct.courseid = '003');

--17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生id,,数据库,企业管理,英语,有效课程数,有效平均分 select s.stuid,

sum((case

when sct.courseid = '数据库' then

sct.score

else

end)) database,{sql作业历史记录}.

sum((case

when sct.courseid = '企业管理' then

sct.score

else

end)) enterprise,

sum((case

when sct.courseid = '英语' then

sct.score

else

end)) english,

(select avg(sct2.score) from tblscore sct2 where sct2.stuid = s.stuid) score from tblstudent s, tblscore sct

where s.stuid = sct.stuid

group by s.stuid

order by score desc;

--18、查询各科成绩最高和最低的分:以如下形式显示:课程id,最高分,最低分 select c.courseid, max(sct.score), min(sct.score)

from tblscore sct, tblcourse c

where c.courseid = sct.courseid

group by c.courseid;

--19、按各科平均成绩从低到高和及格率的百分数从高到低顺序 (百分数后如何格式化为两位小数??)

select tblscore.courseid,

avg(tblscore.score),

(convert(varchar(10),

((select count(*)

from tblscore sc

Where sc.courseid = cs.courseid

and sc.score >= 60) * 10000 /

(select count(*)

from tblscore sc

Where sc.courseid = cs.courseid)) / 100) + '%')

from tblscore cs as tmp

group by 课程id,

平均分,

及格率order by 平均分,

convert(float, substring(及格率, 1, len(及格率) - 1)) desc;

--20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),oo&uml (003),数据库(004)

select sct.courseid,

avg(score),

(select count(*)

from tblscore sct2 where sct2.courseid = sct.courseid

and sct2.score >= 60) /

(select count(*)

from tblscore sct2

where sct2.courseid = sct.courseid) pass

from tblscore sct

where sct.courseid in ('001', '002', '003', '004')

group by sct.courseid

order by pass desc;

--21、查询不同老师所教不同课程平均分从高到低显示

select t.teaname, c.coursename, avg(sct.score) avgscore

from tblteacher t, tblcourse c, tblscore sct

where t.teaid = c.teaid

and c.courseid = sct.courseid

group by t.teaname, c.coursename

order by avgscore desc;

--22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),uml (003),数据库(004) 格式:[学生id],[学生姓名],企业管理,马克思,uml,数据库,平均成绩

sql作业历史记录篇四

SQL语言的发展历史

SQL语言的发展历史

sql作业历史记录篇五

12-表记录操作SQL语句

课题:表记录操作SQL语句

【组织教学】

1.组织学生按学号入座,维护课堂纪律。

2.填写白板、实训登记表,清点人数,填写教学日志。

【复习旧课】

1、SQL语言的特点是什么?

2、数据定义语言中CREATE、DROP、ALTER命令的功能与使用方法?

3、SQL查询语言SELECT的功能与使用方法?

【讲授新课】

数据操纵语言是完成数据操作的命令,一般分为两种类型的数据操纵,它们统称为DML:

● 数据检索(常称为查询):寻找所需的具体数据。

● 数据修改:添加、删除和改变数据。

数据操纵语言一般由INSERT(插入)、DELETE(删除)、UPDATE(更新),SELECT(检索,又称查询)等组成,由于SELECT比较特殊,所以一般又将它以查询(检索)语言单独出现。

一、插入记录

【格式1】INSERT INTO <表名> [<字段名表>] VALUES (<表达式表>)

【格式2】INSERT INTO <表名> FROM ARRAY <数组名> | FROM MEMVAR

【功能】在指定的表文件末尾追加一条记录。格式1用表达式表中的各表达式值赋值给<字段名表>中的相应的各字段。格式2用数组或内存变量的值赋值给表文件中各字段。

【说明】如果某些字段名在INTO子句中没有出现,则新记录在这些字段名上将取空值(或默认值)。但必须注意的是,在表定义说明了NOT NULL的字段名不能取空值。

<字段名表>:指定表文件中的字段,缺省时,按表文件字段的顺序依次赋值。

<表达式表>:指定要追加的记录各个字段的值。

【例 1】在表文件STUD的末尾追加三条记录。

***用表达式方式追加第一条记录***

INSERT INTO STUD (学号,姓名,性别,班级名,系别代号,地址,出生日期,是否团员) ; VALUES ("011110","李建国","男","计0121","01","湖北武汉",{09/28/02},.T.)

DIMENSION DATA(8)

DATA(1)="011103"

DATA(2)="李宁"

DATA(3)="女"

DATA(4)="电0134"

DATA(5)="02"

DATA(6)="江西九江"

DATA(7)={05/06/85}

DATA(8)=.F.

INSERT INTO STUD FROM ARRAY DATA

学号="011202"

姓名="赵娜"

性别="女"

班级名="英0112"

系别代号="03"

地址="广西南宁"

出生日期={02/21/84}

是否团员=.F.

INSERT INTO STUD FROM MEMVAR

LIST

上机练习:利用三种方法给“学生基本情况表”添加记录。

二、删除记录

【格式】DELETE FROM <表名> WHERE <表达式>

【功能】从指定的表中删除满足WHERE子句条件的所有记录。如果在DELETE语句中没有WHERE子句,则该表中的所有记录都将被删除。

【说明】这里的删除是逻辑删除,即在删除的记录前加上一个删除标记“*”。

【例 2】删除STUD表中所有性别为男的记录。

DELETE FROM STUD ;

WHERE 性别=“男”

三、修改记录

【格式】UPDATE <表文件名> SET <字段名1>=<表达式> [,<字段名2>=<表达式>…] [WHERE <条件>]

【功能】更新指定表文件中满足WHERE条件子句的数据。其中SET子句用于指定列和修改的值,WHERE用于指定更新的行,如果省略WHERE子句,则表示表中所有行。

【说明】更新操作又称为修改操作。

【例 3】将成绩表(SC)中,所有课程号为02的成绩各加5分。

UPDATE SC SET 成绩=成绩+5 ;

WHERE 课程号="02"

四、正确关机,清理实训场所

【巩固新课】

通过本次课的讲解与练习,让学生掌握SQL数据操纵语言:INSERT(插入)、DELETE(删除)、UPDATE(更新),SELECT(查询)命令的功能与使用方法。

【布置作业】

教材P128 习题三

sql作业历史记录篇六

数据库实验四作业及答案

实验4 数据查询

一、 实验目的

1. 掌握使用Transact-SQL的SELECT语句进行基本查询的方法。 2. 掌握使用SELECT语句进行条件查询的方法。

3. 掌握嵌套查询的方法。

4. 掌握多表查询的方法。

5. 掌握SELECT语句的GROUP BY和ORDER BY子句的作业和使用方法。 6. 掌握联合查询的操作方法。

7. 掌握数据更新语句INSERT INTO、UPDATE、DELETE的使用方法。

二、 实验准备

1. 了解SELECT语句的基本语法格式和执行方法。

2. 了解嵌套查询的表示方法。

3. 了解UNION运算符的用法。

4. 了解SELECT语句的GROUP BY和ORDER BY子句的作用。 5. 了解IN、JOIN等子查询的格式。

6. 了解INSERT INTO、UPDATE、DELETE的格式与作用。

三、 实验内容及步骤

0. 创建studentsdb数据库及其相应表,并录入数据。 启动查询分析器,运行下面链接的代码即可。

创建数据库代码

1. 在studentsdb数据库中,使用下列SQL语句将输出什么?

(1) SELECT COUNT(*) FROM grade

(2) SELECT SUBSTRING(姓名,1,2) FROM student_info

(3)

SELECT UPPER('kelly')

(4) SELECT Replicate('kelly',3)

(5) SELECT SQRT(分数) FROM grade WHERE 分数>=85

(6) SELECT 2,3,POWER(2,3)

(7) SELECT YEAR(GETDATE()),MONTH(GETDATE()),DAY(GETDATE())

2. 在studentsdb数据库中使用SELECT语句进行基本查询。

(1) 在student_info表中,查询每个学生的学号、姓名、出生日期信息。 SELECT*FROMstudent_info

(2) 查询学号为0002的学生的姓名和家庭住址。

SELECT姓名,家庭住址FROMstudent_info

WHERE学号=0002

(3) 找出所有男同学的学号和姓名。

SELECT学号,姓名FROM

相关文章
推荐内容
上一篇:一天心情不好的说说
下一篇:qq说说评论突破字数限制
Copyright 学习网 版权所有 All Rights Reserved