MySQL用while实现for循环嵌套(插入学生成绩信息功能)

本次实验的目的在于实现mysql中自动插入学生成绩信息,即给每个学生自动插入1~6号课程的成绩,

属性如下:

学生学号(i):1~23

课程号(j):1~6

成绩:用rand()函数来实现自动填成绩


此功能在java中用两个for循环嵌套即可,代码如下:

for(int i=0;i<22;i++){
	for(int j=0;j<6;j++){
//此处为jdbc操作插入的语句
//也可以用hibernate插入
	}
}

用存储过程会有一点for循环的影子,但是要注意对于课程号(j)的循环结束后要使j重新初始化到1,这样才能继续下次对j的循环,否则下次直接跳过对j的while循环,mysql中sql代码如下:

delimiter $	#以delimiter来标记用$表示存储过程结束
create procedure pro()
begin
declare i int;	#定义i变量
declare j int;	#定义j变量
set i=1;
set j=1;
while(i<=23) do	#对学号的循环
	while(j<=6) do	#对课程号的循环
		insert into scores(sid,cid,score) values(i,j,rand()*100);	
		set j=j+1;
	end while;
	set i=i+1;
	set j=1;	#重新给j赋值为1,让它下次继续从j=1开始进行立面的while循环
				#如果不给重新赋值为1,则对j的while循环只能进行一次
end while;
end 
$	#存储过程结束
call pro(); #调用pro()存储方法



这样插入的结果如下:

id    i     j score
---------------------

1 1 1 71
2 1 272
3 1 348
4 1 424
5 1 577
6 1 614
7 2 137
8 2 242
9 2 31
10 2 476
11 2 580
12 2 670
13 3 110
14 3 239
15 3 366
16 3 413
17 3 569
18 3 63
19 4 110
20 4 242
21 4 378
22 4 463
23 4 580
24 4 613
25 5 125
26 5 287
27 5 359
28 5 434
29 5 593
30 5 663
31 6 135
32 6 285
33 6 323
34 6 460
35 6 528
36 6 662
37 7 126
38 7 243
39 7 339
40 7 466
41 7 512
42 7 662
43 8 176
44 8 292
45 8 333
46 8 487
47 8 537
48 8 625
49 9 113
50 9 290
51 9 310
52 9 482
53 9 579
54 9 648
55 10 15
56 10 282
57 10 395
58 10 427
59 10 550
60 10 671
61 11 15
62 11 211
63 11 340
64 11 469
65 11 523
66 11 69
67 12 177
68 12 255
69 12 346
70 12 465
71 12 586
72 12 636
73 13 121
74 13 299
75 13 331
76 13 460
77 13 55
78 13 647
79 14 118
80 14 250
81 14 395
82 14 424
83 14 535
84 14 63
85 15 113
86 15 253
87 15 326
88 15 470
89 15 574
90 15 659
91 16 172
92 16 282
93 16 395
94 16 428
95 16 557
96 16 6100
97 17 129
98 17 243
99 17 331
100 17 4 24
101 17 5 30
102 17 6 75
103 18 1 85
104 18 2 99
105 18 3 42
106 18 4 13
107 18 5 39
108 18 6 54
109 19 1 53
110 19 2 6
111 19 3 69
112 19 4 27
113 19 5 27
114 19 6 57
115 20 1 2
116 20 2 39
117 20 3 91
118 20 4 35
119 20 5 5
120 20 6 17
121 21 1 71
122 21 2 6
123 21 3 16
124 21 4 62
125 21 5 63
126 21 6 28
127 22 1 51
128 22 2 70
129 22 3 96
130 22 4 73
131 22 5 75
132 22 6 58
133 23 1 66
134 23 2 55
135 23 3 76
136 23 4 17
137 23 5 55
138 23 6 24

你可能感兴趣的:(MySQL)