数据库原理与应用(SQLServer)练习题-1-实验1数据库操作1.创建数据库:操作1.1:创建一个test数据库,其主数据文件逻辑名test_data,物理文件名test_data.mdf,初始大小10MB,最大尺寸为无限大,增长速度1MB;数据库日志文件逻辑名称为test_log,物理文件名为test_log.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为10%。参考答案:createdatabaseTestONprimary(name=test_data,filename='d:\test\test_data.mdf',size=5MB,maxsize=unlimited,filegrowth=1MB)LOGON(name=test_log,filename='d:\test\test_log.ldf',size=1MB,maxsize=5MB,filegrowth=10%)GO2.查看数据库属性:操作1.2:使用T-SQL语句查看数据库test属性参考答案:EXECsp_helpdbtest3.删除数据库:操作1.3:使用T-SQL语句删除数据库test参考答案:dropdatabaseTest实验2表操作1.创建表:操作2.1:创建学生表:表名:student说明:学生基本信息表属性列数据类型长度空值列约束说明st_idnVarChar9NotNullPK学生学号数据库原理与应用(SQLServer)练习题-2-st_nmnVarChar8NotNull学生姓名st_sexnVarChar2Null学生性别st_birthdatetimeNull出生日期st_scoreintNull入学成绩st_datedatetimeNull入学日期st_fromnChar20Null学生来源st_dpidnVarChar2Null所在系编号st_mnttinyintNull学生职务参考答案:USEtestGOCREATETABLEstudent(st_idnVarChar(9)primarykeyNOTNULL,st_nmnVarChar(8)NOTNULL,st_sexnVarChar(2)NULL,st_birthdatetimeNULL,st_scoreintNULL,st_datedatetimeNULL,st_fromnVarChar(20)NULL,st_dpidnVarChar(2)NULL,st_mnttinyintNULL)GO操作2.2:创建课程信息表:表名:couse说明:课程信息表属性列数据类型长度空值列约束说明cs_idnVarChar4NotNullPK课程编号cs_nmnVarChar20NotNull课程名称cs_tmintNull课程学时cs_scintNull课程学分参考答案:USEtestGOCREATETABLEcouse(cs_idnVarChar(4)primarykeyNOTNULL,cs_nmnVarChar(20)NOTNULL,cs_tmintNULL,cs_scintNULL)GO操作2.3:创建选课表:表名:slt_couse说明:选课表数据库原理与应用(SQLServer)练习题-3-属性列数据类型长度空值列约束说明cs_idnVarChar4NotNullFK课程编号st_idnVarChar9NotNullFK学生编号scoreintNull课程成绩sltdatedatetimeNull选课日期参考答案:USEtestGOCREATETABLEcouse(cs_idnVarChar(4)NOTNULL,st_idnVarChar(9)NOTNULL,scoreintNULL,sltdatedatetimeNULL)GO操作2.4:创建院系信息表:表名:dept说明:院系信息表属性列数据类型长度空值列约束说明dp_idnVarChar2NotNull系编号dp_nmnVarChar20NotNull院系名称dp_drtnVarChar8Null院系主任dt_telnVarChar12Null联系电话参考答案:USEtestGOCREATETABLEdept(dp_idnVarChar(2)NOTNULL,dp_nmnVarChar(20)NOTNULL,dp_drtnVarChar(8)NULL,dp_telnVarChar(12)NULL)GO2.修改表结构:(1)向表中添加列:操作2.5:为“dept”表添加“dp_count”列(数据类型为nvarchar,长度为3,允许为空)参考答案:ALTERTABLEdeptADDdp_countnvarchar(3)NULL(2)修改列数据类型:操作2.6:修改“dept”表的“dp_count”列数据类型为int参考答案:ALTERTABLEdeptALTERCOLUMNdp_countintNULL数据库原理与应用(SQLServer)练习题-4-(3)删除表中指定列:操作2.7:删除“dept”表的“dp_count”列参考答案:ALTERTABLEdeptDROPCOLUMNdp_count3.删除表操作2.8:删除“dept”表参考答案:DROPTABLEstudent4.向表中输入数据记录操作2.9:分别向“student”表、“couse”表、“slt_couse”表、“dept”表中输入数据记录实验3数据完整性1.空值约束(NULL)操作3.1:将student表中的st_sex列属性更改为NOTNULL参考答案:ALTERTABLEstudentALTERCOLUMEst_nmnVarChar(8)NOTNULL2.默认值约束(DEFAULT)操作3.2:将student表中的st_from列默认值设置为“陕西省”参考答案:ALTERTABLEstudentADDDEFAULT'陕西省'FORst_from3.默认值对象操作3.3:创建默认值对象df_today为当前日期,并将其绑定到slt_couse表中的sltdate列,然后取消绑定,最后删除默认值对象df_today。参考答案:CREATEDEFAULTdf_todayASGetdate()GOEXECsp_bindefaultdf_today,'slt_couse.sltdate'GOEXECsp_unbindefault'slt_couse.sltdate'GODROPDEFAULTdf_todayGO4.检查约束(CHECK)操作3.4:将slt_couse表中的score列的检查约束设置为=0且=100参考答案:ALTERTABLEslt_couseADDCHECK(score=0ANDscore=100)数据库原理与应用(SQLServer)练习题-5-5.规则约束对象操作3.5:创建规则约束对象rl_sex,用于检查性别的取值仅限于“男”和“女”,并将其绑定到student表中的st_sex列,然后取消绑定,最后删除规则约束对象rl_sex。参考答案:CREATERULErl_sexAS@chksex’男’OR@chksex=’女’或CREATERULErl_sexAS@chksexIN(’男’,’女’)GOEXECsp_bindrulerl_sex,'student.st_sex'GOEXECsp_unbindrule'student.st_sex'GODROPRULErl_sexGO6.主键操作3.6:将dept表中的dp_id列设置为主键参考答案:ALTERTABLEdeptADDPRIMARYKEY(dp_id)7.唯一性约束(UNIQUE)操作3.7:将dept表中的dp_nm列设置为唯一性约束参考答案:ALTERTABLEdeptADDUNIQUE(dp_nm)8.标识列操作3.8:向slt_couse表中添加标识列id,第1行默认值为1,相邻两个标识列间的增量为1参考答案:ALTERTABLEslt_couseADDidINTIDENTITY(1,1)NOTNULL9.外键(FOREIGNKEY)操作3.9:被参照表为dept,参照表为student参考答案:ALTERTABLEstudentADDFOREIGNKEY(st_dpid)REFERENCESdept(dp_id)实验4数据更新1.表中插入数据操作4.1:向dept表插入一条记录,系号11,系名自动控制系,系主任为李其余,电话81234567INSERTINTOdeptVALUES('11','自动控制系','李其余','81234567')操作4.2:向student表插入一条记录,学号070201001,姓名为王小五,性别为男,出生日期为1990年9月9日,系号为11,其余字段为NULL或默认值INSERTINTOstudent(st_id,st_nm,st_sex,st_birth,st_dpid)数据库原理与应用(SQLServer)练习题-6-VALUES('070201001','王小五','男','1990.9.9','11')操作4.3:向couse表插入一条记录,课程号1234,课程名为操作系统,其余字段为NULL或默认值INSERTINTOcouse(cs_id,cs_nm)VALUES('1234','操作系统')操作4.4:向slt_couse表插入一条记录,课程号1234,学名070201001,其余字段为NULL或默认值INSERTINTOslt_couse(cs_id,st_id)VALUES('1234','070201001')2.修改表中数据操作4.5:修改student表记录,将王小五的入学成绩改为88UPDATEstudentSETst_score=88WHEREst_nm='王小五'操作4.6:修改couse表记录,将所有记录的学分改为4,学时改为64UPDATEcouseSETcs_tm=64,cs_sc=4操作4.7:修改slt_couse表记录,将课程号为1234,学名为070201001的记录的成绩改为77UPDATEslt_couseSETscore=77WHEREcs_id='1234'ANDst_id='070201001'3.删除表中数据操作4.8:删除slt_couse表记录,将课程号为1234,学名为070201001的记录删除DELETEFROMslt_couseWHEREcs_id='1234'ANDst_id='070201001'操作4.9:删除couse表记录,将课程号为1234的记录删除DELETEFROMcouseWHEREcs_id='1234'实验5数据查询(1)——简单查询(1)查询表中所有的列操作5.1:查询所有系的信息SELECT*FROMdept(2)查询表中指定列的信息操作5.2:查询所有的课程号与课程名称SELECTcs_id,cs_nmFROMcouse(3)在查询列表中使用列表达式操作5.3:在查询student表时使用列表达式:入学成绩+400SELECTst_id,st_nm,st_score,st_score+400ASnew_scoreFROMstudent(4)重新命名查询结果操作5.4:使用AS关键字为dept表中属性指定列名:系号、系名、系主任、联系电话SELECTdp_idAS系号,dp_nmAS系名,dp_drtAS系主任,dp_telAS联系电话FROMdept操作5.5:使用=号为couse表中属性指定列名:课程号、课程名、学时(=cs_sc*16)、学分SELECT课程号=cs_id,课程名=cs_nm,学分=cs_sc,学时=cs_sc*16FROMcouse(5)增加说明列操作5.6:查询dept表的系号、系名和系主任,向查询结果中插入说明列:系号、系名和系主任SELECT'系号:',st_id,'系名:',st_nm,'系主任:',st_drtFROMdept(6)查询列表中使用系统函数操作5.7:显