第2題
Create table student (sno char(9) not null , sname char(10), ssex char(2), sage tinyint, sdept varchar(40)); Create table course (cno char(4) not null, cname varchar(30), cpno char(4), credit tinyint); Create table sc (sno char(9), cno char(5), grade numeric(3,1)); 在student表中,使sdept只能取值“計算機科學學院”,“數軟學院”,“電子工程學院”,“化學與材料科學學院”; 在student表中sage有默認值18; 為student表建立主鍵; 為course表建立主鍵和外鍵,其中外鍵約束名為C_FK_CPNO; 為course表建立檢查約束,限定credit的取值只能取3,2,4,5; 為course表建立唯一約束,確保每們課程名字唯一; 為sc表建立主鍵和外鍵,并給出相應的約束名; 在course表中插入元組(1,數據庫,5,4)和(2,數學,null,2),若不能正確插入,分析原因,給出解決辦法; 在sc表中插入元組(95001,1,92)和(95001,3,88),若不能正確插入,分析原因,給出解決辦法; 2.使用系統存儲過程, sp_help, sp_helpconstraint等對約束進行查詢和管理 查閱聯機幫助文檔,選中“索引”選項卡,分別輸入sp_help, sp_helpconstraint,閱讀其幫助信息。 對存儲過程sp_help和sp_helpconstraint進行總結,簡要解釋其用途 。 使SC數據庫成為當前數據庫,執行如下命令,簡要解釋執行結果 Exec sp_help Exec sp_help student Exec sp_help course Exec sp_helpconstaint sc Exec sp_helpconstraint student 3.修改約束:關閉和打開某個約束。 在course表中插入元組(4,數據結構,6,4),能夠插入嗎?為什么? 禁用約束C_FK_CPNO,再次插入元組(4,數據結構,6,4),能夠插入嗎?為什么? 重新啟用約束C_FK_CPNO
第4題
【說明】
以下【C程序】的功能是,逐一從指定課程成績文件中讀入學生的考號和成績,對同一學生匯總他(她)的總成績,并按如圖6-14所示格式輸出名次(按總成績由高到底的順序)、總成績、同一名次的學生人數、同一名次學生的學號(按學號由小到大的順序)。
該應用程序約定學生學習課程不超過30種,課程成績文件的第1個數字就是課程號。統計過程中,同一課程號的成績文件不能重復輸入。
該應用程序采用鏈表結構存儲學生的相關信息,鏈表中的每個表元對應一位學生。在數據輸入過程中,形成一個按學號從小到大順序鏈接的有序鏈表。當數據輸入結束后,程序按總成績從高到低,學號從小到大的順序對鏈表排序。最后程序按指定格式輸出鏈表中的信息。
【C程序】
include<stdio.h>
define M 30
define NLEN 10
typedef struct node {
int cur_s; /* 最近輸入成績的科目*/
Char no[NLEN];
int score;
struct node *next;
} NODE;
int s[M], sp, ss, i, mark, order, C;
FILE *fp; NODE *h, *U, *V, *p;
Char fname[80], no[NLEN], ans;
main()
{ for(h = NULL, sp = 0; ;)
{ printf("輸入科目成績文件名(輸入aaaa表示強行結束)。 \n");
while(1)
{ scanf("%s", fname);
if (strcmp(fname, "aaaa") == 0)
break;
if ((fp = fopen(fname, "r")) == NULL)
printf("不能打開文件%s, 請重新輸入科目文件名。 \n", fname);
else
break;
}
if (strcmp(fname, "aaaa") == 0) break;
fscanf(fp, "%d", &ss); /* 輸入科目號 */s[sp]=s;
for (i=0; s[i] ! = ss; 1++);
if ( (1) )
{ printf("該科目的成績已輸入,請輸入別的科目成績文件。\n");
continue;
}
sp++;
while (fscanf(fp, "%s%d", no, &mark) == 2)
{ /* 在鏈表中尋找最近輸入的學號 */
for(v = h; v != NULL && strcmp(v-> no, no)<0; u=v, v= v-> next);
if (v !=NULL && strcmp(v->no, nb) == 0)
{ /* 該生已有成績 */
if (V->cur_s != ss)
{ /* 該生的當前科目成績是第一次輸入 */
v->score += mark; /* 累計總成績 */
v->cur_s = ss;
} /* 同一科目成績重復輸入,后輸入成績被忽略 */
}
else
{ p = (NODE *)malloc(sizeof(NODE)); /* 一位新的學生 */
strcpy(p->no,no);
p->score = mark;
p->cur_s = ss;
p-> next = v;
第5題
B 存儲過程必須帶參數,要么是輸入參數,要么是輸出參數
C 存儲過程可以傳入(輸入)和返回(輸出)參數值
D 存儲過程提高了執行效率
第9題
第10題
為了保護您的賬號安全,請在“上學吧”公眾號進行驗證,點擊“官網服務”-“賬號驗證”后輸入驗證碼“”完成驗證,驗證成功后方可繼續查看答案!