A. 学生表:S(学号,姓名,性别,出生日期,院系) 选课成绩表:SC(学号,课程号,成绩)
学号 未指定吧
SELECT 学生表.学号,姓名 FROM S,SC WHERE S.学号=SC.学号 AND 成绩>=85
B. 如何把"选课成绩"表中的"学生编号"和"课程编号"设置为组合主键
case 'f':printf("friday\n");break;
case 'm':printf("monday\n");break;
case 't':printf("please input second letter\n");
if((letter=getch())=='u')
printf("tuesday\n");
else if ((letter=getch())=='h')
printf("thursday\n");
else printf("data error\n");
break;
case 'w':printf("wednesday\n");break;
default: printf("data error\n");
C. 有一个“学生-课程”数据库,数据库中包括三个表:
1、创建“学生-课程”数据库:将数据文件和日志文件都存放在D盘自已学号的目录下。其中数据文件和日志文件初始大小都为1MB,自动增长率都为10%。
create database MyDB
on(
name='Student-SC',
filename='d:\自己学号\Student-SC.mdf',
size=1,filegrowth=10%)
log on
(name='Student-SClog',
filename='d:\自己学号\Student-SClog.ldf',
size=1,filegrowth=10%)
go
2、在“学生-课程”数据库创建“学生”表,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成,其中学号设为主键约束,性别设置检查性约束。
use Student-SC
create table Student
(Sno char(5) primary key,
Sname varchar(20),
Ssex varchar(2),
Sage tinyint,
Sdept varchar(30),
check(Ssex in('男','女')))
go
3、查询“学生”表中全体学生的学号与姓名
select Sno,Sname from Student
4、查询年龄在20至23岁之间的学生的姓名、所在系和年龄
select Ssex,Sdept,Sage from Student where Sage between 20 and 23
5、 查所有姓刘的学生的姓名、学号和性别
select Sname,Sno,Ssex from Student where Sname like '刘%'
6、 查询“学生选课”表中成绩最高和成绩最低的记录,要求显示学号(Sno)、课程号(Cno)、成绩(Grade)三个属性
select Sno,Cno,Grade from SC group by Sno,Cno having max(Grade) or min(Grade)
7、使用内部联接查询并显示所有选修课程的同学的学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)、课程号(Cno)、成绩(Grade)属性
select SC.Sno,Student.Sname,Student.Ssex,Student.Sage,Student.Sdept,SC.Cno,SC.Grade from SC inner join Student on SC.Sno=Student.Sno
8、向“学生”表中插入如下记录:学号:’04160’、姓名:’王燕’、性别 :’女’、年龄:22、所在系: ’计算机科学系’
insert into Student values('04160','王燕','女',22,'计算机科学系')
9、将计算机科学系全体学生的成绩置零
update SC set Grade=0 where exists(select Sno,Sdept from Student where Student.Sno=SC.Sno and Student.Sdept='计算机科学系')
10、在“学生”表中,删除学号为’04160’同学的记录
delete from Student where Sno='04160'
D. 不能建立参照完整性
你的那两张表之所以不能建立参照完整性的原因,其实错误提示已经告诉你了。
现在我进一步说明一下:
首先学生表与选课成绩表通过“学生编号”建立参照完整性关系是完全可以的。它们之间不能建立参照完整性关系是因为这两张表在建立关系前已经输入了数据,选课成绩表中学生编号字段的某些“学生编号”并不存在于学生表中,数据库引擎在建立参照完整性检测出了这些孤立的“学生编号”因而提示错误。
解决办法:先将选课成绩表中存在的那些孤立数据删除,然后即可为该两张表建立参照完整性关系了。
建议运行下列SQL操作查询删除选课成绩表中的孤立记录。
DELETE * FROM 选课成绩表 WHERE 学生编号 NOT IN ( SELECT 学生编号 FROM 学生表)
E. 从学生表和选课成绩统计并显示每个学生学号,姓名,各科成绩之和用sol编码怎么
从学生表和选课成绩统计并显示每个学生学号,姓名,各科成绩之和用sol编码殖后期,勤开机,促进水产养殖对象生长
F. SQL语句编写问题统计选课的学生人数; 将选修课程号为3的学生成绩加10分
SelectCount(学生学号)
From表
Update表Set成绩+10
Where选修课程号=3
Select学号,姓名,年龄
From表
Where姓名Like'_仁%'
Select学号,姓名,成绩
From表
Where选修课='DB'
And成绩>90
Order成绩desc
--下次提问麻烦给表可以吗?
G. 7、 以学生表和成绩表为数据源,建立名为“未选课学生查询”的嵌套查询,查询出学生的学号和姓名。所谓未
以下的sql语句可以参考一下:
select 学号,姓名
from 学生表
where 学号 not in ( select distinct 学号 from 成绩表 )
H. 跪求大神帮帮忙!!!有一个【学生选修课】数据库,数据库中包括三个表,学生表,课程表,成绩表
//自己把中文替换成英文字段名 我用的sql server数据库
select 学号、姓名、性别、年龄、所在系 from 学生 order by 年龄 desc, 学号 asc
select 学号,姓名 from 学生 where 姓名 in( select 姓名 from 学生 group by 姓名 having count(*)>1 )
update 成绩 set 成绩=0 where CNO=1
如果/不是除法的话 只是字符串 (除法暂时有问题)下班了 明天再来写
select C.课程号,D.课程名,D.成绩 from COURSE C,(
select CONVERT(VARCHAR(50),A.排名)+'/'+CONVERT(VARCHAR(50),B.ZS) as '排名/人数',a.学号,a.课程名,a.成绩 FROM (
select ROW_NUMBER() over(partition BY 课程名 order by 成绩 desc) as 排名 ,* from GRADE where 学号='1') A,
(SELECT COUNT(*) as zs,课程名
FROM GRADE group by 课程名 ) B where a.课程名=b.课程名) D WHERE C.课程名=D.课程名
I. 关于学生,课程,选课三张表的sql查询
select 选课.学号,姓名,AVG(成绩)'平均分',COUNT(选课.课程号)'选课门数' from 学生,课程,选课 where 学生.学号=选课.学号 and 课程.课程号=选课.课程号 group by 选课.学号,姓名 HAVING COUNT(选课.课程号)>4 ORDER BY AVG(成绩) DESC
--------------------------------------
CREATE VIEW 查询 AS
select top 100 选课.学号,姓名,AVG(成绩)'平均分',COUNT(选课.课程号)'选课门数' from 学生,课程,选课 where 学生.学号=选课.学号 and 课程.课程号=选课.课程号 group by 选课.学号,姓名 HAVING COUNT(选课.课程号)>4 ORDER BY AVG(成绩) DESC
其中DESC是降序排列,ASC是升序排列,默认是升序
ORDER BY AVG(成绩)也可以写成ORDER BY 平均分,因为已经指定了别名
“CREATE VIEW 查询”中的“查询”是新表名, 如果有“ORDER BY AVG(成绩) DESC ”这句,则须有“top”,否则出错“除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。”
J. 数据库中现有学生表,选课表,成绩表,怎么删除大于18岁学生的所有选课信息
假设这3个表的结构如下:
学生表(学号,姓名,年龄,出生日期)
选课表(学号,课程号,课程名称)
成绩表(学号,课程号,成绩)
以上述表结构为前提,T-SQL语句如下:
delete 成绩表 where 学号 in (select 学号 from 学生表 where 年龄>18)
delete 选课表 where 学号 in (select 学号 from 学生表 where 年龄>18)
如果学生表中没有‘年龄’字段,只有‘出生日期’字段的话,T-SQL语句如下:
delete 成绩表 where 学号 in (select 学号 from 学生表 where datediff(yy,出生日期,getdate())>18)
delete 选课表 where 学号 in (select 学号 from 学生表 where datediff(yy,出生日期,getdate())>18)