问答题设在SQL Server 2008某数据库中建有图书表和销售表,两个表的定义如下:
CREATE TABLE图书表(
书号char(10)PRIMARY KEY,
书名varchar(40),
图书类别varchar(20),
进价int);
CREATE TABLE销售表(
书号char(10)REFERENCES图书表(书号),
销售时间datetime,
销售数量int,
售价int,
PRIMARY KEY(书号,销售时间));
现要创建一个存储过程:查询指定类别的每种图书在当前年累计销售总数量。请补全下列代码。
CREATE PROC p_TotalSales
@lb varchar(20)
AS
SELECT 书名,
(
SELECT ______
FROM销售表t1
WHERE ______ and
year(销售时间)=year(______)
)AS销售总数量
FROM图书表t2 WHERE ______
问答题在分布式数据库中,如果用户编写程序时不必了解数据分片在各个场地的分配情况,则称该分布式数据库系统具有____________透明性。
问答题已知在文件IN3.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)几部分组成。其中:金额=单价×数量。函数ReadDat()的功能是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品名称从小到大进行排列,若产品名称相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT3.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include<stdio.h> #include<memory.h> #include<string.h> #include<stdlib.h> #define MAX 100 typedef struct char dm[5]; /*产品代码*/ char me[11]; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/ PRO; PRO sell[MAX]; void ReadDat(); void WriteDat(); void SortDat() void main() memset(sell,0,sizeof(sell)); ReadDat(); SortDat(); WriteDat(); void ReadDat() FILE *fp; char str[80],ch[11]; int i; fp=fopen("IN3.DAT","r"); for(i=0;i<100;j++) fgets(str,80,fp); memcpy(sell[i].dm,str,4); memcpy(sell[i].mc,str+4,10); memcpy(ch,str+14,4);ch[4]=0; sell[i].dj=atoi(ch); memcpy(ch,str+18,5);ch[5]=0; sell[i].sl=atoi(ch); sell[i].je=(long)sell[i].dj * sell[i].sl; fclose(fp); void WriteDat() FILE *fp; int i; fp=fopen("OUT3.DAT","w"); for(i=0;i<100;i++) fprintf(fp,"%s%s%4d%5d%101d/n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); fclose(fp);
问答题已知有如下关系模式:
T1({{U}}a1{{/U}},a2,a3,a5),T2({{U}}a3{{/U}},a4),T3({{U}}a5{{/U}},a6),T4({{U}}a3,a5{{/U}},a7),其中带下划线的属性标识为所在关系模式的主码,T1中的a3是参照T2的外码,T1中的a5是参照T3的外码,T4中的a3是参照T2的外码,T4中的a5是参照T3的外码。
请将上述关系模式用适当的ER图表示出来,并用下划线标注出作为实体主码的属性。
问答题知识发现主要由三个步骤组成,它们是_______、数据挖掘、结果的解释评估。
问答题在SQL Server 2008中,若要提取游标curl当前行指针所指的前一行数据,使用的选项是:FETCH_______FROM cur1
问答题已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中。请编写函数jsVal(),其功能是:如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat(),把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
注意:部分源程序已经给出。
程序中已定义数组:a[200],b[200];已定义变量:cnt。
请勿改动数据文件N.DAT中的任何数据及主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>
#define MAX 200
int a[MAX],b[MAX],cnt=0;
void jsVal()
{
}
void readDat()
{
int i;
FIIE *fp;
fp=fopen("IN.DAT","r");
for (i=0;i<MAX;i++)
fscanf(fp,"%d,",
fclose(fp);
}
void writeDat()
{
FILE *fp;
int i;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d/n",cnt);
for(i=0;i<cnt;i++)
fprintf(fp,"%d/n",b[i]);
fclose(fp);
}
void main()
{
int i;
readDat();
jsVal();
printf("满足条件的数=%d/n",cnt);
for(i=0;i<cnt;i++)
printf("%d",b[i]);
printf("/n");
writeDat();
}
问答题设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编写函数Josegh(void)实现此功能,并调用函数writeDat(),把结果P输出到文件out.dat中。
设n=100,s=1,m=10。
①将1到n个人的序号存入一维数组p中;
②若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;
③重复第②步直至圈中只剩下p[1]为止。
请勿改动主函数main()和输出数据函数writeDAT()的内容。
#include <stdio.h>
#define N 100
#define S 1
#define M 10
int p[100], n, s, m;
void WriteDat(void);
void Josegh(void)
{
}
void main()
{
m=M;
n=N;
s= S;
Josegh ();
WriteDat ();
}
/*把结果p输出到文件out.dat中*/
void WriteDat(void)
{
int i;
FILE *fp;
fp=fopen("out.dat", "w");
/*以逆顺的方式,以10个数据为一组把数组p[i]输出到屏幕和文件out.dat中*/
for (i=N-l; i>=0; i--)
{
printf("%4d ", p[i]);
fprintf(fp, "%4d", p[i]);
if (i%10 == 0) //如果i能被10整除,则输出一个回车换行符
{
printf ("/n");
fprintf(fp, "/n");
}
}
fclose(fp);
}
问答题在SQL Server 2008中,设有教师表(教师号,姓名,所在部门号,职称)和部门表(部门号,部门名,高级职称人数)。请编写满足下列要求的后触发型触发器(设触发器名字为tri_zc)。
每当在教师表中插入一名具有高级职称(“教授”或“副教授”)的教师时,或者将非高级职称教师的职称更改为高级职称时,均修改部门表中相应部门的高级职称人数。(假设一次操作只插入或更改一名教师的职称)。
问答题在数据仓库中,元数据主要分为_________元数据和业务元数据两类。
问答题在SQL Server 2008中,每个数据页可存储8060字节的数据。设表T有10000行数据,每行占用4031字节,则存储该表数据大约需要_______MB存储空间,其空间利用率大约是_______%。(存储空间和空间利用率均保留到整数,小数点后按四舍五人处理)
问答题现要查询C01课程考试成绩最高的前3名学生的学号和成绩(包括并列的情况)。请补全下列语句:SELECT_________3学号,成绩FROM选课表WHERE课程号='C01'ORDER BY成绩DESC
问答题有商品表(商品号,商品名,分类,单价),请编写一个实现更改商品单价的存储过程(存储过程名为pUpdate),更改规则如下:“电脑”类商品降价10%,“电视”类商品降价6%,“冰箱”类商品降价3%,其他商品不降价。以商品的分类作为输入参数,假设“分类”为字符串类型,长度最多为6个汉字。如果商品表中没有用户指定的分类,则用输出参数返回字符串“指定的分类不存在”;如果用户指定的分类存在,则用输出参数返回字符串“修改已成功”。
问答题某网上商城因为业务发展,原有的系统不能很好的满足需要,因此采用了一套新的经营管理系统,此系统使用SQL Server
2008数据库管理系统。此系统上线运行前,需将商场原有的数据导入到新系统中。原有系统使用SQL Server
2000,数据结构与新系统不完全一致。因此需要把数据从SQL Server 2000导入到SQL Server
2008中,为了保证数据一致性,数据导入过程中要求暂停业务且必须在3小时内完成。
问答题使用约束可以保证数据库中数据的正确性,其中_______约束允许出现空值但不允许出现重复值。
问答题事务是由一系列操作组成的,事务的执行表现为事务中各个操作的执行。每个事务应具有结束操作。当一个事务发生故障需要终止并取消所有已执行的数据修改时应执行_________操作。
问答题设在SQL Server 2008某数据库中,要设置不允许用户U1获得对表T数据的删除权限,请补全实现该授权操作的S语句:_________ON T TO U1;
问答题函数ReadDat()实现从IN.DAT文件中读取一篇英文文章并存入字符串数组xx中。请编写函数SortCharA(),其功能是:以行为单位对字符按从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat(),把结果xx输出到OUT.DAT文件中。 例如,原文:dAe,BfC. CCbbAA 结果:,.ABCdef AACCbb 原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> #include<string.h> #include<conio.h> char xx[50][80]; int maxline=0; /*文章的总行数*/ int ReadDat(void); void WriteDat(void); void SortCharA(void) void main() if(ReadDat()) printf("数据文件IN.DAT不能打开!/n/007"); return; SortCharA(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; char *p; if((fp=fopen("IN.DAT","r"))==NULL) return 1; while(fgets(xx[i],80,fp)!=NULL) p=strchr(xx[i],'/n'); if(p) *p=0; i++; maxline=i; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<maxline; i++) printf("%s/n",xx[i]); fprintf(fp,"%s/n",xx[i]); fclose(fp);
问答题函数ReadDat()的功能是实现从文件IN5.DAT中读取一篇英文文章存入到字符串数组xx中。请编制函数ConvertCharA(),该函数的功能是:以行为单位把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变。把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件OUT5.DAT中。 例如,原文:Adb.Bcdza abck.LLhj 结果:Aec.Bdeab bcdl.LLik 原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include<stdio.h> #include<string.h> #include<stdlib.h> char xx[50][80]; int maxline=0;/*文章的总行数*/ int ReadDat(void); void WriteDat(void); void ConvertCharA(void) void main() system("CLS"); if(ReadDat()) printf("数据文件IN5.DAT不能打开!/n/007"); return; ConvertCharA(); WriteDat(); int ReadDat(void) FILE *fp; int i=0; char *p; if((fp=fopen("IN5.DAT","r"))==NULL)return 1; while(fgets(xx[i],80,fp)!NULL) P=strehr(xx[i],'/n'); if(P) *P=0; i++; maxline=i; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; system("CLS"); fp=fopen("OUT5.DAT","w"); for(i=0;i<maxline;i++) prinff("%s/n",xx[i]); fprinff(fp,"%s/n",xx[i]); fclose(fp);
问答题函数ReadDat()实现从in.dat文件中读取20行数据并存放到字符串数组xx中(每行字符串长度均小于80)。请编写函数jsSort(),其函数的功能是:以行为单位对字符串按给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat(),把结果xx输出到out.dat文件中。 条件:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。 例如: 位置0 1 2 3 4 5 6 7 8 源字符串a b c d h g f e 1 2 3 4 9 8 7 6 5 则处理后字符串h g f e d C b a 8 7 6 5 9 4 3 2 1 注意:部分源程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> #include<string.h> #include<conio.h> char xx[20][80]; void jsSort() void ReadDat() FILE *in; int i=0; char *p; in=fopen("in.dat","r"); while(i<20&&fgets(xx[i],80,in)!=NULL) p=strchr(xx[i],'/n'); if(p) *p=0; i++; fclose(in); void WriteDat() FILE *out; int i; out=fopen("out.dat","w"); for(i=0;i<20; i++) printf("%s/n",xx[i]); fprintf(out,"%s/n",xx[i]); fclose(out); void main() ReadDat(); jsSort(); WriteDat();
