小程序开发定制SQL Server 创建学生管理系统

小程序开发定制创建一个学生管理系统,小程序开发定制完成题目要求

1、小程序开发定制新建数据库:PXSCY

create database PXSCJ;

2、小程序开发定制建表确定属性:XSB、KCB、CJB

3、小程序开发定制设计每个表的实体完整性:键、索引

4、小程序开发定制设计每个表的域完整性:CHECK语句

5、小程序开发定制建立表之间的参照完整性:XSB与CJB,KCB与CJB

  1. -- 学生表
  2. create table xsb(
  3. 学号 char(6) primary key check(学号 like '[0][8][1][12][0-9][0-9]') not null,
  4. 姓名 char(8) not null,
  5. 性别 bit default 1 not null,
  6. 出生日期 date check(出生日期 >'1980-01-01'),
  7. 专业 char(12) check(专业 in('计算机','通信工程')),
  8. 总学分 int default 0 check(总学分<=160 and 总学分>=0),
  9. 备注 varchar(500)
  10. );
  11. -- 课程表
  12. create table kcb(
  13. 课程号 char(3) primary key check(课程号>='100'and 课程号<='299') not null,
  14. 课程名 char(16) check(课程名 in('小程序开发定制计算机基础', '程序设计与语言', '离散数学')) not null,
  15. 开课学期 tinyint default '1' check(开课学期>=1 and 开课学期<=8),
  16. 学时 tinyint check(学时>=1 and 学时<=80),
  17. 学分 tinyint check(学分>=1 and 学分 <=10) not null
  18. );
  19. -- 成绩表
  20. create table cjb(
  21. 学号 char(6) check(学号>=0 and 学号<='100') not null,
  22. 课程号 char(3) not null,
  23. 成绩 int default 0,
  24. primary key (学号, 课程号),
  25. foreign key(学号) references xsb(学号),
  26. foreign key(课程号) references kcb(课程号)
  27. );

 

6、输入表数据:增加、删除、修改记录

  1. -- 学生表添加记录
  2. insert into xsb (学号, 姓名, 性别, 出生日期, 专业, 总学分, 备注)
  3. values ('081101', '王林', 1, '1990-02-10', '计算机', 50, null),
  4. ('081103', '王燕', 0, '1989-10-06', '计算机', 50, null),
  5. ('081108', '林一帆', 1, '1989-08-05', '计算机', 52, '已提前修完一门课'),
  6. ('081202', '王林', 1, '1989-01-29', '通信工程', 40, '有一门课不及格,待补考'),
  7. ('081204', '马琳琳', 0, '1989-02-10', '通信工程', 42, null);
  8. -- 课程表添加记录
  9. insert into kcb (课程号, 课程名, 开课学期, 学时, 学分)
  10. values ('101', '计算机基础', 1, 80, 5),
  11. ('102', '程序设计与语言', 2, 68, 4),
  12. ('206', '离散数学', 4, 68, 4);
  13. -- 成绩表添加记录
  14. insert into cjb (学号, 课程号, 成绩)
  15. values ('081101', '101', 80),
  16. ('081101', '102', 78),
  17. ('081101', '206', 76),
  18. ('081103', '101', 62),
  19. ('081103', '102', 70),
  20. ('081108', '101', 85),
  21. ('081108', '102', 64),
  22. ('081108', '206', 87),
  23. ('081202', '101', 65),
  24. ('081204', '101', 1);

 

  1. -- 修改 xsb 数据:学号081202的姓名改王琳
  2. update xsb set 姓名='王琳' where 学号='081202';
  3. -- 修改 cjb 数据:学号081204成绩+90
  4. update cjb set 成绩=成绩+90 where 学号='081204';
  5. -- 删除 cjb 数据:删除学号081204的成绩
  6. delete from cjb where 学号='081204';
  7. -- 数据恢复
  8. insert into cjb values ('081204', '101', 91);

 

7、进行查询操作

7.1、查询计算机专业的学生信息

select * from xsb where 专业='计算机';

7.2、查询CJB表中的学号,课程号,成绩,其中成绩空显示“尚未考试”,<60不及格, =<60---<70及格,=<70---<80中,=<80---<90良,=<90---<100优秀。列标题别名为“成绩等级”

  1. select 学号, 课程号, 成绩等级=
  2. case
  3. when 成绩 is null then '尚未考试'
  4. when 成绩<60 then '不及格'
  5. when 成绩>=60 and 成绩<70 then '及格'
  6. when 成绩>=70 and 成绩<80 then '中'
  7. when 成绩>=80 and 成绩<90 then '良'
  8. when 成绩>=90 and 成绩<100 then '优'
  9. else '成绩无效'
  10. end
  11. from cjb;

7.3、对XSB表选择姓名,专业和总学分,返回结果集的前6行

select top 6 姓名, 专业, 总学分 from xsb;

7.4、输出成绩的max,min,sum,avg,count五个函数,写出合适的列名

  1. select count(学号) 成绩总数, max(成绩) 最大成绩, min(成绩) 最小成绩, sum(成绩) 总成绩, avg(成绩) 平均成绩
  2. from cjb;

7.5、查询XSB表中姓“王”且双名的学生情况

select * from xsb where 姓名 like '王_';

7.6、查询未选修离散数学的学生情况

  1. select * from xsb where 学号 not in (
  2. select 学号 from cjb where 课程号=(
  3. select 课程号 from kcb where 课程名='离散数学'
  4. )
  5. );

7.7、查询206号课程成绩不低于101号课程最低成绩的学生学号

  1. SELECT 学号 FROM CJB WHERE 课程号='206'
  2. AND 成绩 !<(SELECT MIN(成绩) FROM CJB WHERE 课程号='101')

7.8、查找选修了206号课程且成绩在80分以上的学生姓名及成绩

  1. select xsb.学号, xsb.姓名, cjb.成绩 from xsb, cjb
  2. where xsb.学号=cjb.学号 and cjb.课程号='206' and cjb.成绩>80;

 7.9、查询每个同学选了几门课,并输出选修大于2的记录

  1. select 学号, count(课程号) as '课程数' from cjb group by 学号;
  2. select 学号, count(课程号) as '课程数' from cjb group by 学号 having count(课程号)>2;

7.10将计算机专业的学生的“计算机基础”课程成绩按照降序排列,成绩相同的的再按姓名升序排列

  1. select xsb.学号, xsb.姓名, xsb.专业, cjb.成绩 from xsb, kcb, cjb
  2. where xsb.学号=cjb.学号 and kcb.课程号=cjb.课程号
  3. and xsb.专业='计算机' and kcb.课程名='计算机基础'
  4. order by cjb.成绩 desc, xsb.姓名 asc;

 

8、表上建立视图

8.1、在XSB上创建计算机专业的视图

  1. create view cs_xs as
  2. select * from xsb where 专业='计算机';

 

8.2、使用XSB和CJB创建计算机专业的成绩视图

  1. create view cs_kc as
  2. select 成绩 from xsb, cjb
  3. where xsb.学号=cjb.学号 and xsb.专业='计算机'
  4. with check option;

 

9、游标

9.1、建立游标指向选修计算机基础课程的课程号、课程名、成绩信息

  1. declare xs_cur1 cursor
  2. local scroll scroll_locks
  3. for select kcb.课程号, kcb.课程名, cjb.成绩
  4. from cjb, kcb
  5. where kcb.课程号=cjb.课程号 and 课程名='计算机基础';

9.2、使用游标输出所有行

  1. declare xs_cur1 cursor
  2. local scroll scroll_locks
  3. for select kcb.课程号, kcb.课程名, cjb.成绩
  4. from cjb, kcb
  5. where kcb.课程号=cjb.课程号 and 课程名='计算机基础'
  6. open xs_cur1
  7. fetch first from xs_cur1
  8. while(@@fetch_status=0)
  9. begin
  10. fetch next from xs_cur1
  11. end

9.3、使用游标把数据集的成绩加10

  1. declare xs_cur2 cursor
  2. local scroll scroll_locks
  3. for select 学号, 姓名, 总学分
  4. from xsb
  5. for update of 总学分
  6. open xs_cur2
  7. declare @xh char(6)
  8. declare @xm char(6)
  9. declare @zxf int
  10. fetch first from xs_cur2 into @xh, @xm, @zxf
  11. while(@@FETCH_STATUS=0)
  12. begin
  13. print '学号:' + @xh
  14. print '姓名:' + @xm
  15. print '总学分:' + CAST(@zxf+10 AS CHAR(2))
  16. print '--------------'
  17. fetch next from xs_cur2 into @xh, @xm, @zxf
  18. end

9.4、使用游标删除数据集的所有行

  1. declare xs_cur3 cursor
  2. local scroll scroll_locks
  3. for select 学号, 姓名, 总学分
  4. from xsb
  5. for update of 总学分
  6. open xs_cur3
  7. fetch first from xs_cur3
  8. while(@@fetch_status=0)
  9. begin
  10. delete from xsb where current of xs_cur3
  11. fetch next from xs_cur3
  12. end

10、将课程号为101、学号为081101的成绩循环修改到大于等于94,每次加5,并输出循环次数

  1. use PXSCY
  2. declare @one int = 0;
  3. while (select 成绩 from cjb where 课程号='101' and 学号='081101') < 94
  4. begin
  5. update cjb set 成绩=成绩+5 where 课程号='101' and 学号='081101'
  6. set @one += 1
  7. end
  8. select @one as '循环次数';

 


记录

        2022 - 06 - 09

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发