数据库实验报告附图.docx
- 文档编号:3661463
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:34
- 大小:3.37MB
数据库实验报告附图.docx
《数据库实验报告附图.docx》由会员分享,可在线阅读,更多相关《数据库实验报告附图.docx(34页珍藏版)》请在冰豆网上搜索。
数据库实验报告附图
实验一创建修改及删除数据库
1、正确建立与服务器的连接
首先查看应用服务器是否已经启动:
开始菜单—〉程序—〉sqlserver—〉服务管理器,点击运行的红色按钮,启动服务。
2、建立数据库
createdatabasestu
onprimary(name=stu_data,--primary:
表示此数据库文件为最主要文件,属于
primary文件组,扩展名为.mdf,每个数据库中唯一--
filename='d:
\sqlex\stu_data.mdf',--‘’:
此处符号均为半角输入符号--
size=10,--filename:
用以指明数据库文件的具体物理位置及名称--
maxsize=50,--size:
文件的初始大小--
filegrowth=5),--maxsize:
文件的最大长度,如果此处为unlimited,表示
文件可以无大小限制,直到增长至整个磁盘大小--
(name=stu1_data,--filegrowth:
文件的增长量--
filename='d:
\sqlex\stu_data.ndf',
size=20)
logon(name=stu_log,--log:
日志文件,其建立方式同数据库文件,扩展名为.ldf--
filename='d:
\sqlex\stu_log.ldf',
size=10,
maxsize=50,
filegrowth=5),
(name=stu1_log,
filename='d:
\sqlex\stu1_log.ldf',
size=5,
maxsize=20,
filegrowth=2)
3.、使用查询分析器修改数据库
alterdatabasestualter:
用于修改数据库或表文件
modifyname=studmodifyname:
修改数据库名
alterdatabasestud
addfile(name=stud_data,addfile:
增加数据库中的次要文件,扩展名为.ndf
filename='d:
\sqlex\stud_data.ndf',建立方式同建立主要文件
size=5,
maxsize=20),
(name=stud1_data,
filename='d:
\sqlex\stud1_data.ndf',
size=5,
maxsize=20)
alterdatabasestud
addlogfile(name=stud_log,addlogfile:
增加日志文件
filename='d:
\sqlex\stud_log.ldf',
size=5,
maxsize=20),
(name=stud1_log,
filename='d:
\sqlex\stud1_log.ldf',
size=5,
maxsize=20)
alterdatabasestud
modifyfile(name=stud_data,modifyfile:
修改数据库文件的基本属性
size=30,
maxsize=50)
4、显示或修改数据库文件的结构及各项属性
数据库的快速察看:
Sp_helpdb[数据库名]:
如果后面不接具体数据库名称,会给出当前所有服务器所管理的系统及用户数据库;给出具体名称则显示具体数据库的文件组成。
ExecSp_helpdbstud
数据库属性的设置:
ExecSp_dboption[数据库名][数据库选项][值]:
可以修改数据库的具体属性,属性可从企业管理器设置或查询
execsp_dboption'stud','readonly','true'设置数据库为只读属性
数据库改名:
sp_renamedboldname,newname
例:
Sp_renamedbstud,stu
Usemasteruse[数据库名]:
激活数据库
Go
5、删除数据库
基本语句;dropdatabasedbname数据库名
例:
Dropdatabase[数据库名]:
当数据库使用时不可以删除,因此使用use命令使当前激活数据库转移到master数据库之后删除。
Dropdatabasestud
6、备份数据库:
当我们需要在其他位置保存数据库时,可以利用sql语句保存备份文件:
例:
---创建备份数据的device
USEmaster
EXECsp_addumpdevice'disk','testBack','d:
\beifen\MyNwind_1.dat'
//添加数据库到磁盘,命名为testBack,位置在d盘beifen的MyNwind-1.dat文件中
---开始备份
BACKUPDATABASEstuTOtestBack
在企业管理器中进行备份:
打开控制台根目录,在数据库文件夹点选右键-〉所有任务-〉备份数据库,在弹出窗口中常规选项卡中选择需要备份的数据库-〉目的-〉添加-〉弹出对话框中选择其他位置并命名。
7、数据库的还原:
需要在另外计算机的sqlserver中还原备份好的数据库,在企业管理器中右键点选数据库-〉所有任务-〉还原,根据需要完全或部分还原数据库。
实验二创建并管理表
1、创建数据库中的表
(1)在企业管理器中创建:
展开数据库,右键点击表-〉新建表,弹出对话框中输入表属性列,完成后关闭对话框同时对表起名。
之后在窗口中右键选择新建的表-〉打开表,输入表中的数据。
(2)查询分析器中创建新表:
基本语句:
createtable[表名](列名数据类型属性…)
createtabletabname(col1type1[notnull][primarykey],col2type2[notnull],..)
例:
usestu//使用当前新建数据库
go
createtablestudent(//创建student表
student_idchar(8)notnull,
student_namechar(8)notnull,
sexbitnotnull,
birthsmalldatetimenotnull,
class_idchar(6)notnull,
ntrance_datesmalldatetimenotnull)
createtablecourse(//创建course表
course_idchar(10)notnullprimarykey,
course_namenvarchar(20)notnull,
total_periortinyintnull,
week_periortinyintnull,
credittinyintnull)
指定自动增长字段:
每个表只能有一个自动编号字段,该字段不可自行修改,不允接受null值。
createtablestudent(
student_idintidentity(1,1)notnull,
student_namechar(8)notnull,
sexbitnotnull,
birthsmalldatetimenotnull)
创建计算字段:
可以定义字段为表达式,用来自动取得结果。
createtablegrade(
ClassNamevarchar(10)notnull,
Mathnumeric(3,1),
Englishnumeric(3,1),
Cprogramnumeric(3,1),
Totalasmath+English+Cprogram,
Averageas(math+English+Cprogram)/3
)
2、显示及修改表的结构
Sp_help[表名]:
显示表的结构
例:
sp_helpstudent
(1)增加一个或多个属性列:
基本语句:
Altertabletabnameaddcolumncoltype
例:
altertablestudentaltertable[表名]:
修改表结构,添加列
addageintnull,add[列名1属性,列名2属性,列名3属性,…]
(2)删除数据表及属性列:
删除表列,例:
altertablestudent
dropcolumnagedropcolumn[列名1,列名2,列名3,…]:
从表中删除某几列
删除数据表
droptable表名1,[表名2],[表名2],……:
删除数据表
droptablestudent
(3)为数据表指定主外键约束;
A、建立表的同时指定表的主键或外键:
例:
usestu//使用当前新建数据库
go
createtablestudent(
student_idchar(8)notnullprimarykey,//primarykey:
建表的同时指定表的主键
student_namechar(8)notnull,
sexbitnotnull,
birthsmalldatetimenotnull,
class_idchar(6)notnull,
ntrance_datesmalldatetimenotnull)
createtableclass
(class_idchar(6)notnullprimarykey,
monitornvarchar(8)null,
classroomvarchar(13)null,
student_numsmallintnulldefault0)//default:
为列添加默认值约束
createtablestudent_course
(course_idchar(10)notnullprimarykeyclustered,
student_idchar(8)notnull,
gradetinyintnotnull,
credittinyintnotnull,
semesterbitnull,
school_yearchar(9)null)
createtablestudent2
(student_idchar(8)notnullprimarykey,
student_namechar(8)notnull,
sexbitnotnull,
birthsmalldatetimenotnull,
class_idchar(6)notnullreferencesclass(class_id),
class_iddchar(6)notnullconstraintfkClassidforeignkeyreferencesclass(class_id),
ntrance_datesmalldatetimenotnull)
B、为已存在的表创建主外键约束:
为已经建立的表添加主键约束:
添加主键:
Altertabletabnameaddprimarykey(col)
例:
Altertablegradeaddprimarykey(ClassName)
类似的删除主键:
Altertabletabnamedropprimarykey(col)
(4)为数据表创建约束完整性条件
默认值约束default:
如果字段拥有默认值,在添加数据时如未指定具体值,系统会将定义好的默认值填充。
Default定义:
在创建表字段的同时,在其属性标签中指定默认值,仅在该字段起作用。
Default对象:
右键单击“默认”图标,创建默认值对象,可以绑定多个属性列起作用。
基本语句:
addconstraint约束名default‘常量表达式’for字段名
例:
altertablestudent
addconstraintdefSexdefault1forsex为表student的sex字段添加默认值约束
检查约束check:
企业管理器中:
打开创建表的窗口定义完成所有字段后,单击工具栏上“表和索引数型”按钮,打开属性对话框,选中check约束标签。
点击“新建”按钮,创建新的check约束。
为新建约束起名后输入约束表达式。
Sex=’1’orsex=’0’
查询分析器中:
使用altertable命令为字段添加约束。
altertablestudent_course
addconstraintchkGradecheck(grade>0andgrade<100)
删除check约束:
altertable表名dropconstraint约束名1,约束名2,……
例:
altertablestudent_coursedropconstraintchkGrade
实验三数据更新
1、向表中插入记录
(1)插入语句:
insertintotable1(field1,field2)values(value1,value2)
例:
insertstudent1
values('992002','王洪','0','1984-2-1','992','2002-9-1')
insertstudent1
values('992003','李华','1','1984-11-3','992','2002-9-1')
insertstudent1
values('992004','孙伟','1','1984-7-4','992','2002-9-1')
insertstudent1
values('992005','林菲','0','1984-4-7','992','2002-9-1')
(2)插入语句:
insert[into]table_nameselect_state
使用
INSERTINTO表1SELECT列名1,列名2,…FROM表2WHERE条件表达式
从现有表的查询结果直接存储至另一个现有空表,也可以将一个或多个表中的数据经过汇总、统计、运算后的结果存放到另一个表。
例:
a:
insertintostudent1
selectstudent_id,student_name,sex,birth,class_id,ntrance_date
fromstudent
(3)插入语句:
select列名1,列名2,…intotable_name
使用SELECT列名1,列名2,…INTO新表名WHERE条件表达式
通过从已存在的表中提取数据字段建立新表
例:
selectstudent_id,student_name,sex,birth,class_id,ntrance_date
intostudent4
fromstudentwherestudent_idbetween992002and992005
2、修改表中的记录
更新语句:
updatetable_namesetcolumn=value|default|Nullwhere范围
使用UPDATE表名SET列名=值,列名=值,…WHERE条件表达式(用于指定行)例:
updatestudent
setsex=1
wherestudent_id=992002
updatestudent
setbirth='1985-1-12'
wherestudent_name='李华'
updatestudent
setstudent_name='林非',sex=1,birth=1984-7-21
wherestudent_id='992005
3、删除表中的记录
删除语句:
deletefromtable1where条件范围
使用DELETEFROM表名WHERE条件删除指定的表中记录
例:
deletestudent1
wherestudent_id='992004//删除序号为992004的学生记录
清空选定表中的所有记录:
DELETE表名
TRUNCATETABLE表名
例:
deletestudent
4、修改属性列的名称
execsp_rename'表名.旧列名','新列名'
execsp_rename'student.ntrance_date','entrance_date'
。
通过使用update命令进行字段复制的过程更改列名:
altertablestudent
addentrance_datesmalldatetime//在表中增加一个名为entrance_date的新字段
updatestudent
setentrance_date=ntrance_date//从表中已存在的字段中拷贝字段的值
altertablestudent
dropcolumnntrance_date//拷贝完成后删除原有字段,列名更改完毕。
实验四数据查询
基本选择语句:
select*fromtable1where范围
1、查看表中所有已经输入的数据记录
select*fromstudent//查看表中所有记录情况
使用SELECT*FROM表名WHERE条件查看符合条件的表记录
selectstudent_id,student_namefromstudent
2、查询时希望结果符合用户预期:
(1)使用标题信息更改列标题的显示:
A、Select学号=student_id,
学生姓名=student_name,
班级号=class_id
fromstudent
B、selectstudent_idas学号,
student_nameas学生姓名,
class_idas班级号
fromstudent
(2)更改查询结果的字段排列顺序
selectclass_id,student_name,student_idfromstudent//可以在查询结果中更改源表中的字段排序顺序。
3、使用关键字All和Distinct限制查询结果
显示查询结果时排除重复记录。
SELECTDISTINCTclass_idFROMstudentORDERBYdesc
上面语句表示在student表中查询该表都包含哪些班级的信息。
相应班级的纪录只显示一次。
4、使用INTO关键字将查询结果输出至某个新表:
例:
select*intomynewtablefromstudent//将student表中所有记录查询结果保存到新表mynewtable中
5、查询条件WHERE子句。
Where子句的功能是提取设置了符合条件的数据记录,格式:
SELECT字段名
From原表名
Where查询条件
例:
Selectstudent_namefromstudentwherestudent_id=’992002’
6、通配符的使用:
“*”:
表示表中的所有字段,应用于select参数中
例:
select*fromstudentwhereclass_idin('990','992')
以下通配符均只能应用于where子句中,通常与like关键字联合使用:
“_”:
表示替代单个字符;
“%”:
表示替代0或任意多个字符
例:
select*fromstudentwherestudent_namelike('_非')
select*fromstudentwherestudent_namenotlike(‘_洪%')
“[]”:
表示属于一定范围内的值
“[^]”:
表示不属于一定范围内的值,与上者相反
例:
selectstudent_name,student_idfromstudent
wherestudent_namelike'[ACD张李]%'
//表示查找学生表中第一个字符为A、C、D或者中文姓为张或李的学生名单
ORDERBY表达式[ASC|DESC][……N]
例:
SELECTstudent_id,student_name,class_idFROMstudent
ORDERBYclass_idDESC,student_nameASC
//按班级编号升序排列查询结果
7、使用GROUPBY子句完成数据分组小计
如果需要根据一个或多个组的数值将查询中的记录进行分组汇总,必须通过groupby子句完成。
GROUPBY表达式[……n]
例:
selectcount(*)班级人数fromstudent
Groupbyclass_id
//查询每班人数,并按班级输出结果
8、分组查询HAVING子句的使用
HAVING子句用于搜索分组数据,经常与groupby子句连用。
单独使用having子句时,其作用相当于where子句,用于搜索单个符合条件的记录,但不推荐单独使用。
例:
selectclass_idfromstudent
Wheresex='1'
groupbyclass_id
Havingcount(*)>1
//查询男生数大于1的班级号
A:
UNION运算符:
并集(union,Unionall)
把两个结果集水平合并起来。
UNION运算符通过组合其他两个结果表(例如TABLE1和TABLE2)并消去表中任何重复行而派生出一个结果表。
当ALL随UNION一起使用时(即UNIONALL),不消除重复行。
两种情况下,派生表的每一行不是来自TABLE1就是来自TABLE2。
基本语句;SELECT*FROMA
UNION
SELECT*FROMB
例:
select*intostudentfromstudent
Unionall
Select*fromstudent1
Unionall
Select*fromstudent2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告 附图