用SQL语句创建如下三个基本表:学生表(Student)、课程表(Course)、学生选课表(SC),结构如下所示
Student表结构
列名
说明
数据类型
约束
Sno
学号
字符串,长度为7
主码
Sname
字符串,长度为10
非空
Ssex
性别
字符串,长度为2
取‘男’或‘女’
Sage
年龄
整数
取值15~45
Sdept
所在院系
字符串,长度为20
默认为‘计算机系’
Create table    Student
(
    Sno varchar(7) primary key,
    Sname varchar(10) not null,
    Ssex char (2) check(Ssex=‘男’or Ssex=),
    Sage int check(Sage between 15 and 45),
    Sdept varchar(20) default(计算机系)
)
Course表结构
列名
说明
数据类型
约束
Cno
课程号
字符串,长度为10
主码
Cname
课程名
字符串,长度为20
非空
Ccredit
学分
整数
取值大于0
Semester
学期
整数
取值大于0
Period
学时
整数
取值大于0
Create table course
(
    Cno varchar(10) primary key,
    Cname varchar(20) not null,
    Ccredit int check(Sctedit>0),
    Semester int check(Semester>0),
    Period int check(Period>0)
)
SC表结构
列名
说明
数据类型
约束
Sno
学号
字符串,长度为7
主码,引用Student的外码
Cno
课程号
字符串,长度为10
主码,引用Course的外码
Grade
成绩
整数
取值0~100
Create table SC
(
    Sno varchar(7) foreign key references student(Sno),
    Cno varchar(10) foreign key references course(Cno),
    Grade int check(Grade between 0 and 100),
    Primary key (Sno,Cno)
)
1.查询学生选课表中的全部数据。
SELECT *
FROM SC
go
2.查询计算机系学生的姓名、年龄。
Select Sname,Sage
From Student
Where Sdept=计算机系
3.查询成绩在70~80分之间的学生的学号、课程号和成绩。
Select Sno,Cno,Grade
From Course,Sc
Where courseo=sc.Cno and sc.Grade between 70 and 80
4.查询计算机系年龄在18~20之间且性别为“男”的学生的姓名和年龄。
Select Sname,Sage
From Student
Where Sage between 18 and 20 and Ssex=and Sdept=计算机系
go
5.查询课程号为“C01”的课程的最高分数。
Select top 1 Grade        select max(Grade) as 最高分
From Sc                    from Sc
Where Cno=C01          where Cno=C01
Order by Grade desc        order by Grade desc
6.查询计算机系学生的最大年龄和最小年龄。
Select max(Sage) as 年龄最大,min(Sage) as 年龄最小
From Student
Where Sdept=计算机系
7.统计每个系的学生人数。
Select count(Sdept) as 学生人数,Sdept
From Student
Group by Sdept
8.统计每门课程的选课人数和考试最高分。
Select count(Sno) as选课人数,c.Sno,max(Grade) as最高分
From Course c left join Sc s on co=s.Cno
Group by c.Cno
9.统计每个学生的选课门数和考试平均成绩,并按学号的升序显示结果。
Select sno,avg(grade) as 平均成绩,count (cno) as 选课门数
From sc
Group by sno
Order by sno
10.查询总成绩超过200分的学生,要求列出学号、总成绩。
Select sno,sum(grade)
From sc
Group by sno
Having sum(grade)>200
11.查询选修了课程“C02”的学生的姓名和所在系。
Select sname,sdept
From student s1,sc s2
Where s1.sno=s2.sno and s2o=c02
12.查询成绩在80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
Select s1.sname,ade基本的sql语句有哪些
From student s1,sc s2
Where s1.sno=s2.sno and grade >80
Order by grade desc
13.查询哪些课程没有人选修、要求列出课程号和课程名。
Select co,came
From course c left join sc s on co=so
Group by co,came
Having count(s.sno)=0
14.用子查询实现如下查询:
      (1)查询选修了课程“C01”的学生的姓名和所在系。
Select sname,sdept ,sno
From student
Where sno in (
                        Select sno
                        From sc
                        Whereo=c01
)
      (2)查询信息系成绩在80分以上的学生的学号、。
Select sno,sname