数据库使用实例
查询实例
-
查询学生选课表中的全部数据。
select * from SC
-
查询计算机系学生的姓名,年龄。
select Sname,age from Student where Sdept=‘CS‘
-
查询成绩在 70~80 分之间的学生的学号,课程号和成绩。
select Sno,Cno,grade from SC where grade between 70 and 80
-
.查询计算机系年龄在 18~20 之间且性别为"男"的学生的姓名和年龄。
select name,age from Student where Sdept=‘CS‘ and age between 18 and 20 and sex=‘男‘
-
查询课程号为"C01"的课程的最高分数。
select max(grade) from SC where Cno=‘C01‘
-
查询计算机系学生的最大年龄和最小年龄。
select max(age),min(age) from Student where Sdept=‘CS‘
-
统计每个系的学生人数。
select count(*) from Student group by Sdept
-
统计每门课程的选课人数和考试最高分。
select count(*),max(grade) from SC
-
查询每个学生的选课门数和考试总成绩,并按选课门数的升序显示结果。
select count(*),sum(grade) from SC group by Sno order by count(*) asc
-
查询总成绩超过 200 分的学生,要求列出学号,总成绩。
select Sno,grade from SC having sum(grade)>200
-
查询选修了"C02"的学生的姓名和所在系。
select Sname,Sdept from Student where Sdept=‘C02‘
-
查询成绩在 80 分以上的学生的姓名,课程号和成绩,并按成绩的降序排列。
select Sname,Cno,grade from SC,Student S where SC.Sno=S.Sno and grade>80 order by grade desc
-
查询那些课程没有人选修.要求列出课程号和课程名。
select Cno,Cname from C where Cno not in(select SC.Cno from SC)
-
要求用子查询
-
查询选修了课程"C01"的学生的姓名和所在系。
select Sname,Sdept from Student where Sno in(select Sno from SC where Cno=‘C01‘)
-
查询数学系成绩在 80 分以上的学生的学号,姓名。
select Sno,Sname from Student where Sdept=‘数学系‘and Sno in(select Sno from SC where grade>80)
-
-
求数学系学生的学号和姓名。
select Sno,Sname from Student where Sdept=‘数学系‘
-
求选修了课程的学生学号。
select Sno from SC
-
求选修了数学课的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
select Sno,grade from SC,C where Cname=‘数学课‘ order by grade desc ,Sno asc
-
求选修数学课其且成绩在 80-90 之间的学生学号和成绩,并将成绩乘以系数 0.8 输出。
select Sno,grade*0.8 from SC,C where Cname=‘数学课‘ and grade between 80 and 90
-
求数学系或计算机系姓刘的学生的信息。
select * from Student where (Sdept=‘CS‘ or Sdept=‘数学系‘) and Sname=‘刘%‘
-
求缺少了成绩的学生的学号和课程号。
select S.Sno,Cno from Student S,SC where grade is null)
-
查询每个学生的情况以及他(她)所选修的课程。
select S.Sno,Sname,Cno from Student S,SC,C where S.Sno=SC.Sno
-
求学生的学号、姓名、选修的课程名及成绩。
select S.Sno,Sname,Cname,grade from Student S,SC,C where S.Sno=SC.Sno and SC.Cno=C.Cno
-
求选修数学课且成绩为 90 分以上的学生学号、姓名、及成绩。
select S.Sno,Sname,grade from Student S,SC,C where Cname=‘数学课‘ and grade>90
-
查询每一门课的间接先行课(即先行课的先行课)。
select C1.cno,C2.cpno from C1,C2 where c1.cpno=c2.cno
-
检索王老师所授课程的课程号和课程名。
select Cno,Cname from C where Teacher=‘王%‘
-
检索年龄大于 22 岁的男学生的学号和姓名。
select Sno,Sname from Student where sex=‘男‘ and age>22
-
检索学号为 10001 学生所学课程的课程名与任课教师。
select Cname Teacher from SC,C where Sno=‘10001‘ and SC.Cno=C.Cno
-
检索至少选修王老师所授课程中一门课程的女学生姓名。
select Sname from Student,SC,C where sex=‘女‘ and Sno in(select Sno from SC where Cno in(select Cno from C where Teacher=‘王%‘))
-
检索张同学不学的课程的课程号。
select Cno from C where Cno not in(select Cno from SC where Sno in(select Sno from S where Sname=‘张%‘))
-
检索至少选修两门课程的学生学号。
select Sno from SC group by Sno having count(Sno)>1
-
检索全部学生都选修的课程的课程号与课程名。
select Cno,Cname from C where not exists(select * from Student S where Sno not exists(select * from SC where SC.Cno=C.Cno and S.Sno=SC.Sno))
-
检索选修课程包含王老师所授课程的学生学号。
select Sno from SC S1 where not exists(select * from C where Teacher=‘王%‘ and not exists(select * from SC S2 where S2.Cno=C.Cno and S1.Sno=S2.Sno))
Oracle实例
--1. 查询emp表结构
desc emp
--empno 雇员编号
--ename 雇员姓名
--job 雇员工种
--mgr 对应领导编号
--hiredate 雇佣日期
--sal 基本工资
--comm 奖金
--deptno 部门编号
--2.显示当前用户
show user;
--3.查询当前用户下所有的表
select * from tab;
--4.查询每个部门的人数和平均工资
select deptno,count(*),avg(sal)
from emp
group by deptno;
--5.查询emp表中有多少工种
select distinct job --distinct去除重复的查询结果
from emp;
--6.查询emp表中的总人数
select count(empno)
from emp;
--7.查询emp表中姓名中带国字的员工
select * from emp
where ename=‘%国%‘;
--8.查询emp表中所有员工的年收入
select empno,(sal+nvl(comm,0))*12
from emp;
--9.向表空间users中添加一个大小为10mb的数据文件‘lc233_1.dbf‘
alter tablespace users
add datafile ‘d:\lc233_1.dbf‘ size 10m;
--10.向表空间users中添加一个可以自动扩展的数据文件‘lc233_2.dbf‘,大小5mb,每次扩展1mb,最大容量100mb
alter tablespace users
add datafile ‘d:\lc233_2.dbf‘ size 5m
autoextend on next 1m maxsize 100m;
--11.取消数据文件lc233_2.dbf的自动扩展
alter database
datafile ‘d:\lc233_2.dbf‘
autoextend off;
--12.查询数据库当前所有的数据文件的详细信息
select *
from dba_data_files;
--13.查询数据库当前所有控制文件信息
select *
from v$controlfile;
--14.向数据库中添加一个重做日志文件组(组号为4),包含一个成员文件undo04a.log,大小为4mb
alter database
add logfile group 4
(‘d:\undo04a.log‘)size 4m;
--15.向数据库中的重做日志组4中添加一个成员文件,名称为undo04b.log
alter database
add logfile member
‘d:\undo04b.log‘ to group 4;