数据库应用例题源代码.docx
- 文档编号:16802611
- 上传时间:2023-07-17
- 格式:DOCX
- 页数:51
- 大小:26.50KB
数据库应用例题源代码.docx
《数据库应用例题源代码.docx》由会员分享,可在线阅读,更多相关《数据库应用例题源代码.docx(51页珍藏版)》请在冰点文库上搜索。
数据库应用例题源代码
【例4-1】
SELECT*FROM"MyTable"
SELECT*FROM[MyTable]
【例4-2】
SELECT*FROMauthors
SELECT*FROM"authors"
SELECT*FROM[authors]
【例4-3】
DECLARE@MyCounterint
【例4-4】
DECLARE@LastNamenvarchar(30),@FirstNamenvarchar(20),@Statenchar
(2)
【例4-5】
DECLAREMyVariableint
SET@MyVariable=1
GO
SELECT*
FROMEmployees
WHEREEmployeeID=@MyVariable
【例4-6】
DECLARE@myvarchar(20)
SET@myvar='Thisisatest'
PRINT@myvar
【例4-7】
DECLARE@myvar1char(20),@myvar2char(20)
SELECT@myvar1='Hello!
',@myvar2='Howareyou!
'
SELECT@myvar1,@myvar2
【例4-10】
SELECTSTR(YEAR('03/12/1998'),4)+'年'+STR(MONTH('03/12/1998'),2)+'月'
+STR(DAY('03/12/1998'),2)+'日'
【例4-11】
SELECTCONVERT(char,GETDATE(),102)ASa1,CONVERT(char,GETDATE(),5)ASa2,
CONVERT(char,GETDATE(),1)ASa3
【例4-12】
DECLARE@date_var1datetime,@date_var2datetime
SET@date_var1=CAST('00-12-31'asdatetime)
SET@date_var2=CAST('12:
30:
58'asdatetime)
SELECT'date_var1'=CONVERT(char(20),@date_var1,3),
'date_var2'=CONVERT(char(20),@date_var2,108)
【例4-13】
(1)SELECTAVG(数学成绩),AVG(英语成绩)FROM学生成绩
(2)SELECTCOUNT(数学成绩)FROM学生成绩WHERE数学成绩>80
(3)SELECTCOUNT(*)FROM学生成绩
(4)SELECTMAX(数学成绩),MIN(数学成绩)FROM学生成绩
(5)SELECTSUM(数学成绩),SUM(英语成绩)FROM学生成绩
【例4-14】
USE学生信息--打开“学生信息”数据库
DECLARE@Todayint--定义局部变量@Today为int类型
SET@Today=DAY(GETDATE())--给变量@Today设置为当前日期
IF(@Today=1)--如果@Today为1,则从数据库中查询信息
BEGIN
SELECT学号,姓名AS本月寿星,出生日期
FROM学生基本信息
WHEREMONTH(出生日期)=MONTH(GETDATE())
END
【例4-15】
USEpubs
IF(SELECTAVG(price)FROMtitlesWHEREtype='mod_cook')<$15
BEGIN
PRINT'Thefollowingtitlesareexcellentmod_cookbooks:
'
PRINT''
SELECTtitleFROMtitlesWHEREtype='mod_cook'
END
ELSE
PRINT'Averagetitlepriceismorethan$15.'
【例4-16】
USEpubs--打开pubs数据库
SELECTtitleas书名,--显示title列内容,列名显示为“书名”
图书类别=--显示type列全称,列名显示为“图书类别”
CASEtype
WHEN'popular_comp'THEN'PopularComputing'
WHEN'mod_cook'THEN'ModernCooking'
WHEN'business'THEN'Business'
WHEN'psychology'THEN'Psychology'
WHEN'trad_cook'THEN'TraditionalCooking'
ELSE'Notyetcategorized'
END,
priceAS价格--显示price列内容,列名显示为“价格”
FROMtitles--从titles表查询
【例4-17】
USEpubs--打开pubs数据库
SELECTtitleas书名,priceas价格,--用中文列名显示title和price列
价格类别=
CASE--根据不同的price值给出不同的提示
WHENpriceISNULLTHEN'Notyetpriced'
WHENprice<10THEN'VeryReasonableTitle'
WHENprice>=10andprice<20THEN'CoffeeTableTitle'
ELSE'Expensivebook!
'
END
FROMtitles--从titles表查询
【例4-18】
DECLARE@ismallint,@sumsmallint
SET@i=1
SET@sum=0
WHILE@i<=100
BEGIN
SET@sum=@sum+@i
SET@i=@i+1
END
PRINT'1到100之间的奇数和为'+str(@sum)
或:
DECLARE@ismallint,@sumsmallint
SET@i=0
SET@sum=0
WHILE@i>=0
BEGIN
SET@i=@i+1
IF@i<=100
IF(@i%2)=0
CONTINUE
ELSE
SET@sum=@sum+@i
ELSE
BEGIN
PRINT'1到100之间的奇数和为'+str(@sum)
BREAK
END
END
【例4-19】
DECLARE@sumint,@countint
SET@sum=0
SET@count=1
label_1:
SET@sum=@sum+@count
SET@count=@count+1
IF@count<=50
GOTOlabel_1
PRINTstr(@count)+str(@sum)
【例4-20】
BEGIN
WAITFORDELAY'00:
01'
PRINT'HELLO'
END
【例4-21】
BEGIN
WAITFORTIME'22:
20'
PRINT'HELLO'
END
【例5-1】
CREATEDATABASEcompany--创建company数据库
ONPRIMARY--定义在主文件组上的文件
(NAME=company_data,--主数据文件逻辑名称
FILENAME='e:
\sql_data\company.mdf',--主数据文件物理名称
SIZE=10,--初始大小为10MB
MAXSIZE=unlimited,--最大限制为无限大
FILEGROWTH=10%)--增长速度为10%
LOGON--定义事务日志文件
(NAME=company_log,--事务日志文件逻辑名称
FILENAME='e:
\sql_log\company.ldf',--事务日志文件物理名称
SIZE=1,--初始大小为1MB
MAXSIZE=5,--最大限制为5MB
FILEGROWTH=1)--增长速度为1MB
【例5-2】
CREATEDATABASEemployees--数据库名称
ONPRIMARY--定义在主文件组上的文件
(NAME=employee1,--主数据文件逻辑名称
FILENAME='e:
\sql_data\employee1.mdf',--主数据文件物理名称
SIZE=10,--主数据文件初始大小为10MB
MAXSIZE=unlimited,--最大限制为无限大
FILEGROWTH=10%),--增长速度为10%
(NAME=employee2,--次数据文件逻辑名称
FILENAME='e:
\sql_data\employee2.ndf',--次数据文件物理名称
SIZE=20,--次数据文件初始大小为20MB
MAXSIZE=100,--次数据文件最大限制为100MB
FILEGROWTH=1)--次数据文件增长速度为1MB
LOGON--定义事务日志文件
(NAME=employeelog1,--事务日志文件逻辑名文件
FILENAME='e:
\sql_log\employeelog1.ldf',--事务日志文件物理名称
SIZE=10,--初始大小为10MB
MAXSIZE=50,--最大限制为50MB
FILEGROWTH=1),--增长速度为1MB
(NAME=employeelog2,--事务日志逻辑文件名
FILENAME='e:
\sql_log\employeelog2.ldf',--事务日志文件物理名称
SIZE=10,--初始大小为10MB
MAXSIZE=50,--最大限制为50MB
FILEGROWTH=1)--增长速度为1MB
【例5-3】
CREATEDATABASEtest
ONPRIMARY--定义在主文件组上的文件
(NAME=pri_file1,
FILENAME='e:
\sql_data\pri_file1.mdf',
SIZE=10,MAXSIZE=50,FILEGROWTH=15%),
(NAME=pri_file2,
FILENAME='e:
\sql_data\pri_file2.ndf',
SIZE=10,MAXSIZE=50,FILEGROWTH=15%),
FILEGROUPGrp1--定义在次文件组Grp1上的文件
(NAME=Grp1_file1,
FILENAME='e:
\sql_data\Grp1_file1.ndf',
SIZE=10,MAXSIZE=50,FILEGROWTH=5),
(NAME=Grp1_file2,
FILENAME='e:
\sql_data\Grp1_file2.ndf',
SIZE=10,MAXSIZE=50,FILEGROWTH=5),
FILEGROUPGrp2--定义在次文件组Grp2上的文件
(NAME=Grp2_file1,
FILENAME='e:
\sql_data\Grp2_file1.ndf',
SIZE=10,MAXSIZE=50,FILEGROWTH=5),
(NAME=Grp2_file2,
FILENAME='e:
\sql_data\Grp2_file2.ndf',
SIZE=10,MAXSIZE=50,FILEGROWTH=5)
LOGON--定义事务日志文件
(NAME='test_log',
FILENAME='e:
\sql_log\test_log.ldf',
SIZE=5,MAXSIZE=25,FILEGROWTH=5)
【例5-4】
ALTERDATABASEemployees--修改数据库employees
ADDFILEGROUPdata1--添加文件组data1
ALTERDATABASEemployees--修改数据库employees
ADDFILE--添加数据文件
(NAME=employee3,--逻辑文件名
FILENAME='e:
\sql_data\employee3.ndf',--物理文件名
SIZE=1,--定义文件大小
MAXSIZE=50,--定义文件最大限制
FILEGROWTH=1),--定义文件增长量
(NAME=employee4,
FILENAME='e:
\sql_data\employee4.ndf',
SIZE=2,
MAXSIZE=50,
FILEGROWTH=10%)
TOFILEGROUPdata1--将以上两个文件添加到data1文件组
ALTERDATABASEemployees
ADDLOGFILE--添加日志文件
(NAME=employeelog3,
FILENAME='e:
\sql_log\employeelog3.ldf',
SIZE=1,
MAXSIZE=50,
FILEGROWTH=1)
【例5-5】
ALTERDATABASEemployees
REMOVEFILEemployee4
【例5-6】
ALTERDATABASEemployees
MODIFYFILE
(NAME=employee3,
SIZE=5MB)
【例5-7】
ALTERDATABASEemployees
MODIFYNAME=MyEmployees
或:
EXECsp_renamedb'employees','MyEmployees'
【例5-8】
DROPDATABASEcompany
【例5-9】
EXECsp_addumpdevice@devtype='disk',
@logicalname='copy1',
@physicalname='d:
\Mybackup\company.bak'
或:
EXECsp_addumpdevice'disk','copy1','d:
\Mybackup\company.bak'
【例5-10】
EXECsp_addumpdevice'disk','copy2','\\teacher\backup\company1.bak'
【例5-11】
EXECsp_addumpdevice'tape','tapedevice','\\.\TAPE0'
【例5-12】
EXECsp_dropdevice'tapedevice'
【例5-13】
EXECsp_dropdevice'copy1','DELFILE'
【例5-14】
sp_addumpdevice'disk','mycopy1','d:
\mybackup\学生管理.bak'
--用BACKUPDATABASE备份学生管理数据库
BACKUPDATABASE学生管理
TOmycopy1
WITH
NAME='学生管理备份',
DESCRIPTION='完全备份'
【例5-15】
sp_addumpdevice'disk','STDcopy','\\ServerX\backup\student.dat'
BACKUPDATABASE学生管理TOSTDcopy
【例5-16】
BACKUPDATABASE学生管理TOmycopy1
WITHDIFFERENTIAL,
NOINIT,
NAME='学生管理备份',
DESCRIPTION='第一次差异备份'
【例5-17】
BACKUPDATABASEtest
FILE='grp1_file1'
TODISK='E:
\temp\grp1_file1.dat'
【例5-18】
BACKUPDATABASEtest
FILEGROUP='grp1'
TODISK='E:
\temp\group1.dat'
WITH
NAME='groupbackupoftest'
【例5-19】
EXECsp_addumpdevice'disk','MyLog1','e:
\temp\MyLog1.bak'
BACKUPLOG学生管理TOMyLog1
【例5-20】
方法一:
EXECsp_addumpdevice'disk','copy1','E:
\temp\职工.bak'
RESTOREDATABASE职工信息
FROMcopy1
WITH
MOVE'职工_data'
TO'e:
\sql_data\职工信息.mdf',
MOVE'职工_log'
TO'e:
\sql_log\职工信息.lgf',
REPLACE
方法二:
RESTOREDATABASE职工信息
FROMDISK='E:
\temp\职工.bak'
WITH
MOVE'职工_data'
TO'e:
\sql_data\职工信息.mdf',
MOVE'职工_log'
TO'e:
\sql_log\职工信息.lgf',
REPLACE
【例5-21】
--恢复完全备份
RESTOREDATABASE学生管理
FROMmycopy1
WITH
FILE=1,
NORECOVERY
--这时数据库无法使用,继续恢复差异备份
RESTOREDATABASE学生管理
FROMmycopy1
WITH
FILE=2,
RECOVERY--这时数据库可以使用
【例5-22】
--恢复完全备份
RESTOREDATABASE学生管理
FROMmycopy1
WITH
FILE=1,
NORECOVERY
--这时数据库无法使用,继续恢复差异备份
RESTOREDATABASE学生管理
FROMmycopy1
WITH
FILE=2,
NORECOVERY
--这时数据库仍然无法使用,继续恢复事务日志备份
RESTORELOG学生管理
FROMMylog1
WITH
RECOVERY--完成恢复,数据库可以使用
【例6-2】
CREATETABLE学生
(
记录编号intPRIMARYKEYIDENTITY(1,1),
姓名varchar(50)NOTNULL,
性别bitDEFAULT(0),
班级varchar(50)NOTNULL,
入学成绩floatDEFAULT(0),
所属院系intNOTNULL
)
【例6-3】
CREATETABLE#临时学生
(
学生姓名varchar(50)NOTNULL,
性别bitDEFAULT(0),
班级varchar(50)NOTNULL,
所属院系varchar(100)NOTNULL
)
【例6-4】
ALTERTABLE学生ADD新增列varchar(50)NULL
【例6-5】
ALTERTABLE学生ALTERCOLUMN新增列char(30)NOTNULL
【例6-6】
ALTERTABLE学生DROPCOLUMN新增列
【例6-7】
sp_rename学生,学生表
【例6-8】
sp_rename'学生.姓名','学生姓名','COLUMN'
【例6-9】
DROPTABLE学生
【例6-10】
CREATETABLE测试
(
记录编号int,
记录名称varchar(50),
CONSTRAINTPK_测试PRIMARYKEY(记录编号)
)
【例6-11】
CREATETABLE测试
(
记录编号int,
记录名称varchar(50),
CONSTRAINTPK_测试PRIMARYKEY(记录编号),
CONSTRAINTIX_测试UNIQUE(记录名称)
)
【例6-12】
CREATETABLE学生
(
记录编号intIDENTITY(1,1),--定义该列为标识列
姓名varchar(50)NOTNULL,
性别bitDEFAULT(0),--定义该列的默认值为0
班级varchar(50)NOTNULL,
入学成绩floatDEFAULT(0),
所属院系intNOTNULL
CONSTRAINTPK_学生PRIMARYKEY(记录编号),
CONSTRAINTIX_学生UNIQUE(姓名),
CONSTRAINTCK_学生CHECK(入学成绩>=0)
)
【例6-13】
CREATETABLE客户
(
记录编号intIDENTITY(1,1),
客户单位varchar(50)NOTNULL,
地址varchar(100)NOTNULL,
邮政编码varchar(10)NOTNULL,
CONSTRAINTPK_客户PRIMARYKEY(记录编号),
CONSTRAINTIX_客户UNIQUE(客户单位),
CONSTRAINTCK_客户CHECK(邮政编码LIKE'[0-9][0-9][0-9][0-9][0-9][0-9]')
)
【例6-14】
CREATETABLE联系人
(
记录编号intIDENTITY(1,1),
姓名varchar(50)NOTNULL,
性别char
(2)NOTNULL,
电话varchar(50)NOTNULL,
CONSTRAINTPK_联系人PRIMARYKEY(记录编号),
CONSTRAINTIX_联系人UNIQUE(姓名),
CONSTRAINTCK_联系人CHECK(性别IN('男','女'))
)
【例6-15】
ALTERTABLE测试
ADDCONSTRAINTDE_测试DEFAULT'默认名称'FOR记录名称
【例6-17】
ALTERTABLE学生
ADDCONSTRAINTFK_学生FOREIGNKEY(所属院系)
REFERENCES院系(记录编号)
【例6-19】
CREATERULE分数规则
AS@scoreBETWEEN0AND100
【例6-21】
EXECsp_bindrule'分数规则','学生
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 应用 例题 源代码