建立一个Student表,由Sno,Sname,Ssex,Sage组成,学号不为空,并且其值唯一.
Create Ttable Student
(
Sno char(5) Not Null Unique,
Sname char(20),
Ssex char(1),
Sage int
Sdept char(15)
);
向Student表加”入学时间”列.Scome
Alter Tabl Student Add Scome DATE;
将年龄的数据类型改为半字长整数
Alter tabl Student Modify Sage SMALLINT;
删除关于学号必须唯一值的约束
Alter Table Student Drop Unique(Sno) ;
删除基本表
Drop Table Student;
为Student表按学号升序建立唯一索引.
Create Unique Index Stusno On Student(Sno)
删除Student表的Stusno索引.
Drop Index Stuson;
设学生课程数据库StudentDB包含三个表:学生表:Student,课程表:Course,选课表:SC.
Student(Sno,Sname,Ssex,Sage,Sdept)
Course(Cno,Cname,Cpno,Gredit)
SC(Sno,Cno,Grade)
查询全体学生的学号与姓名.
Select Sno,Sname From Student;
查询所有学生的详细记录.
Select * From Student;
查询全体学生的姓名及其出生年份.
Select Sname,2007-Sage From Student;
查询所有选修过课的学生的学号.
Select Sno From SC;
上表查询后包含重复的行,去掉重复的行.
Select Distinct Sno From SC;
查询计算机系全体学生的名单.
Select Sname From Student Where Sdept=”CS”;
查询所有年龄在20岁以下的学生姓名年龄.
Select Sname,Sage From Student Where Sage<20;
查询考试成绩有不及格的学生的学号.
Select Distinct Sno Where Not Grade>60;
查询学生年龄不在20到23之间的学生姓名,系别,年龄.select distinct from
Select Sname,Sdept,Sage From Student Where Sage Not Between 20 And 23;
查询信息系(IS),数学系(MA),和计算机系(CS)的学生姓名和性别.
Select Sname,Ssex From Student Where Sdept In (‘IS’,’MA’,’CS’)
查询学号为95001的学生的详细情况.
Select * From Student Where Sno Like ‘95001’;
Select * From Student Where Sno=’95001’;
查询所有姓刘的学生的姓名学号和性别.
Select Sname,Sno,Ssex From Student Where Sname Like’刘%’;
查询名字中第二个字为”阳”字的学生姓名和学号.
Select Sname,Sno From Student Where Sname Like ‘__阳%’;
查询所有不姓刘的学生姓名.
Select Sname From Student Where Sname Not Like ‘刘%’
某些学生选修某门课程后没有参加考试,所以有选课记录,但没有考试成绩,查询缺少成绩的学生的学号和相应的课程号.
Select Sno,Cno From SC Where Grade Is Null;
查询所有有成绩的记录的学生学号和课程号.
Select Sno,Cno From SC Where Grade Is Not Null;
查询CS系年龄20风以下的学生姓名.
Select Sname From Student Where Sdept=’CS’And Sage<20;
查询选修了3号课程的学号及其成绩,查询结果按分数降序排列.升序(ASC)降序(DESC)
Select Sno,Grade From SC Where Cno=’3’ Oder By Grade DESC;
Count统计元组个数.
SUM计算列值的总和(必须数值型)
Count(列名)统计列中值的个数.
AVG计算列值的平均值
MAX求列值中的最大值
MIN求列值中的最小值
查询学生总人数
Select Count(*) From Student;
查询选修了课程的学生人数.
Select Count(Distinct Sno) From SC;
计算一号课程的学生平均成绩.
Select AVG(Grade) From SC Where Cno=’1’;
Group By子句可以将查询结果表的各行按一列或多列取值相等的原则进行分组.
查询各个课程号与相应的选课人数.
Select Cno,Count(Sno) From SC Group By Cno;
查询信息系选修了3门以上课程的学生的学号.
Select Sno From SC Where dept=’IS’Group By Sno HAVING Count(*)>3;
HAVING短语指定选择组的条件,只有满足条件的组才会被选出来.WHERE子句作用于基本表或视图.HAVING短语作用于组,从中选择满足条件的组.
表连接
查询每个学生及其选修课程的情况.
Select Student.*,SC.* From Student,SC Where Student.Sno=SC.Sno;
自身连接
查询每一门课的间接先修课
Select FIRST.Cno,SECOND.Cpno From Course FIRST,Course SECOND Where FIRST.Cno=SECOND.Cpno
在通常的连接操作中,只有满足连接条件的元组才能作为结果输出.若要以一个表为主体输出全部信息则就要用到外连接.
Select Student.Sno,Sname,Ssex,SC.Cno,SC.Grade From Student,SC Where Student.Sno=SC.Sno(*);
复合条件连接.
用于连接两个表的谓词WHERE子句中有多个条件的连接操作.
查询选修2号课程且成绩90分以上的所有学生.
Select Student.Sno,Sname From Student,SC Where Student.Sno=SC.Sno And SC.Cno=’2’And SC.Grade>=90;
Select Sname From Student Where Sno In (Select Sno From SC Where Cno=’2’);
查询每个学生选修的课程名及其成绩.
Select Student.Sno,Sname Course.Cname,SC.Grade From Student,SC,Course Where Student.Sno=SC.Sno And SC.Cno=Course.Cno;
查询选修了课程名为”信息系统”的学生学号和姓名.
Select Sno,Sname From Student Where Sno In (Select SC From SC Where Cno In(Select Cno From Course Where Cname=”信息系统”));
Select Student.Sno,Sname From Student,SC,Course Where Student.Sno=SC.Sno And SC.Cno=Course.Cno And Course.Cname=’信息系统’;
子查询一定要跟在比较符之后
查询其它系中比IS系任一学生年龄小的学生名单
Select Sname,Sage From Student Where Sage<Any (Select Sage From Student Where Sdept=’IS’) And Sdept<>’IS’ Order By Sage DESC;
Select Sname,Sage From Student Where Sage<(Select MIN(Sage) From Student Where Sdept=’IS’) And Sdept<>’IS’Order By Sage DESC.
EXISTS代表存在量.带有EXISTS谓语的子查询不返回任何实际数据,它只产生逻辑真值或假值.
查询所有选修了1号课程的学生姓名.
Select Sname From Student Where EXISTS (Select * From SC Where SC.Sno=Student.Sno And Cno=’1’);
查询至少选修了学生95001选修的全部课程的学生号码.
Select Distinct Sno From SC SCX Where Not EXISTS (Select * From SC SCY Where SCY.Sno=’95001’ And Not EXISTS (Select * From SC,SCZ Where SCZ.Sno=SCX.Sno And SCZ.Cno=SCY.Cno));
插入一条选课记录(‘95001’,’1’)
Insert Into SC (Sno,Cno) Values (‘95001’,’1’);
对每一个系,求学生的平均年龄,并把结果存入数据库.
Insert Into Deptage (Sdept,AVG age) Select Sdept,AVG(Sage) From Student Group By Sdept;
将学生95001的年龄改为22岁.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论