还剩6页未读,继续阅读
文本内容:
数据库原理实验程序实验一创建修改及删除数据库
1、正确建立与服务器的连接首先查看应用服务器是否已经启动开始菜单—〉程序—〉sqlserver—〉服务管理器开始菜单—〉程序—〉sqlserver—〉查询分析器,对话框选择以windows用户或sqlserver用户登录注意如果安装时选择以windows用户登录,在此应该也选择此项,如果安装时候选择混合模式登录,可以任意选择windows用户或sqlserver用户登录(以系统默认用户sa登录,密码选择安装时输入的或为空)
2、在查询分析器中建立数据库createdatabasestuonprimaryname=stu_dataprimary:表示此数据库文件为最主要文件,扩展名为.mdf每个数据库中唯一filename=d:\sqlex\stu_data.mdf‘’此处符号均为半角输入符号size=10filename用以指明数据库文件的具体物理位置及名称maxsize=50size文件的初始大小filegrowth=5maxsize文件的最大长度,如果此处为unlimited,表示文件可以无大小限制,直到增长至整个磁盘大小filegrowth文件的增长量name=stu1_datafilename=d:\sqlex\stu1_data.mdfsize=20logonname=stu_loglog日志文件,其建立方式同数据库文件,扩展名为.ldffilename=d:\sqlex\stu_log.ldfsize=10maxsize=50filegrowth=5name=stu1_logfilename=d:\sqlex\stu1_log.ldfsize=5maxsize=20filegrowth=
23.、使用查询分析器修改数据库alterdatabasestualter用于修改数据库或表文件modifyname=studmodifyname修改数据库名alterdatabasestudaddfilename=stud_dataaddfile增加数据库中的次要文件,扩展名为.ndffilename=d:\sqlex\stud_data.ndf建立方式同建立主要文件size=5maxsize=20name=stud1_datafilename=d:\sqlex\stud1_data.ndfsize=5maxsize=20alterdatabasestudaddlogfilename=stud_logaddlogfile增加日志文件filename=d:\sqlex\stud_log.ldfsize=5maxsize=20name=stud1_logfilename=d:\sqlex\stud1_log.ldfsize=5maxsize=20alterdatabasestudmodifyfilename=stud_datamodifyfile修改数据库文件的基本属性size=30maxsize=
504、显示或修改数据库文件的结构及各项属性Sp_helpdbstudSp_helpdb[数据库名]如果后面不接具体数据库名称,会给出当前所有服务器所管理的系统及用户数据库;给出具体名称则显示具体数据库的文件组成execsp_dboptionstudreadonlyfalse设置数据库是否为只读属性execsp_dboptionstuddbouseonlytrue设置数据库管理员访问权限ExecSp_dboption[数据库名][数据库选项][值]可以修改数据库的具体属性,属性可从企业管理器设置或查询sp_renamedbstudstuSp_renamedb旧数据库名,新数据库名当需要修改数据库名称时,数据库不可为只读属性,并且改名时数据库不可访问Usemasteruse[数据库名]激活数据库GoDropdatabasestudDropdatabase[数据库名]当数据库使用时不可以删除,因此使用use命令使当前激活数据库转移到master数据库之后删除实验二创建并管理表
1、创建数据库中的表usestu使用当前新建数据库gocreatetablestudentcreatetable[表名](列名数据类型属性…)建立数据库中的表student_idchar8notnullprimarykeyprimarykey建表的同时指定表的主键student_namechar8notnullsexbitnotnullbirthsmalldatetimenotnullclass_idchar6notnullntrance_datesmalldatetimenotnullcreatetablecoursecourse_idchar10notnullprimarykeycourse_namenvarchar20notnulltotal_periortinyintnullweek_periortinyintnullcredittinyintnullcreatetableclassclass_idchar6notnullprimarykeymonitornvarchar8nullclassroomvarchar13nullstudent_numsmallintnulldefault0default为列添加默认值约束createtablestudent_coursecourse_idchar10notnullprimarykeyclusteredstudent_idchar8notnullgradetinyintnotnullcredittinyintnotnullsemesterbitnullschool_yearchar9nullcreatetablestudent2student_idchar8notnullprimarykeystudent_namechar8notnullsexbitnotnullbirthsmalldatetimenotnullclass_idchar6notnullreferencesclassclass_idclass_iddchar6notnullconstraintfkClassidforeignkeyreferencesclassclass_idntrance_datesmalldatetimenotnullconstraint约束名(fkclassid)foreignkeyreferences表名class列名以class_id列作为本表的外键,其引用值从表class中的class_id列获取altertablestudentaddconstraintfkClassidforeignkeyclass_idreferencesclassclass_id将两个表的对应列设为主-外键
2、显示及修改表的结构sp_helpclassSp_help[表名]显示表的结构altertablestudent_course2altertable[表名]修改表结构,添加列addcus_amountfloatnulladd[列名1属性,列名2属性,列名3属性,…]cus_idtinyintnullcus_namechar8notnullcus_datesmalldatenullaltertablestudent_course2dropcolumncus_amount1,dropcolumn[列名1列名2列名3…]从表中cus_date,cus_id删除某几列
3、删除表droptablestudent_coursedroptable[表名]删除数据表
4、添加表的约束完整性altertablestudentaddconstraint约束名default‘常量表达式’for字段名addconstraintdefSexdefault1forsex为表student的sex字段添加默认值约束createtablestudentsexbitconstraintdefSexdefault0列名数据类型CONSTRAINT约束名default常数/表达式创建表的同时规定默认值约束altertablestudent_courseaddconstraintchkGradecheckgrade0andgrade100altertablestudentaddconstraintchkEntrcheckentrance_dategetdatealtertablestudentaddconstraintchkBirthcheckbirthgetdateaddconstraint约束名check(具体规则)为已存在的表列添加检查约束getdate获取当前系统时间altertablestudentaddconstraintpkStudent_idprimarykeystudent_idaltertableclassaddconstraintpkClass_idprimarykeyclass_idaddconstraint约束名primarykey列名在指定表的选定字段上设置主键约束altertablestudent_courseaddconstraintpkStu_Couprimarykeystudent_idcourse_id为选定表的多个选定列设置联合主键约束,也可在企业管理器中使用ctrl键+鼠标选择同时指定多个列设置altertablecourseaddconstraintunCousuniquecourse_namealtertablestudentaddconstraintunStuuniquestudent_nameaddconstraint约束名unique列名为选定列指定唯一性约束createrulegrade_ruleas@grade=0and@grade=100createrule规则名as条件表达式条件表达式中的变量必须以@开头,可以是任何符合where子句语法规则的表达式要引用条件表达式必须借助于insert或update数据更新语句加入表的值sp_bindrulegrade_rulestudent_course.gradesp_bindrule规则名表名.列名将规则绑定到指定列上,注意每个指定列只能绑定一条规则,如果在已经绑定过规则的列上重复绑定另一规则,新规则将代替旧规则起作用sp_unbindrulestudent_course.gradesp_unbindrule表名.列名解除对指定列的规则绑定droprulegrade_ruledroprule规则名删除已经存在的规则createdefaultdefgradeas1;创建缺省值实验三数据更新
1、向表中插入记录insertstudent1values992002王洪01984-2-19922002-9-1insertstudent1values992003李华11984-11-39922002-9-1insertstudent1values992004孙伟11984-7-49922002-9-1insertstudent1values992005林菲01984-4-79922002-9-1使用INSERTINTO表名VALUES(符合数据类型的表项值)selectstudent_idstudent_namesexbirthclass_idntrance_dateintostudentfromstudent1使用SELECT列名1,列名2,…INTO新表名WHERE条件通过从已存在的表中提取数据建立新表insertintostudentselectstudent_idstudent_namesexbirthclass_idntrance_datefromstudent1使用INSERTINTO表名1SELECT列名1,列名2,…FROM表名2WHERE条件从现有表中拷贝数据到另一个表
2、修改表中的记录updatestudentsetsex=1wherestudent_id=992001updatestudentsetbirth=1985-1-12wherestudent_name=李东updatestudentsetstudent_name=林非sex=1birth=1984-7-21wherestudent_id=992005使用UPDATE表名SET列名=值,列名=值,…WHERE条件表达式(用于指定行)
3、删除表中的记录deletestudent1wherestudent_id=992004使用DELETEFROM表名WHERE条件删除指定的表中记录deletestudenttruncatetablestudent使用DELETE表名或TRUNCATETABLE表名清空选定表中的所有记录区别在于后者的速度更快,而且不解除相关起作用的触发器与DROP命令的区别在于前者只清空表中记录,不涉及表的结构,完成后表仍然存在,只是变成空白表,而后者是清除记录连同表结构在内的所有表的相关信息,作用完成后表不存在
4、修改列的名称execsp_renamestudent.ntrance_dateentrance_dateexecsp_rename表名.旧列名新列名对于尚未输入数据记录的空白表,可以通过上面语句修改列的名称,执行这个语句有可能破坏已存在的存储过程或脚本程序,因此对非空白表推荐以下通过列复制的过程修改列名altertablestudentaddentrance_datesmalldatetimeupdatestudentsetentrance_date=ntrance_datealtertablestudentdropcolumnntrance_date以上语句实现列名的更改,过程为新建列—〉属性及约束及数据记录从现有列中拷贝—〉删除旧列,此操作可以保证不发生数据丢失或改变原有属性实验四数据查询
1、查看表中所有已经输入的数据记录select*fromstudent查看表中所有记录情况使用SELECT*FROM表名WHERE条件查看符合条件的表记录selectstudent_idstudent_namefromstudentselect字段名1字段名2,…from表名查询指定表中的某几个字段
3、查询时使用标题信息更改列标题的显示selectstudent_idas学号student_nameas学生姓名class_idas班级号fromstudentselect字段名1as标题信息1字段名2as标题信息2字段名3as标题信息3from表名
4、查询条件WHERE子句select*fromstudentwhereclass_idin990992select*fromstudentwhereclass_idbetween990and992select*fromstudentwherestudent_namelike__菲select*fromstudentwherestudent_namelike%菲select*fromstudentwherestudent_namelike‘_虹%orstudent_namelike‘_红%select*fromstudentwherestudent_namenotlike‘_虹%andstudent_namelike‘_红%注意通配符的使用‘_’表示替代单个字符‘%’表示替代多个字符‘[]’表示属于一定范围内的值‘[^]’表示不属于一定范围内的值,与上者相反
5、限制查询结果SELECTDISTINCTclass_idFROMstudentORDERBYASC排除重复记录的显示并按照升序排列显示结果
6、对查询结果排序SELECTstudent_idstudent_nameclass_idFROMstudentORDERBYclass_idDESCstudent_nameASCDESC降序ASC升序
7、多表查询视图
1、usejwglgocreateviewstud_view1asselect*fromstudentwheresex=1createviewstud_view2asselect*fromstudentwheresex=1createviewstud_view3asselect*fromstud_view1whereclass=992视图的更名sp_renamestud_view2stud_view4修改视图alterviewstud_view4asselect*fromstudentwheresex=0删除视图dropviewstud_view4从视图中查select*fromstud_view1wherestudent_name=许小姐andclassname=993’向视图中插入数据insertintostud_view1values992009赵国19921984-3-22002-9-1。