create database PXSCJ;

-- 学生表
create table xsb(
学号 char(6) primary key check(学号 like '[0][8][1][12][0-9][0-9]') not null,
姓名 char(8) not null,
性别 bit default 1 not null,
出生日期 date check(出生日期 >'1980-01-01'),
专业 char(12) check(专业 in('计算机','通信工程')),
总学分 int default 0 check(总学分<=160 and 总学分>=0),
备注 varchar(500)
);
-- 课程表
create table kcb(
课程号 char(3) primary key check(课程号>='100'and 课程号<='299') not null,
课程名 char(16) check(课程名 in('计算机基础', '程序设计与语言', '离散数学')) not null,
开课学期 tinyint default '1' check(开课学期>=1 and 开课学期<=8),
学时 tinyint check(学时>=1 and 学时<=80),
学分 tinyint check(学分>=1 and 学分 <=10) not null
);
-- 成绩表
create table cjb(
学号 char(6) check(学号>=0 and 学号<='100') not null,
课程号 char(3) not null,
成绩 int default 0,
primary key (学号, 课程号),
foreign key(学号) references xsb(学号),
foreign key(课程号) references kcb(课程号)
);


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

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

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

select 学号, 课程号, 成绩等级=
case
when 成绩 is null then '尚未考试'
when 成绩<60 then '不及格'
when 成绩>=60 and 成绩<70 then '及格'
when 成绩>=70 and 成绩<80 then '中'
when 成绩>=80 and 成绩<90 then '良'
when 成绩>=90 and 成绩<100 then '优'
else '成绩无效'
end
from cjb;

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

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

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

select * from xsb where 学号 not in (
select 学号 from cjb where 课程号=(
select 课程号 from kcb where 课程名='离散数学'
)
);

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

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

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

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

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

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

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

declare xs_cur1 cursor
local scroll scroll_locks
for select kcb.课程号, kcb.课程名, cjb.成绩
from cjb, kcb
where kcb.课程号=cjb.课程号 and 课程名='计算机基础'
open xs_cur1
fetch first from xs_cur1
while(@@fetch_status=0)
begin
fetch next from xs_cur1
end

declare xs_cur2 cursor
local scroll scroll_locks
for select 学号, 姓名, 总学分
from xsb
for update of 总学分
open xs_cur2
declare @xh char(6)
declare @xm char(6)
declare @zxf int
fetch first from xs_cur2 into @xh, @xm, @zxf
while(@@FETCH_STATUS=0)
begin
print '学号:' + @xh
print '姓名:' + @xm
print '总学分:' + CAST(@zxf+10 AS CHAR(2))
print '--------------'
fetch next from xs_cur2 into @xh, @xm, @zxf
end

declare xs_cur3 cursor
local scroll scroll_locks
for select 学号, 姓名, 总学分
from xsb
for update of 总学分
open xs_cur3
fetch first from xs_cur3
while(@@fetch_status=0)
begin
delete from xsb where current of xs_cur3
fetch next from xs_cur3
end

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

记录
2022 - 06 - 09
出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在
如何使用RSpec::Core::RakeTask初始化RSpecRake任务?require'rspec/core/rake_task'RSpec::Core::RakeTask.newdo|t|#whatdoIputinhere?endInitialize函数记录在http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method没有很好的记录;它只是说:-(RakeTask)initialize(*args,&task_block)AnewinstanceofRake
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
我正在尝试按0-9和a-z的顺序创建数字和字母列表。我有一组值value_array=['0','1','2','3','4','5','6','7','8','9','a','b','光盘','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','','u','v','w','x','y','z']和一个组合列表的数组,按顺序,这些数字可以产生x个字符,比方说三个list_array=[]和一个当前字母和数字组合的数组(在将它插入列表数组之前我会把它变成一个字符串,]current_combo['0','0','0']