附录C 数据库上机实验
- 格式:doc
- 大小:395.87 KB
- 文档页数:16
数据库上机实验报告数据库上机实验网络1002 3100610055一、实验目的1.通过上机操作,加深对数据库理论知识的理解。
2.通过使用具体的微机DBMS(SQL Server),了解一种实际的数据库管理系统,并掌握其操作技术。
3.通过实际题目的上机实验,提高动手能力,提高分析问题和解决问题的能力。
二﹑实验题目某供应商(S)供应(SPJ)某种零件(P)给某个工程项目(J),其中一个供应商可以供给多个项目零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给,S﹑P﹑J﹑SPJ的数据见附表1。
三、实验报告实验报告按照各实验的实验报告内容来整理。
实验报告提交地址:ftp://202.195.168.13/(在“up”文件夹里的“《数据库系统原理A》上机实验”文件夹中找到班级文件夹)用户名:nianyi密码:123456实验报告命名规则:班级+学号+姓名,如“软件080101王鹏晓”。
四、考核上机实验采用书面分析、平时实验和最后抽查考核相结合的方法评定成绩。
实验一数据库的定义和建立一、实验目的要求学生熟练掌握和使用T-SQL﹑SQL Server对象资源管理器创建数据库﹑基本表和修改表结构,及向数据库输入数据的操作,学会创建和使用表的主码、外码和约束。
二、实验内容1﹑利用SQL Server对象资源管理器创建数据库和查看数据库属性;2﹑利用T-SQL创建基本表﹑确定表的主码、外码和相应的约束;3﹑利用SQL Server对象资源管理器创建表之间的关系图;4﹑利用T-SQL向数据库输入数据。
三、注意事项1﹑输入数据时要注意数据类型、主码和数据约束的限制。
2﹑注意数据库的主码﹑外码和数据约束的定义。
3、注意参照表和被参照表之间的关系,主码和外码间的关系。
四、实验报告内容1﹑创建基本表(包括表的主码、外码和相应的约束)的SQL语句;3﹑输入数据的SQL语句。
create table s(sno char(8) primary key,sname char(20) unique,statuss smallint,city char(20));create table p(pno char(8) primary key,pname char(20),color char(8),weightt smallint);create table j(jno char(8) primary key,jname char(20),city char(20));create table spj(sno char(8),pno char(8),jno char(8),qty smallint,primary key(sno,pno,jno),foreign key(sno) references s(sno),foreign key(pno) references p(pno), foreign key(jno) references j(jno));insertinto svalues('s1','精益','20','天津');insertinto svalues('s2','盛锡','10','北京');insertinto svalues('s3','东方红','30','北京'); insertinto svalues('s4','丰泰盛','20','天津'); insertinto svalues('s5','为民','30','上海');select*from s;insertinto pvalues('p1','螺母','红','12');insertinto pvalues('p2','螺栓','绿','17');into pvalues('p3','螺丝刀','蓝','14'); insert into pvalues('p4','螺丝刀','红','14'); insert into pvalues('p5','凸轮','蓝','40'); insert into pvalues('p6','齿轮','红','30'); select* from p;into jvalues('j1','三建','北京'); insert into jvalues('j2','一汽','长春'); insert into jvalues('j3','弹簧厂','天津'); insert into jvalues('j4','造船厂','天津'); insert into jvalues('j5','机车厂','唐山'); insert into jvalues('j6','无线电厂','常州');into jvalues('j7','半导体厂','南京'); select* from j;insertinto spjvalues('s1','p1','j1','200'); insertvalues('s1','p1','j3','100'); insert into spjvalues('s1','p1','j4','700'); insert into spjvalues('s1','p2','j2','100'); insert into spjvalues('s2','p3','j1','400'); insert into spjvalues('s2','p3','j2','200'); insert into spjvalues('s2','p3','j4','500'); insert into spjvalues('s2','p3','j5','400'); insert into spjvalues('s2','p5','j1','400'); insert into spjvalues('s2','p5','j2','100'); insert into spjvalues('s3','p1','j1','200'); insert into spjvalues('s3','p3','j1','200'); insert into spjvalues('s4','p5','j1','100'); insert into spjvalues('s4','p6','j3','300'); insert into spjvalues('s4','p6','j4','200'); insert into spjvalues('s5','p2','j4','100'); insertvalues('s5','p3','j1','200'); insert into spjvalues('s5','p6','j2','200'); insert into spjvalues('s5','p6','j4','500'); select* from spj;2﹑表之间的关系图;4、总结实验过程中遇到的问题及解决。
数据库上机实验报告试验内容1、数据表的建立基本表《简单的》带有主键带有外码约束的(外码来自其他表或者本表)2、数据表的修改添加删除列修改列属性类型添加删除约束(约束名)元组的添加,修改,删除删除数据表试验过程1、create table student(sno char(9) primary key ,sname char(20) unique,ssex char(2),sage smallint,sdept char(20));create table course(cno char(4) primary key,cname char(40),cpno char(4),ccredit smallint,foreign key (cpno) references course(cno) );create table sc(sno char(9),cno char(4),grade smallint,primary key (sno,cno),foreign key (sno) references student(sno), foreign key (cno) references course(cno), );例1、create table s(cno varchar(3),sname varchar(20),status int,city varchar(20),constraint pk_sno primary key(sno),);create table p(pno varchar(3),pname varchar(20),color varchar(3),weight int,constraint pk_pno primary key (pno),);create table j(jno varchar(3),jname varchar(20),city varchar(20),constraint pk_jno primary key(jno));例2、create table spj(sno varchar(3),pno varchar(3),jno varchar(3),qty int,constraint pk_spj primary key(sno,pno,jno), foreign key(sno) references s(sno),foreign key(pno) references p(pno),foreign key(jno) references j(jno),。
数据库上机实验报告_0数据库上机实验报告数据库上机实验报告试验内容1、数据表的建立基本表《简单的》带有主键带有外码约束的(外码来自其他表或者本表)2、数据表的修改添加删除列修改列属性类型添加删除约束(约束名)元组的添加,修改,删除删除数据表试验过程1、create table Student(Sno char(9) primary key , /*Sno是主码列级完整性约束条件*/Sname char(20) unique, /*Sname取唯一值*/Ssex char(2),Sage smallint, /*类型为smallint*/Sdept char(20) /*所在系*/);create table Course(Cno char(4) primary key, /*列级完整性约束条件,Cno是主码*/Cname char(40),Cpno char(4), /*Cpno的含义是先行课*/ Ccredit smallint,foreign key (Cpno) references Course(Cno)/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/);create table SC(Sno char(9),Cno char(4),Grade smallint,primary key (Sno,Cno),/*主码有两个属性构成,必须作为表级完整性进行定义*/ foreign key (Sno) references Student(Sno),/*表级完整性约束条件,Sno是外码,被参照表是Student*/ foreign key (Cno) references Course(Cno),/*表级完整性约束条件,Cno是外码,被参照表示Course*/);例1、create table S(Cno varchar(3), /*变长的字符串,输入2个字符就是两个字符不会补空格*/Sname varchar(20),Status int,city varchar(20),constraint pk_sno Primary key(Sno), /*约束条件的名字为pk_sno*/ );create table P(Pno varchar(3),Pname varchar(20),Color varchar(3),Weight int,constraint pk_Pno Primary key (Pno), /*约束条件的名字是pk_Pno*/ );create table J(Jno varchar(3),Jname varchar(20),City varchar(20),constraint pk_Jno primary key(Jno) /*约束条件的名字为pk_Jno*/);例2、create table SPJ(Sno varchar(3), /*第一个表中的主码*/Pno varchar(3),Jno varchar(3),QTY int, /*数量*/Constraint pk_SPJ primary key(Sno,Pno,Jno), /*主码由3个属性组成*/foreign key(Sno) references S(Sno),/*表级完整性约束条件,Sno是外码,被参照表是S*/foreign key(Pno) references P(Pno),/*表级完整性约束条件,Pno是外码,被参照表是P*/foreign key(Jno) references J(Jno),/*表级完整性约束条件,Jno是外码,被参照表是J*/);2、数据表的更改在S表中添加一个concat 列alter table s add concat varchar(20)在S表中删除concat 列alter table s drop column concat更改s表concat列的属性把长度由20改为30alter table s alter column concat varchar(30)联系方式名字为concat 修改属性为唯一的属性名为Con_concatalter table s add constraint Con_concat Unique(concat)删除约束关系con_concatalter table s drop Constraint Con_Concat/*插入一个元组*/insert into s Valus(‘S1’,’精益’,20,’天津’) /*20不能写成’20’*/试验中的问题的排除与总结:1、在创建SPJ时有三个实体所以从3个实体中取主码,还有一个数量属性也要写上主码由那3个主码确定2、更改一个数据库中数据表时一定要先使该数据库处于正在使用状态3、CONSTRAINT是可选关键字,表示PRIMARY KEY、NOT NULL、UNIQUE、FOREIGN KEY 或CHECK 约束定义的开始。
附录C 上机实验第4章上机实验下列实验均使用SQL Server 的SSMS工具实现。
1.用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A):数据库名为:学生数据库主要数据文件的逻辑文件名为:Students_data,存放在D:\Data文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。
),初始大小为:5MB,增长方式为自动增长,每次增加1MB。
日志文件的逻辑文件名字为:Students_log,也存放在D:\Data文件夹下,初始大小为:2MB,增长方式为自动增长,每次增加10%。
2.选用已建立的“学生数据库”,写出创建满足表C-1到4-4条件的表的SQL语句,并执行所写代码。
(注:“说明”部分不作为表定义内容)列名说明数据类型约束Sno学号普通编码定长字符串,长度为7主键Sname姓名普通编码定长字符串,长度为10非空Ssex性别普通编码定长字符串,长度为2取值范围:{男,女}Sage年龄微整型(tinyint)取值范围:15-45Sdept所在系普通编码不定长字符串,长度为20默认值为“计算机系”Sid身份证号普通编码定长字符串,长度为10取值不重Sdate入学日期日期默认为系统当前日期列名说明数据类型约束Cno课程号普通编码定长字符串,长度为10主键Cname课程名普通编码不定长字符串,长度为20非空Credit学时数整型取值大于0Semester学分小整型列名说明数据类型约束Sno学号普通编码定长字符串,长度为7主键,引用Student的外键Cno课程号普通编码定长字符串,长度为10主键,引用Course的外键Grade成绩小整型取值范围为0-100列名说明数据类型约束3. 写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。
(1)在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4)。
(2)为Teacher表中的Title列增加取值范围约束,取值范围为:{教授,副教授,讲师}。
附录C 上机实验第4章上机实验----------------------陈宇超,仅供参考------------------------------下列实验均使用SQL Server 的SSMS工具实现。
1.用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A):数据库名为:学生数据库主要数据文件的逻辑文件名为:Students_data,存放在D:\Data文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。
),初始大小为:5MB,增长方式为自动增长,每次增加1MB。
日志文件的逻辑文件名字为:Students_log,也存放在D:\Data文件夹下,初始大小为:2MB,增长方式为自动增长,每次增加10%。
2.选用已建立的“学生数据库”,写出创建满足表C-1到4-4条件的表的SQL语句,并执行所写代码。
(注:“说明”部分不作为表定义内容)列名说明数据类型约束Sno学号普通编码定长字符串,长度为7主键Sname姓名普通编码定长字符串,长度为10非空Ssex性别普通编码定长字符串,长度为2取值范围:{男,女}Sage年龄微整型(tinyint)取值范围:15-45Sdept所在系普通编码不定长字符串,长度为20默认值为“计算机系”Sid身份证号普通编码定长字符串,长度为10取值不重Sdate入学日期日期默认为系统当前日期列名说明数据类型约束Cno课程号普通编码定长字符串,长度为10主键Cname课程名普通编码不定长字符串,长度为20非空Credit学时数整型取值大于0Semester学分小整型列名说明数据类型约束Sno学号普通编码定长字符串,长度为7主键,引用Student的外键Cno课程号普通编码定长字符串,长度为10主键,引用Course的外键Grade成绩小整型取值范围为0-100表C-4 Teacher表结构列名说明数据类型约束Tno教师号普通编码定长字符串,长度为8非空Tname教师名普通编码定长字符串,长度为10非空Salary工资定点小数,小数点前4位,小数点后2位3. 写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。
一、复杂查询试验目旳1、掌握多表查询旳设计2、熟悉参数查询和记录查询设计试验内容1、创立多表查询2、设计带参数旳查询3、创立记录查询试验分题分析:1、查询出指定商品在规定日期旳销售详情(包括商品名称、销售单号、销售数量、销售单价、折扣、销售日期)(多表之间旳条件查询及参数查询)分析:(1)商品旳销售详情旳字段包括:销售单号、商品名称、销售数量、销售单价、折扣、销售日期和销售总额,为满足这些属性,应在显示表中选出“商品表”、“收货单表”和“售货单明细表”。
(2)为满足规定时间旳规定,对日期作参数查询,在“日期”列旳条件里面设置条件“Between [起始时间] And [截止时间]”,单击右键选择“参数”(如下图:)(3)在指定商品时,对商品设置参数,在商品列旳“条件里”键入“[请输入商品名称]”(4)在计算总额时,在最终一列位置输入体现式“总额: [售货单明细]![单价]*[数量]*(1-[折扣])”,因为在“商品表”和“收货单明细表”里面都具有单价,因此在计算总额时,应用生成器选中“收货单明细表”里面旳单价。
(注:冒号前为计算字段旳显示标题,冒号后为计算体现式),然后点击工具栏中旳总计按钮,在设计网格中出现新旳一栏选项“总计”,各字段默认值为“分组”,对应“总额”计算机字段旳位置点击下拉列表,选择“总计”,如图。
设计视图:运行:2、销售单旳销售额记录:按姓名查询某个销售员所销售旳所有售货单并记录出每个售货单旳总金额(在同一种查询中完成;提醒:销售员姓名、销售单ID为分组字段,新产生一种“总额”字段为总计字段)。
分析:(1) 按题目规定,销售单旳销售额记录应该包括字段:“销售员ID”、“销售员姓名”、“销售单ID”和“总额”;为了计算总额,还需要“数量”、“单价”、“折扣”为此,我们要从显示表中选择“售货单明细表”和“销售员表”,还应选择“售货单表”来连接“售货单明细表”和“销售员表”。
(2) 在查询指定旳销售员时,在“姓名”列旳“条件”里添加参数查询“[输入要查询旳销售员姓名:] ”(3) 在计算销售单总额时,在最终一列位置输入体现式“总额: [单价]*[数量]*(1-[折扣])”(注:冒号前为计算字段旳显示标题,冒号后为计算体现式),然后点击工具栏中旳总计按钮,在设计网格中出现新旳一栏选项“总计”,各字段默认值为“分组”,对应“总额”计算机字段旳位置点击下拉列表,选择“总计”,如图。
《Access(2021版)》上机实验1-上机实验9题目附录2附录2.1 上机实验1上机实验1.启动“MicroSoft Office Access 2021”,单击“文件”选项卡上左侧窗格的“帮助”,单击中间窗格上的“MicroSoft Office帮助”,便显出“Access帮助”窗口。
单击该帮助窗口中的“Access 2021入门”标题下的“Access 2021数据库设计基础”,便可选看列出的“数据库设计基础”的那些内容。
2.启动“MicroSoft Office Access 2021”,单击“文件”选项卡上左侧窗格的“帮助”,单击中间窗格上的“MicroSoft Of fice帮助”,便显出“Access帮助”窗口。
单击该帮助窗口中的“Access 2021入门”标题下的“Access 演示”,显出“演示”的主题列表,单击主题列表中的“演示:认识导航窗格”,便可进行观看。
同理,可查看其他的Access帮助信息。
附录2.2 上机实验21.在用户盘的根目录中(如G:\\)创建一个名为“上机实验”文件夹。
2.在“上机实验”文件夹中创建一个名为“学生管理系统.accdb”的数据库。
3.在“学生管理系统”数据库中创建如下的表:295Access数据库基础与应用教程(1)根据表3-2所示的“学系”表结构,创建一个表名为“学系”的表,主键是“学系代码”。
“学系”表中包含学系代码、学系名称、办公电话、学系简介和学系资料等字段。
表3-2 “学系”表结构字段名字段类型字段大小学系代码文本 2 学系名称文本 30 办公电话文本 11 学系简介备注学系资料附件(2)根据表3-3所示的“专业”表结构,创建一个表名为“专业”的表,主键是“专业代码”。
“专业”表中包含专业代码、专业名称、学制年限、学系代码和专业简介字段。
表3-3 “专业”表结构字段名字段类型字段大小专业代码文本 3 专业名称文本 30 学制年限数字整型学系代码文本 2 专业简介备注(3)根据表3-4所示的“班级”表结构,创建一个表名为“班级”的表,主键是“班级号”。
数据库上机实验报告数据库上机实验报告试验内容1、数据表的建立基本表《简单的》带有主键带有外码约束的(外码来自其他表或者本表)2、数据表的修改添加删除列修改列属性类型添加删除约束(约束名)元组的添加,修改,删除删除数据表试验过程1、createtablestudent(snochar(9)primarykey,/*sno是主码列级完整性约束条件*/snamechar(20)unique,/*sname取唯一值*/ssexchar(2),sagesmallint,/*类型为smallint*/sdeptchar(20)/*所在系*/);createtablecourse(cnochar(4)primarykey,/*列级完整性约束条件,cno是主码*/cnamechar(40),cpnochar(4),/*cpno的含义是先行课*/ccreditsmallint,foreignkey(cpno)referencescourse(cno)/*表级完整性约束条件,cpno是外码,被参照表是course,被参照列是cno*/);createtablesc(snochar(9),cnochar(4),gradesmallint,primarykey(sno,cno),/*主码有两个属性构成,必须作为表级完整性进行定义*/foreignkey(sno)referencesstudent(sno),/*表级完整性约束条件,sno是外码,被参照表是student*/foreignkey(cno)referencescourse(cno),/*表级完整性约束条件,cno是外码,被参照表示course*/);例1、createtables(cnovarchar(3),/*变长的字符串,输入2个字符就是两个字符不会补空格*/snamevarchar(20),statusint,cityvarchar(20),constraintpk_snoprimarykey(sno),/*约束条件的名字为pk_sno*/);createtablep(pnovarchar(3),pnamevarchar(20),colorvarchar(3),weightint,constraintpk_pnoprimarykey(pno),/*约束条件的名字是pk_pno*/);createtablej(jnovarchar(3),jnamevarchar(20),cityvarchar(20),constraintpk_jnoprimarykey(jno)/*约束条件的名字为pk_jno*/);例2、createtablespj(snovarchar(3),/*第一个表中的主码*/pnovarchar(3),jnovarchar(3),qtyint,/*数量*/constraintpk_spjprimarykey(sno,pno,jno),/*主码由3个属性组成*/foreignkey(sno)referencess(sno),/*表级完整性约束条件,sno是外码,被参照表是s*/ foreignkey(pno)referencesp(pno),/*表级完整性约束条件,pno是外码,被参照表是p*/ foreignkey(jno)referencesj(jno),数据库上机实验报告相关文章:实验报告撰写要求“小学教师心理素质优化研究”实验总结《聋校语文教学学生学习兴趣引导的研究》实验报告SQL数据库制作考务管理系统实验报告小学课题阶段实验汇报生物教学中引导学习教学模式的实验报告校本培训课题实验总结报告范文书法教育课题开题实验报告查看更多>>实验报告。
数据库上机实验报告[页2]数据库上机实验报告数据库上机实验报告/*表级完整性约束条件,jno是外码,被参照表是j*/);2、数据表的更改在s表中添加一个concat列altertablesaddconcatvarchar(20)在s表中删除concat列altertablesdropcolumnconcat更改s表concat列的属性把长度由20改为30altertablesaltercolumnconcatvarchar(30)联系方式名字为concat修改属性为唯一的属性名为con_concataltertablesaddconstraintcon_concatunique(concat)删除约束关系con_concataltertablesdropconstraintcon_concat/*插入一个元组*/insertintosvalus(‘s1’,’精益’,20,’天津’)/*20不能写成’20’*/试验中的问题的排除与总结:1、在创建spj时有三个实体所以从3个实体中取主码,还有一个数量属性也要写上主码由那3个主码确定2、更改一个数据库中数据表时一定要先使该数据库处于正在使用状态3、constraint是可选关键字,表示primarykey、notnull、unique、foreignkey或check约束定义的开始。
约束是特殊属性,用于强制数据完整性并可以为表及其列创建索引。
4、--go可以不加但是要注意顺序注:go--注释提示错误5、注意添加一个空元素用null附sql备份--创建一个数据库studentcreatedatabasestudentgo--在数据库student中创建表studentcoursesc注意顺序usestudent---------------------------------------------------------------- createtablestudent(snochar(9)primarykey,/*sno是主码列级完整性约束条件*/ snamechar(10)unique,/*sname取唯一值*/ssexchar(2),sagesmallint,/*类型为smallint*/sdeptchar(20)/*所在系*/);/*;要加*/-----------。
附录C 上机实验C.1 第4章上机实验下列实验均使用SQL Server 的SSMS工具实现。
1.用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A):●数据库名为:学生数据库●主要数据文件的逻辑文件名为:Students_data,存放在D:\Data文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。
),初始大小为:5MB,增长方式为自动增长,每次增加1MB。
●日志文件的逻辑文件名字为:Students_log,也存放在D:\Data文件夹下,初始大小为:2MB,增长方式为自动增长,每次增加10%。
2.选用已建立的“学生数据库”,写出创建满足表C-1到4-4条件的表的SQL语句,并执行所写代码。
(注:“说明”部分不作为表定义内容)3. 写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。
(1)在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4)。
(2)为Teacher表中的Title列增加取值范围约束,取值范围为:{教授,副教授,讲师}。
(3)将Course表中Credit列的类型改为:tinyint。
(4)删除Student表中的Sid和Sdate列。
(5)为Teacher表添加主键约束,其主键为:Tno。
C.2 第5章上机实验本实验均在SQL Server 的SSMS工具中实现。
首先在已创建的“学生数据库”中创建本章表5-1~5-3所示的Student、Course和SC表,并插入表5-4~5-6所示数据,然后编写实现如下操作的SQL语句,执行所写的语句,并查看执行结果。
1.查询SC表中的全部数据。
2.查询计算机系学生的姓名和年龄。
3.查询成绩在70~80分的学生的学号、课程号和成绩。
4.分别查询学生表和学生修课表中的全部数据。
5.查询计算机系的学生的姓名、年龄。
6.查询选修了c001课程的学生学号和该门课程成绩。
7.查询计算机系年龄在18到20之间且性别为'男'的学生的姓名、年龄。
附录C 上机实验C.1 第4章上机实验----------------------陈宇超,仅供参考------------------------------ 下列实验均使用SQL Server 的SSMS工具实现。
1.用图形化方法创建符合如下条件的数据库(创建数据库的方法可参见本书附录A):●数据库名为:学生数据库●主要数据文件的逻辑文件名为:Students_data,存放在D:\Data文件夹下(若D:盘中无此文件夹,请先建立此文件夹,然后再创建数据库。
),初始大小为:5MB,增长方式为自动增长,每次增加1MB。
●日志文件的逻辑文件名字为:Students_log,也存放在D:\Data文件夹下,初始大小为:2MB,增长方式为自动增长,每次增加10%。
2.选用已建立的“学生数据库”,写出创建满足表C-1到4-4条件的表的SQL语句,并执行所写代码。
(注:“说明”部分不作为表定义内容)表C-4 Teacher表结构3. 写出实现如下功能的SQL语句,并执行所写代码,查看执行结果。
(1)在Teacher表中添加一个职称列,列名为:Title,类型为nchar(4)。
ALTER TABLE Teacher ADD Title VARCHAR(4)(2)为Teacher表中的Title列增加取值范围约束,取值范围为:{教授,副教授,讲师}。
ALTER TABLE Teacher ADD CONSTRAINT Title CHECK(Title IN('教授','副教授','讲师'))(3)将Course表中Credit列的类型改为:tinyint。
注意:这里首先需要先删除Credit的约束,修改完数据类型后再重新添加约束项ALTER TABLE Course DROP CONSTRAINT CK__Course__Credit__2B3F6F97 ALTER TABLE Course ALTER COLUMN Credit TINYINTALTER TABLE Course ADD CONSTRAINT Credit CHECK (Credit>0)(4)删除Student表中的Sid和Sdate列。
注意:这里首先需要先删除约束ALTER TABLE Student DROP CONSTRAINT UQ__Student__CA1E5D79B3204FCF ALTER TABLE Student DROP CONSTRAINT DF__Student__Sdate__3B75D760 ALTER TABLE Student DROP COLUMN Sdate,Sid(5)为Teacher表添加主键约束,其主键为:Tno。
ALTER TABLE Teacher ADD PRIMARY KEY(Tno)※建立数据库主要文件和日志文件※我们可以看到D盘增加了主要数据文件.mdf和日志文件.ldfC.2 第5章上机实验本实验均在SQL Server 的SSMS工具中实现。
首先在已创建的“学生数据库”中创建本章表5-1~5-3所示的Student、Course和SC表,并插入表5-4~5-6所示数据,然后编写实现如下操作的SQL语句,执行所写的语句,并查看执行结果。
有关建表及所需要的数据,见本章末尾1.查询SC表中的全部数据。
SELECT * FROM SC2.查询计算机系学生的姓名和年龄。
SELECT Sname, Sage FROM Student WHERE Sdept='计算机系'3.查询成绩在70~80分的学生的学号、课程号和成绩。
SELECT Sno,Cno,Grade FROM SC WHERE Grade between 70 AND 804.查询计算机系年龄在18~20岁的男生姓名和年龄。
SELECT Sname,Sage FROM Student WHERE Sdept='计算机系' AND SageBETWEEN 18 AND 20 AND Ssex='男'5.查询C001课程的最高分。
SELECT MAX(grade) AS 最高成绩 FROM SC WHERE Cno='C001'6.查询计算机系学生的最大年龄和最小年龄。
SELECT MAX(Sage) AS 年长,MIN(Sage) AS 年幼 FROM Student WHERESdept='计算机系'7.统计每个系的学生人数。
SELECT Sdept,COUNT(Sno) AS 人数 FROM Student GROUP BY Sdept8.统计每门课程的选课人数和最高成绩。
SELECT Cno,COUNT(Sno) AS 人数,MAX(Grade) AS 最高成绩 FROM SC GROUP BY Cno9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。
SELECT Sno,COUNT(Cno) AS 选课数量,SUM(Grade) AS 考试总成绩 FROM SC GROUP BY Sno10.列出总成绩超过200的学生的学号和总成绩。
SELECT Sno,SUM(Grade) AS 考试总成绩 FROM SC GROUP BY Sno HAVING SUM(Grade)>20011.查询选了C002课程的学生姓名和所在系。
SELECT Sname,Sdept FROM Student st,SC sc WHERE st.Sno=sc.Sno AND Cno='C002'或者SELECT Sname,Sdept FROM Student WHERE Sno IN(SELECT Sno FROM SC WHERE Cno='C002')或者SELECT Sname,Sdept FROM Student WHERE EXISTS (SELECT * FROM SCWHERE Sno = Student.Sno AND Cno = 'C002')12.查询考试成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果。
SELECT Sname,Cno,Grade FROM Student,SC WHERE Student.Sno=SC.Sno AND Grade>80 ORDER BY Grade DESC13.查询与VB在同一学期开设的课程的课程名和开课学期。
SELECT ame,c2.Semester FROM Course c1,Course c2WHERE ame=ame AND ame='VB' AND ame!='VB'14.查询与李勇年龄相同的学生的姓名、所在系和年龄。
SELECT s2.Sname,s2.Sdept,s2.Sage FROM Student s1,Student s2WHERE s1.Sage=s2.Sage AND s1.Sname='李勇' AND s2.Sname!='李勇'或者SELECT Sname,Sdept,Sage FROM Student WHERE Sage=(SELECT Sage FROM Student WHERE Sname='李勇') AND Sname!='李勇'15.查询哪些课程没有学生选修,列出课程号和课程名。
SELECT o,ame FROM Course LEFT JOIN SC ono=o WHERE o IS NULL16.查询每个学生的选课情况,包括未选课的学生,列出学生的学号、姓名、选的课程号。
SELECT Student.Sno,Student.Sname,Cno FROM Student LEFT JOIN SC ON SC.Sno=Student.Sno17.查询计算机系哪些学生没有选课,列出学生姓名。
SELECT Sname FROM Student WHERE Sdept='计算机系' AND Sno NOT IN(SELECT Sno FROM SC)或者SELECT Sname FROM Student S LEFT JOIN SC ON S.Sno = SC.SnoWHERE Sdept = '计算机系' AND o IS NULL18.查询计算机系年龄最大的三个学生的姓名和年龄。
SELECT Top 3 Sname,Sage FROM Student WHERE Sdept='计算机系' ORDER BY Sage DESC19.列出“VB”课程考试成绩前三名的学生的学号、姓名、所在系和VB成绩。
SELECT TOP 3 WITH TIES Sname, Sdept, Grade FROM Student S JOIN SC on S.Sno = SC.Sno JOIN Course C ON o = o WHERE Cname = 'VB' ORDER BY Grade DESC20.查询选课门数最多的前2位学生,列出学号和选课门数。
√SELECT top 2 Sno,COUNT(Cno) AS 选课数 FROM SC GROUP BY Sno ORDER BY COUNT(Cno) DESC21.查询计算机系学生姓名、年龄和年龄情况,其中年龄情况为:如果年龄小于18,则显示“偏小”;如果年龄在18-22,则显示“合适”;如果年龄大于22,则显示“偏大”。
√SELECT Sno,Sage,CASEWHEN Sage<18 THEN '偏小'WHEN Sage>=18 AND Sage<=22 THEN '适合'WHEN Sage>22 THEN '偏大'ENDAS 年龄情况 FROM Student22.统计每门课程的选课人数,包括有人选的课程和没有人选的课程,列出课程号,选课人数及选课情况,其中选课情况为:如果此门课程的选课人数超过100人,则显示“人多”;如果此门课程的选课人数在40~100,则显示“一般”;如果此门课程的选课人数在1~40,则显示“人少”;如果此门课程没有人选,则显示“无人选”。
√SELECT o,COUNT(Sno)AS 选课人数,CASEWHEN COUNT(Sno)>100 THEN '人多'WHEN COUNT(Sno)<40 AND COUNT(Sno)>0 THEN '人少'WHEN COUNT(Sno)<=100 AND COUNT(Sno)>=40 THEN '一般'WHEN COUNT(Sno)=0 THEN '无人选'endAS 人数情况 FROM SC RIGHT JOIN Course ON o=o GROUP BY o23.查询计算机系选了VB课程的学生姓名、所在系和考试成绩,并将结果保存到新表VB_Grade中。