学号姓名Oracle练习题

合集下载

oracle练习

oracle练习

函数练习
1.将字符串“study sql”使用替换函数改成 study oracle 2.计算2的8次幂 3.求20除以7的余数 4.从”I love you” 中取得”love” 5.计算2009-2 月-4与现在日期相差的月份个 数
视图索引
1.创建视图,在视图中包含的字段有:学号, 姓名,性别,出身日期,所在班级名称。 2.创建视图,在视图中包含的字段有:学号, 姓名,课程名称,成绩 3.创建成绩表的索引,按照课程编号的升序 和成绩的降序排序 4.创建学生表索引,按照班级编号降序排序
触发器
1.对成绩表创建触发器,当在表中插入数据 时,限制插入的成绩不能大于100分 2.对班级表创建触发器,当更新班级编号为 001的班级信息时,不允许更新。
Oracle练习题

表的创建: 1.使用命令创建学生表,表结构如下: 学生表(学号,姓名,性别,出生日期,班 级编号) 班级表(班级编号,班级名称) 2.使用企业管理器创建表 课程表(课程编号,课程名称) 成绩表(学号,课程编号,成绩)

表操作
3.数据表的操作 1)使用命令修改学生表的表结构,增加一个新的字段籍贯 2)为性别字段添加约束 3)使用命令添加数据到四张表中 4.实行如下的查询 1)查询学生表中的性别为女同学的信息 2)查询男女同学的人数 3)查询各个班级的人数据 4)查询课程号为01的学生成绩并且按照成绩的相机排序 5)查询数学课程的平均成绩 6)查询课程号为01课程中成绩高平均分的学生信息 7)将课程号为02课程的成绩都加10分 8)删除名称为计算机技术的班级 9)查询学生信息,查询结果的字段有学号,姓名,年龄 10)查询选修了03课程,切是男同学的学生信息
程序
1.接受2个数相除,并显示结果,如果除数为 0,则显示错误提示 2.输出九九乘法表

oracle练习及答案

oracle练习及答案

--7、以class降序显示student表的所有记录。 select * from student1 order by class desc;
--8、以cno升序、degree降序显示score表的所有记录。
select * from score1 order by cno asc ,degree desc;
95033 95033r(老师信息表) tno 804 856 825 831 833 tname 李诚 李旭 王萍 刘冰 王超 sex 男 男 女 女 男 birthday 12/02/58 03/12/69 05/05/72 08/14/77 02/12/61 prof 副教授 讲师 助教 助教 教授 depart 计算机系 电子工程系 计算机系 电子工程系 计算机系
--11、显示“3-105”号课程的平均分。
select avg(degree) from score1 where cno='3-105';
--12、显示score表中至少有5名学生选修的并以3开头的课程 号的平均分数. select avg(degree) from score1 where cno like '3%';
--9、显示“95031”班的学生人数。 select class, count(*) from student1 group by class having class=95031;
副标题
请写出下列查询语句并给出结果
--10、显示score表中的最高分的学生学号和课程号。
select sno,cno from score1 where degree=(select max(degree) from score1);

Oracle测试题及答案.doc

Oracle测试题及答案.doc
if s=:new.bno then
insert into borrow_save
values(:o,:new.bno,:new.rdate);
end if;
end;
/
12.建立一个视图,显示“力01”班学生的借书信息(只要求显示姓名和书名)。
create view ca_view as
解决两个写事务冲突的办法就是采用“加锁”机制。例如A、B两个事务同吋对一个表的某航数据进行修改,A事务首先修改时对该数据加锁,禁止其他事务对该数据的修改。只有当A事务完成修改工作、并将锁打开后,其他事物才被允许修改。这时候等待的B事务才可以对该数据进行修改。锁可以防止两个写事务同时对一个数裾进行修改,所以也就不会出现写丢失的错误。
11.在borrow表上建立一个触发器,完成如下功能:如果读者借阅的书名是“数据库技术及应用”,就将该读者的借阅记录保存在borrow_save表中(注:borrow_save表结构同borrow表)。
create table borrow_save as
(select * from borrow)
借书卡card (eno卡号,name姓名,class班级)
图书books (bno书号,bname书名,author作者,price单价,quantity库存册数)借书记录borrow (eno借书卡号,bno书号,rdate还书曰期)
注:限定每人每种书只能借一本;库存册数随借书、还书而改变。
1.写出建立borrow表的SQL语句,要求定义主码完整性约束和引用完整性约束create table card
mark INTEGER;
BEGIN
BEGIN//嵌套块1
select氺into tin_rec from tin ;

oracle综合题

oracle综合题

三、综合题(共48分)《软13级A》Oracle数据库有以下有相互关联的3个表:Student (学号, 姓名, 性别, 出生日期, 专业);Course(课程号, 课程名,学分);Score (学号, 课程号, 成绩)1、写出下列SQL语句。

(共24分)(1) 给“软件工程”专业选修了“c100”号课程的学生成绩加10分。

(2) 列出所有没有学生选修的课程号和课程名称。

(3) 显示score表中成绩为70,80或90的学号、姓名、课程号。

(4)查询所有成绩高于平均成绩的学号、课程号和成绩(5)显示student表中“软件工程”专业或性别为“女”的同学所有记录。

(6)查询Score表中成绩最高的前5条记录。

2、编写存储过程TotalScore,要求计算出score表中“c105”号课程的最高分和平均分,然后将最高分和平均分显示出来。

(8分)3、创建函数xkrs,要求输入课程编号作为参数,函数返回相应课程的选课人数。

(8分)4、在score表上创建触发器,当删除记录的时候,若课程成绩低于60则不能删除该选课记录。

(8分)1、(每小题4分,共24分)(1) 给“软件工程”专业选修了“c100”号课程的学生成绩加10分。

Upate score set 成绩=成绩+10 where 课程号=‘c105‘and 学号in(select 学号from student where 专业=‘软件工程’)(2) 列出所有没有学生选修的课程号和课程名称。

Select 课程号,课程名from coursewhere课程号not in (select distinct 课程号from score)(3) 显示score表中成绩为70,80或90的学号、姓名、课程号。

Select score.学号,姓名,课程号from score,studentWhere score.学号=student.学号and 成绩in(70,80,90)(4)查询所有成绩高于平均成绩的学号、课程号和成绩Select 学号,课程号,成绩from scoreWhere 成绩>(select avg(成绩) from score )(5)显示student表中“软件工程”专业或性别为“女”的同学所有记录。

Oracle练习题习题答案张表题

Oracle练习题习题答案张表题

Oracle练习题+习题答案(张表+题)create table student( sno varchar2(10) primary key,sname varchar2(20),sage number(2),ssex varchar2(5));create table teacher(tno varchar2(10) primary key,tname varchar2(20));create table course(cno varchar2(10),cname varchar2(20),tno varchar2(20),constraint pk_course primary key (cno,tno));create table sc(sno varchar2(10),cno varchar2(10),score number(4,2),constraint pk_sc primary key (sno,cno));/*******初始化学生表的数据******/insert into student values ('s001','张三',23,'男');insert into student values ('s002','李四',23,'男'); create table student(insert into student values ('s003','吴鹏',25,'男'); sno varchar2(10) primary key,insert into student values ('s004','琴沁',20,'女'); sname varchar2(20),insert into student values ('s005','王丽',20,'女'); sage number(2),insert into student values ('s006','李波',21,'男'); ssex varchar2(5)insert into student values ('s007','刘玉',21,'男'); );insert into student values ('s008','萧蓉',21,'女');insert into student values ('s009','陈萧晓',23,'女');insert into student values ('s010','陈美',22,'女');commit;/******************初始化教师表***********************/ insert into teacher values ('t001', '刘阳');create table teacher(insert into teacher values ('t002', '谌燕');tno varchar2(10) primary key,insert into teacher values ('t003', '胡明星');tname varchar2(20)commit; );/***************初始化课程表****************************/ insert into course values ('c001','J2SE','t002');insert into course values ('c002','Java Web','t002');insert into course values ('c003','SSH','t001'); create table course(insert into course values ('c004','Oracle','t001'); cnovarchar2(10),insert into course values ('c005','SQL SERVER 2005','t003'); cname varchar2(20),insert into course values ('c006','C#','t003'); tno varchar2(20),insert into course values ('c007','JavaScript','t002');constraint pk_course primary key (cno,tno)insert into course values ('c008','DIV+CSS','t001'); );insert into course values ('c009','PHP','t003');insert into course values ('c010','EJB3.0','t002');commit;/***************初始化成绩表***********************/insert into sc values ('s001','c001',78.9);insert into sc values ('s002','c001',80.9);create table sc(insert into sc values ('s003','c001',81.9);sno varchar2(10),insert into sc values ('s004','c001',60.9);cno varchar2(10),insert into sc values ('s001','c002',82.9);score number(4,2),insert into sc values ('s002','c002',72.9);constraint pk_sc primary key (sno,cno)insert into sc values ('s003','c002',81.9); ); insert into sc values ('s001','c003','59'); commit;练习:注意:以下练习中的数据是根据初始化到数据库中的数据来写的SQL 语句,请大家务必注意。

Oracle基础练习题及答案(多表查询1)(共5篇)

Oracle基础练习题及答案(多表查询1)(共5篇)

Oracle基础练习题及答案(多表查询1)(共5篇)第一篇:Oracle基础练习题及答案(多表查询1)利用scott用户自带的四张表完成如下作业:1.列出至少有一个员工的所有部门select b.deptno,b.dname from emp a,dept b where a.deptno=b.deptno group by b.deptno,b.dname having count(*)>=1;2.列出薪金比SMITH高的所有员工select * from emp where sal>(select sal from emp where ename='SMITH');3.列出所有员工的姓名及其直接上级领导的姓名select a.ename,b.ename “leader” from emp a,emp b wherea.mgr=b.empno;4.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称select a.empno,a.ename,a.hiredate,c.dname from emp a,emp b,dept c where a.mgr=b.empno and a.deptno=c.deptno anda.hiredate5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门select b.dname,a.* from emp a,dept b wherea.deptno(+)=b.deptno;6.列出所有CLERK(办事员)的姓名,及其部门名称,部门人数select aa.ename,aa.job,bb.dname,(select count(a.deptno)from emp a,dept b where a.deptno=b.deptno and b.dname=bb.dname group by a.deptno)from emp aa,dept bb where aa.deptno(+)=bb.deptno and aa.job='CLERK';7.列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数select a.job,min(sal),count(ename)from emp a,dept b wherea.deptno=b.deptno having min(sal)>1500 group by a.job;8.列出在部门SALES(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

oracle习题二

oracle习题二

oracle习题带答案(四)进入自己创建的用户下进行以下操作。

1、创建表STUDENT、COURSE、GRADE,各个表的结构如下:(1) STUDENT学号NUMBER(6),姓名V ARCHAR2(12)入学时间DA TE,专业V ARCHAR2(20),性别CHAR(2),年龄INTEGER(2) COURSE课程号NUMBER(6),课程名称V ARCHAR2(20),学时INTEGER,学分INTEGER(3) GRADE学号NUMBER(6),课程号NUMBER(6),成绩NUMBER(2)2、向上面的三个表中分别插入5条纪录。

答案如下:create table student(学号number(6),姓名varchar2(12),入学时间date,专业varchar2(20),性别char(2),年龄integer);create table course(课程号number(6),课程名称varchar2(20),学时integer,学分integer);create table grade(学号number(6),课程号number(6),成绩number);insert into student (学号,姓名,入学时间,专业,性别,年龄)values(100001,'dongji',to_date('2002-07-23','yyyy-mm-dd'), 'computer','男',23); insert into student (学号,姓名,入学时间,专业,性别,年龄)values(100002,'dongji2',to_date('2002-07-23','yyyy-mm-dd'), 'computer','女',23); insert into student (学号,姓名,入学时间,专业,性别,年龄)values(100003,'dongji3',to_date('2002-07-23','yyyy-mm-dd'), 'computer','男',23); insert into student (学号,姓名,入学时间,专业,性别,年龄)values(100004,'dongji4',to_date('2002-07-23','yyyy-mm-dd'), 'computer','男',23); insert into student (学号,姓名,入学时间,专业,性别,年龄)values(100005,'dongji5',to_date('2002-07-23','yyyy-mm-dd'), 'computer','男',23); insert into student (学号,姓名,入学时间,专业,性别,年龄)values(100006,'dongji6',to_date('2002-07-23','yyyy-mm-dd'), 'computer','男',23); insert into course (课程号,课程名称,学时,学分)values (000001, '计算机基础', 30, 3);insert into course (课程号,课程名称,学时,学分)values (000002, '软件工程', 20, 2);insert into course (课程号,课程名称,学时,学分)values (000003, '操作系统', 40, 2);insert into course (课程号,课程名称,学时,学分)values (000004, '组成原理', 40, 3);insert into course (课程号,课程名称,学时,学分)values (000005, 'c语言', 40, 3);insert into grade(学号,课程号,成绩)values(100001,000001, 90);insert into grade(学号, 课程号,成绩)values(100001,000002, 90);insert into grade(学号, 课程号,成绩)values(100002,000002, 90);insert into grade(学号, 课程号,成绩)values(100003,000001, 90);insert into grade(学号, 课程号,成绩)values(100004,000001, 90);。

Oracle考试题

Oracle考试题

Oracle 考试题一:单选题(每题1.5分,共60分)1.学生信息表StudentInfo如下所示:学号姓名所在省市0001 李辉北京0002 张明上海0003 王小玉北京0004 李淑华湖南0005 赵静上海┆┆┆查询所有学生来自于哪几个省市使用的语句为()。

(选择一项)A) Select unique 所在省市 from StudentInfoB) Select 所在省市 from StudentInfoC) Select only 所在省市 from StudentInfoD) Select distinct 所在省市 from StudentInfo2. 公司需要管理员工档案,你创建了2个表:员工表employees和部门表departments。

以下是两表的部分内容。

employees编号姓名年龄部门编号1 王涛 25 12 张力 24 13 李明 30 24 高嘉 24 3Departments编号部门名称1 人力资源部2 技术部3 销售部下列那列适合作为外键()。

(选择一项)A) Employees中的编号B) Employees中的部门编号C) departments中的编号D) 以上都适合3. 你使用以下T-SQL语句创建了一个视图v_emp和一个表students,create view v_emp as select * from emp where deptno=10;create table students(id number(5),stuname varchar2(10))请问这两个语句是:()。

(选择一项)A) DDL(数据定义语言)B) DML(数据操纵语言)C) DCL(数据控制语言)D) DQL (数据查询语言)4.当SQL登录帐户被授权为数据库用户后,要查询数据库中的表,还需要对其赋予select 权限,实现赋权的T-SQL语言属于()。

(选择一项)A) DDL(数据定义语言)B) DML(数据操纵语言)C) DCL(数据控制语言)D) DQL (数据查询语言)5. 你是公司的数据库管理员,数据库benet中有个员工表employees,该表中有职务列。

Oracle期末考试试题及答案

Oracle期末考试试题及答案
A.RETURNB.CALLC.SETD.EXEC
10.如果服务器进程无法在数据缓冲区中找到空闲块,为添加从数据文件中读出的数据块,则系统会启动如下哪一个进程( )
A.CKPTB. DBWRC.LGWRD. SMON
11.下列哪一个锁模式不属于Oracle( )。
A.死锁B.排他锁C.行级共享锁D.共享锁
ALTER TABLE Class
________________________;
10.假设用户Lisa用Lisa以普通用户身份登录到系统,现需创建一个UPDATE语句来修改本用户下ARTISTS表中的数据,并且把每一行的T_ID值都改成15,应该使用的SQL语句是________________________ ;
四、编程题(本大题共2小题,每题10分,共20分)
1.(5空,每空2分,共10分)
(1)SELECTempno,sal
FROM employee
WHEREempno BETWEEN 7300 AND 7600;
(2) OPEN cursor_sal
(3) INTO v_empno,v_sal
(4)COMMIT;
END;
(2)假设用户已登录SQL Plus系统,处于“SQL>_”命令提示符下,现需执行存储
过程Rise_sal,请写出命令:_______⑤___________
2.创建一个函数get_sal,用于实现对表Emp(如下图)给定一个员工号(Empno),
通过函数获取该雇员的工资值,请完成以下程序。
1.__________是具有名称的一组相关权限的组合。
2.一个表空间物理上对应一个或多个__________文件。
3.标准的SQL语言语句类型可以分为:__________、数据操纵语句(DML)和__________。

Oracle日常练习及答案.

Oracle日常练习及答案.

二、SQL语言(本大题共4小题,每空5分,总计40分)(1)请用系统用户登陆,创建用户zhang,口令为wang,并且赋予该用户创建表、视图、索引、序列、同义词、过程、函数的权限。

将代码和运行结果硬拷贝到下面:要求:修改sqlplus默认提示符为本人的姓名全称,方法举例如下:set sqlprompt liangyongxian>(2)创建上述学生表。

将代码和运行结果硬拷贝到下面:要求:修改sqlplus默认提示符为本人的姓名全称,方法举例如下:set sqlprompt liangyongxian>(3)向学生表插入两条数据。

将代码和运行结果硬拷贝到下面:要求:修改sqlplus默认提示符为本人的姓名全称,方法举例如下:set sqlprompt liangyongxian>(4)将第一个学生的年龄改为原来的年龄加1岁。

将代码和运行结果硬拷贝到下面:要求:修改sqlplus默认提示符为本人的姓名全称,方法举例如下:set sqlprompt liangyongxian>(5)将最后一条学生数据删除。

将代码和运行结果硬拷贝到下面:要求:修改sqlplus默认提示符为本人的姓名全称,方法举例如下:set sqlprompt liangyongxian>(6)查询所有学生的详细信息。

将代码和运行结果硬拷贝到下面:要求:修改sqlplus默认提示符为本人的姓名全称,方法举例如下:set sqlprompt liangyongxian>(7)查询年龄为某个区间的学生信息。

将代码和运行结果硬拷贝到下面:要求:修改sqlplus默认提示符为本人的姓名全称,方法举例如下:set sqlprompt liangyongxian>(8)查询和学号为‘***’相同性别的所有学生信息。

将代码和运行结果硬拷贝到下面:要求:修改sqlplus默认提示符为本人的姓名全称,方法举例如下:set sqlprompt liangyongxian>三、数据库对象(本大题共4小题,每题5分,总计20分)(1)创建一个视图,视图上看到的数据包括:性别和该性别的平均年龄。

Oracle期末考试试题及答案

Oracle期末考试试题及答案
C.一个表可以属于多个模式
D.一个模式可以拥有多个表
19.下列SELECT语句中,哪些子句可以包含子查询( )。
A.SELECT B.GROUP BY C.WHERE D.ORDER BY
20.在下列模式对象中,哪个对象不会占用实际的存储空间( )。
A.视图B.表C.索引D.簇
二、填空题(共8小题,10空需要填写,每空1分,共10分)
(1)请将函数get_sal补充完整(3空,每空2分,共6分)
CREATE OR REPLACE FUNCTION get_sal
(v_emp_no IN emp.empno%TYPE)
______________
IS
_ቤተ መጻሕፍቲ ባይዱ____________emp.sal%TYPE:=0;
BEGIN
SELECT sal
INTO v_emp_sal
FROM emp
WHERE empno=______________;
RETURN(v_emp_sal);
END get_sal;
(2)用函数get_sal查询员工7521号的工资,请写出一种查询方式。(4分)
课程名称
一、选择题:(本题共20小题,每题2分,共40分)
题号
三、程序填空(共10小题,10空需要填写,每空3分,共30分)
1.假设当前用户是SCOTT用户以普通用户登录,口令为tiger,请写出该用户以管理员身份登录的命令
________________________________________;
2.假设用户SCOTT以管理员身份登录,现需创建用户Lisa,口令是Lisa,请写出相应的命令___________________________________________;

Oracle笔试题B

Oracle笔试题B

《Oracle数据应用》期末(考试)试卷(B)班级:姓名:学号:一、选择题(具体要求,本大题共20道小题,每小题2分,共40分)1.在Oracle中,有一个教师表teacher的结构如下:ID NUMBER(5)NAME VARCHAR2(25)EMAIL VARCHAR2(50)下面哪个语句显示没有Email地址的教师姓名()。

A.SELECT name FROM teacher WHERE email != NULL;B.SELECT name FROM teacher WHERE email <> NULL;C.SELECT name FROM teacher WHERE email IS NULL;D.SELECT name FROM teacher WHERE email IS NOT NULL;2.在Oracle数据库的逻辑结构中有以下组件:A 表空间B 数据块C 区D 段这些组件从大到小依次是()。

A.A→B→C→DB.A→D→C→BC.A→C→B→DD.D→A→C→B3. 在Windows操作系统中,Oracle的()服务监听并接受来自客户端应用程序的连接请求( )A.OracleHOME_NAMETNSListenerB.OracleServiceSIDC.OracleHOME_NAMEAgentD.OracleHOME_NAMEHTTPServer4. 在Oracle 中创建用户时,若未提及DEFAULT TABLESPACE 关键字,则Oracle 就将( b )表空间分配给用户作为默认表空间SHL AX,2ERB.SYSTEMC.SYSD.DEFAULT5. 在Oracle中,下面哪条语句当COMM字段为空时显示0,不为空时显示COMM的值( ).A.SELECT ename, NVL(comm, 0) FROM emp;B.SELECT ename, NULL(comm, 0) FROM emp;C.SELECT ename, NULLIF(comm, 0) FROM emp;D.SELECT ename, DECODE(comm, NULL, 0) FROM emp;6. 在Oracle中,有一个名为seq的序列对象,以下语句能返回序列值但不会引起序列值增加的是( ).A.select from dual;B.select from dual;C.select from dual;D.select from dual;7. 在Oracle中,当控制一个显式游标时,下面哪种命令包含INTO子句( )。

oracle经典题

oracle经典题

用SQL语句或存储过程完成以下题目。

有成绩表T_Score(Stu_id和Lession_id为联合主键)缺考情况下不录入,例如B001的L002课程缺考。

Stu_id(学生号)Lession_id(课程)Score(成绩)A001 L001 90A001 L002 80A002 L001 70A002 L002 60B001 L001 50B001 L002………………学生档案t_stu_profile(Stu_id为主键)包含所有学生信息Stu_id(学生号)Stu_name(姓名)Class_id(班级)A001 张三06101A002 李四06101B001 王五06102………………课程信息表T_Lession(Lission_id为主键)包含所有课程信息Lession_id(课程号)Lession_des(课程)L001 语文L002 数学L003 英语L004 物理L005 化学一、找出缺考的学生名单,输出如下格式:Class_id(班级)Stu_name(姓名)Lession_des(课程)06102 王五数学………………要求:如果不使用游标,如何实现;如果使用游标,又如何实现?二、找出五门课程中的年级前三名,输出如下格式:(假设前三名不出现并列的情况)Lession_des(课程)第一名第二名第三名语文数学英语物理化学………………要求:如果不使用游标,如何实现;如果使用游标,又如何实现?三、输出06101班的学生成绩单,格式如下:姓名语文数学英语物理化学总分……要求:如果不使用游标,如何实现;如果使用游标,又如何实现?四、假如成绩表增加考试日期Test_Date,记录高中三年大大小小每次考试成绩。

请问:如何求出高三阶段(2005年),第位学生的第门课的平均考试成绩。

(缺考以及60分以下的成绩不计入平均,如高三数学共考试20次,B001缺考一次、另一次成绩58分,则B001的平均考试成绩以18次计算)。

oracle 练习题

oracle 练习题

一、选择题1. 下面语句中,哪种语句用来创建视图?A. CREATE TABLEB. ALTE VIEWC. DROP VIEWD. CREATE VIEW2.以下哪项陈述最符合此SQL 语句中“学生”表发生的变化?UPDATE 学生SET 午餐编号= (SELECT 午餐编号 FROM 学生WHERE 学生标识= 17 )WHERE 学生标识= 19;A. 此语句将更新“学生”表,具体操作为将标识号为19 的学生的午餐编号替换为标识号为17 的学生的午餐编号。

B. 将一个新行插入“学生”表中。

C. 不发生任何变化,因为不能在UPDATE 语句中使用子查询。

D. 删除学生17 的午餐编号,并根据学生19 的午餐编号插入一个新值。

3.以下哪条SELECT 语句将返回一个数字值?A. SELECT SYSDATE - 7 FROM 雇员;B. SELECT (SYSDA TE - 聘用日期) / 7 FROM 雇员;C. SELECT ROUND(聘用日期, DAY) FROM 雇员;D. SELECT SYSDATE + 600 / 24 FROM 雇员;4.以下SQL 语句将返回什么结果?SELECT ROUND(45.923,-1) FROM DUAL;A. 45.9B. 46C. 50D. 上述各项都不是5.如果需要以全部大写的形式显示每个雇员的姓名,应使用以下哪个函数?A. CASEB. UCASEC. UPPERD. TOUPPER6.下列关于函数的说法中哪个是不正确的?A. SYSDA TE 函数返回Oracle Server 日期和时间。

B. ROUND 数字函数将值舍入到指定的小数位或最近的整数。

C. CONCAT 函数只能用于字符串,不能用于数值。

D. SUBSTR 字符函数返回从指定字符位置开始到指定长度的部分字符串。

7.以下关于列的叙述中,哪一项是不正确的?A. 可以增大CHAR 列的宽度。

oracle 练习有答案

oracle 练习有答案
insert into SC values('02' , '02' , 60)
insert into SC values('02' , '03' , 80)
insert into SC values('03' , '01' , 80)
insert into SC values('03' , '02' , 80)
--3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
select Student.S#,Student.Sname,avg(Score)
from Student,SC
where Student.S#=SC.S#
group by Student.S#,Student.Sname
from Student,SC
where Student.S#=SC.S#
group by Student.S#,Student.Sname
having avg(score)<60;
--5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
select Student.S#,Student.Sname,count(SC.C#),sum(score)
insert into Teacher values('01' , N'张三')
insert into Teacher values('02' , N'李四')
insert into Teacher values('03' , N'王五')

orcl基础练习题

orcl基础练习题

orcl基础练习题Oracle Corporation(ORCL)是全球最大的企业级软件公司之一,它的产品广泛应用于数据库管理系统、云计算、商业智能等领域。

本文将为读者提供一些ORCL基础练习题,帮助其巩固相关知识和技能。

练习题一:SQL查询1. 查询所有学生的姓名、年龄和性别。

2. 查询所有成绩大于等于80分的学生的姓名和成绩。

3. 查询年龄在20岁到25岁之间的男生的姓名和年龄。

4. 查询年龄最小的学生的姓名、年龄和性别。

5. 查询每个班级的学生数量。

练习题二:表操作1. 创建一个名为“student”的表,包含字段:学号(id,整数型)、姓名(name,字符串型)、年龄(age,整数型)、性别(gender,字符串型)。

2. 向表中插入以下学生信息:(101, 'Alice', 20, 'Female'),(102,'Bob', 22, 'Male'),(103, 'Cathy', 21, 'Female'),(104, 'David', 23,'Male')。

3. 更新学号为102的学生的姓名为'John'。

4. 删除学号为104的学生。

练习题三:数据查询与操作有以下两张表:Table: Students学号(id)姓名(name)班级(class)101 Alice A1102 Bob A2103 Cathy A1104 David A3Table: Scores学号(id)课程(course)分数(score)101 Math 88102 Math 78103 Math 92101 English 90102 English 85103 English 88请根据以上表格回答以下问题:1. 查询每个学生的姓名、所在班级和总分数。

2. 查询每个学生的姓名、班级和平均分数。

oracle数据库练习及答案

oracle数据库练习及答案

oracle数据库练习及答案用SQL语句创建如下三张表:学生表(Student)、课程表(Course)和学生选课表(SC),三张表结构如下:Student表结构列名说明数据类型约束sno 学号字符串,长度为7 主键sname 姓名字符串,长度为10 非空ssex 性别字符串,长度为2 取‘男’或‘女’sage 年龄整数取值15~45sdept 所在系字符串,长度为20 默认为‘计算机系’Course表结构列名说明数据类型约束cno 课程号字符串,长度为10 主键cname 课程名字符串,长度为20 非空ccredit 学分整数取值大于0semster 学期整数取值大于0period 学时整数取值大于0SC表结构列名说明数据类型约束sno 学号字符串,长度为7 主键,引用Student的外键cno 课程号字符串,长度为10 主键,引用Course的外键grade 成绩整数取值0~100student数据sno s name ssex sage sdept9512101 李勇男19 计算机系9512102 刘晨男20 计算机系9512103 王敏女20 计算机系9512104 张立男22 信息系9512105 钱小平女21 信息系9512106 吴宾女20 数学系9512107 王大力男19 数学系course数据cno c name ccredit seme sterc01 计算机文化学 3 1c02 Java 8 5c03 计算机网络 4 3c04 数据库基础 5 6c05 高等数学 6 2c06 数据结构7 4sc数据9512101 cno grade XKLB9512101 c01 90 必修9512101 c02 必修9512102 c01 78 必修9512102 c03 66 选修9512103 c04 82 选修9512104 c06 75 必修-1 查询成绩大于90分的学生的学号和姓名select s.sno,s.sname2 from student s ,sc3 where s.sno=sc.sno and sc.grade>90;0. 查询选修了“数据库基础”课程的学生的学号和姓名select se.*,s.snamefrom student s,(select sc.sno ss fromsc,course cowhere/doc/3512688785.html,o=/doc /3512688785.html,o and/doc/3512688785.html,o=(select cno from course where cname='数据库基础')) sewhere s.sno=se.ss1.查询全体学生的学号和姓名select sno,sname from student;2.查询全体学生的姓名、学号和所在系select sno,sname,sdept from student;3.查询全体学生的姓名及其出生年份select sname,(sysdate-sage*365) from student;4.查询全体学生的姓名和出生年份,并在出生年份列前加入一个列,此列的每行数据均为“Year of Birth”常量值select sname,'year of birth'||(sysdate-sage*365) from student5.在选课表(SC)中查询有哪些学生选修了课程,并列出学生的学号select s.sname,s.sno2 from student s,(select sno from sc where xklb='选修') sd3 where s.sno=sd.sno;6.查询所有年龄在20岁以下的学生的姓名及年龄select sname,sage from student where sage<20;7.查询考试成绩不及格的学生的学号select sno,grade from sc where grade<60;8.查询年龄不在20~23岁之间的学生的姓名、所在系和年龄select sname,sage,sdept from student where sage not between 20 and 23;9.查询信息系、数学系、和计算机系学生的姓名和性别select sname,ssex from student where sdept in('计算机系','信息系','数学系')10.查询既不属于信息系、数学系、也不属于计算机系学生的姓名和性别select sname,ssex from student where sdept not in('计算机系','信息系','数学系')11.查询姓“张”的学生的详细信息select * from student where sname like('张%')12.查询选修了课程“c01”的学生的学号及其成绩,查询结果按成绩降序排列select sno,grade from sc where cno='c01' order by grade desc13.查询全体学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列select * from student order by sdept asc,sage desc;14.统计学生总人数select count(*) from student15.统计选修了课程的学生的人数select count(*) from sc where xklb='选修'16计算学号为9512101的学生的考试总成绩之和select sum(grade) from sc where sno='9512101'17计算课程“c01”的学生的考试平均成绩,查询选修了课程“c01”的学生的最高分和最低分select avg(grade),max(grade),min(grade) from sc where cno='c01'18查询年龄最大的学生的姓名select sname,sage from student where sage=(select max(sage) from student)20查询选修了3门以上课程的学生的学号select s.* from (select sno,count(*) cun from sc group by sno) s2 where s.cun>1;21查询选课门数等于或大于1门的学生的平均成绩和选课门数select s.* from (select sno,count(*) cun ,avg(grade) from sc group by sno) swhere s.cun>122查询每个学生的情况及其选课的情况select s.* , scp.scc,/doc/3512688785.html, from student s,(select sc.sno no,/doc/3512688785.html,o scc ,/doc/3512688785.html,ame name from sc,course cowhere/doc/3512688785.html,o=/doc /3512688785.html,o) scpwhere s.sno=scp.no(+)23查询信息系选修Java课程的学生的成绩,要求列出学生姓名、课程名和成绩select sc.sno,s.sname,/doc/3512688785.html,ame,sc.g radefrom course co,sc,student swhere/doc/3512688785.html,o=/doc /3512688785.html,o and s.sno=sc.snoand /doc/3512688785.html,ame='Java'24查询与“刘晨”在同一个系的学生select sno,sname from student where sdept=(select sdept from student where sname='刘晨') 25查询选修了课程“c02”且成绩高于此课程的平均成绩的学生的学号和成绩select sno,grade from sc where grade>(select avg(grade) from sc where cno='c01');26查询选修了课程“c01”的学生姓名select s.sname from student s,sc2 where s.sno=sc.sno and /doc/3512688785.html,o='c01';27将新生记录(9521105,陈冬,男,信息系,18岁)插入到Student表insert into student(sno,sname,ssex,sage,sdept) values('9521105','陈冬','男','18','信息系');28创建表Test1,列名为(sno,sname,ssex),查询表Student 表中的sno列和sname列的值,然后将查询的结果插入表T est1中29将所有学生的年龄加1select sname,sage,(sage+1) from student30将‘9512101’学生的年龄改为21岁update student set sage=21 where sno='9512101';31将计算系全体学生的成绩加5分update sc set grade=grade+5 where sno=(select sno from student where sdept='计算机系')32删除所有学生的选课记录33删除所有不及格学生的选课记录///////////////////////////////////////////////////1、查询生选课表中的全部数据select * from sc;2、查询计逄机系学生的姓名、年龄select sname,sage from student where sdept='计算机系';3、查询成绩在70~80分之间的学生的学号、课程号和成绩4、查询计算机系年龄在18~20岁之间且性别为“男”的生的姓名和年龄5、查询课程号为“c01”的课程的最高分数6、查询计算机系学生的最大年龄和最小年龄7、统计每个系的学生人数8、统计每门课程的选课人数和考试最高分9、统计每个学生的选课门数和考试总成绩,并按选课门数的升序显示结果10、查询总绩超过200分的学生,要求列出学号、总成绩11、查询选修了课程“c02”的学生的姓名和所在系12、查询成绩在80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果13、查询哪些课程没有人选,要求列出课程号和课程名称14、用子查询实现如下查询:(1)查询选修了课程“c01”的学生的姓名和所在系(2)查询数学系成绩在80分以上的学生的学号、姓名(3)查询计算机系考成绩最高的学生的姓名15、创建一个新表,表名为test_t,其结构为(COL1,COL2,COL3),其中:COL1:整型,允许空值COL2:字符型,长度为10,不允许为空值COL3:字符型,长度为10,允许为空值试写出按行插入如下数据的语句(空白处表示不提供值):序号COL1 COL2 COL3(1)B1(2) 1 B2 C2(3) 2 B316、删除选课成绩小于50分的学生的选课记录17、将所有选修了课程“c01”的学生的成绩中10分18、将计算机系所有选修了“计算机文化学”课程的学生的成绩加10分19、修改第15题创建的表的结构:(1)增加一个新的列COL4,货币类型,允许空值(2)将第15题创建的表的COL2列的长度改为:字符型,长度为12 (3)删除第15题创建的表的COL3列。

Oracle的sql语句练习题与答案

Oracle的sql语句练习题与答案

Oracle的sql语句练习题含答案(二)Oracle_SQL练习题11.选择部门30中的所有员工.2.列出所有办事员(CLERK)的姓名,编号和部门编号.3.找出佣金高于薪金的员工.4.找出佣金高于薪金的60%的员工.5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.7.找出收取佣金的员工的不同工作.8.找出不收取佣金或收取的佣金低于100的员工.9.找出各月倒数第3天受雇的所有员工.10.找出早于12年前受雇的员工.11.以首字母大写的方式显示所有员工的姓名.12.显示正好为5个字符的员工的姓名.13.显示不带有"R"的员工的姓名.14.显示所有员工姓名的前三个字符.15.显示所有员工的姓名,用a替换所有"A"16.显示满10年服务年限的员工的姓名和受雇日期.17.显示员工的详细资料,按姓名排序.18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.22.找出在(任何年份的)2月受聘的所有员工。

23.对于每个员工,显示其加入公司的天数.24.显示姓名字段的任何位置包含"A"的所有员工的姓名.25.以年月日的方式显示所有员工的服务年限.答案:1.select ename,job,mgr,hiredate,sal,comm ,deptno from emp where deptno=30;2.select ename,empno,deptno from emp where job='CLERK';3.select * from emp where comm>sal;4.select *from empwhere comm>sal*0.6;5.select empno ,ename, job,hiredate,sal,comm,deptnofrom empwhere( job='MANAGER' and deptno=10)or( job='CLERK' and deptno=20);6.select empno,ename,job, hiredate,sal, deptnofrom empwhere ( job='MANAGER' and deptno=10)or( job='CLERK' and deptno=20)or((job <>'MANAGER' and job<>'CLERK') and sal>=2000);7.select distinct ename,job,commfrom empwhere NVL(comm,0)>0;注意如果像上面这样写,就job ename comm 3个同时不同的都列出来正确的是:select distinct jobfrom empwhere NVL(comm,0)>0;8.select ename,comm. from emp where NVL(comm,0)=0 or NVL(comm,0)<100; 如果按上面的写法就重复了,直接可以写成select ename,commfrom empwhere NVL(comm,0)<100;9 select ename, job,last_day(hiredate)-3from emp;select ename, job,hiredatefrom empwhere hiredate=last_day(hiredate)-2;10.select ename,jobfrom empwhere months_between(sysdate,hiredate)/12>1211.select initcap(ename) name ,job, hiredatefrom emp;12. select ename,job,hiredate from emp where length(ename)=5;13 select ename, job from emp where ename not like '%R%';14.select substr(ename, 1,3) name,job,hiredate from emp;15select replace(ename, 'A','a') name,job,hiredate from emp;16select ename, job, hiredate from empwhere months_between(sysdate,hiredate)/12>=10;17. select * from emp order by ename;18.select ename, hiredate from emp order by hiredate desc;19.select ename,job, sal from emp order by job desc, sal asc;20.select ename, to_char(hiredate,'yyyy') year, to_char(hiredate,'mm') monthsfrom emporder by months, year asc;21.select ename, sal/30 dailysalfrom emp;22. select ename, hiredatefrom empwhere to_char(hiredate,'mm')='02';23. select ename,sysdate-hiredate 天数from emp;24.select ename from emp where instr(ename,'A',1)>0;25. select ename, to_char(hiredate,'yyyy/mm/dd') from emp;--26.列出至少有一个员工的所有部门.select dname from emp,dept where emp.deptno=dept.deptno group by dname;select distinct dname from emp,dept where emp.deptno=dept.deptno;--说明:(1)select中出现的字段一定要出现在group by中;-- (2)如果select中出现的字段不出现在group by中,则一定要出现在select的聚合函数中,对于想出现的字段,可用max()或min()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle练习题1.向LOCATION表中插入以下2条数据1)区域编号1(自动生成),大连Insert into location values(seq_location.nextval,’大连’);2)区域编号2(自动生成),Insert into location values(seq_location.nextval);2.查询LOCATION表中的所有区域编号Select location_id from location;3.向DEPARTMENT表中插入以下2条数据1)部门编号1(自动生成),教学部,查询区域所在地是大连的该区域编号Insert into department values(seq_department.nextval,’教学部’,(select location_id from location where city =‘大连’));2)部门编号2(自动生成),市场部,区域编号2Insert into department values(seq_department.nextval,’市场部’,2);4.查询DEPARTMENT表中的所有部门编号Select department_name form department;5.向EMPLOYEES表中插入以下2条数据1)雇员编号1(自动生成),张三,部门编号1,teacher1,3000,2006-9-5,aa@ Insert into employees values(seq_employees.nextval,‘张三’,1,’teacher1’,3000,to_date(’2006-9-5’,’yyyy-mm-dd’),’aa@’);2)雇员编号2(自动生成),李四,部门编号2,agora1,2500,2006-9-5,,82365421 Insert into employees values(seq_employees.nextval,’李四’,2,’agoral’,2500,to_date(‘2006-9-5’,’yyyy-mm-dd’),82365421);6.查询EMPLOYEES表中所有的数据Select * from employees;7.查询EMPLOYEES表中薪水大于2500的所有数据select * from employees where salary > 2500;8.查询EMPLOYEES表中薪水大于等于2500的所有数据Select * from employees where salary>=2500;9.查询EMPLOYEES表中薪水小于2500的所有数据Select * from employees where salary < 2500;10.查询EMPLOYEES表中薪水小于等于2500的所有数据Select * from employees where salary < =2500;11.查询EMPLOYEES表中薪水不等于2500的所有数据(要求2种写法)Select * from employees where salary != 2500;Select * from employees where salary <> 2500;12.查询EMPLOYEES表中雇员编号在1~10之间的所有数据,包括1和10Select * from employees where employees_id between 1 and 10;13.查询EMPLOYEES表中雇员编号不是2的所有雇员信息Select * from employees where employees_id <>2;14.查询EMPLOYEES表中雇员姓名中第二个字是“三”的雇员的所有信息Select * from employees where last_name like ‘_三%’;15.查询EMPLOYEES表中电话为空的雇员的所有信息Select * from employees where phone_number is null;16.查询EMPLOYEES表中现有数据的个数Select count(*) from employees;17.查询EMPLOYEES表中最大薪水值Select max(salary) from employees;18.查询EMPLOYEES表中最小薪水值Select min(salary) from employees;19.查询EMPLOYEES表中薪水的平均值Select avg(salary) from employees;20.查询EMPLOYEES表中所有薪水的和Select sum(salary) from employees;21.查询EMPLOYEES表中部门的编号和该部门的平均薪水(使用分组查询)Select department_id,avg(salary) from employees group by department_id;22.查询EMPLOYEES表中的所有信息,要求根据雇员姓名倒序排列Select * from employees order by last_name desc;23.把雇员姓名为“张三”的工资涨到3500,把工资为2500的雇员的工资涨到3000Update employees set salary=3500 where last_name like ‘张三’;Update employees set salary=3000 where salary=2500;24.根据区域编号2查询LOCATION表中该区域所在的城市,如果结果为空值则用“大连”来代替Select nvl(city,’大连’) from location where location_id=2;25.根据雇员姓名为“张三”的查询EMPLOYEES表中该雇员的工作编号,并以此作为条件查询EMPLOYEES表中该雇员的姓名、工作编号、薪水等信息(使用子查询)Select last_name,job_id,salary from employees where job_id=(select job_id from employees where last_name like ‘张三’);26.查询EMPLOYEES表中的最少薪水,并根据这个结果查询EMPLOYEES表中薪水等于这个值的雇员编号、姓名、工作编号和薪水等信息(使用子查询)Select employees_id,employees_name,job_id,salary from employees where salary=(select min(salary) from employees);27.查询EMPLOYEES表中的雇员编号、姓名、部门编号和DEPARTMENT表中的部门编号、部门名称、部门所在的区域编号(使用2表连接)Selecte.employees_id,st_name,e.department_id,d.department_id,department_name,location_idFrom employees e join department d on e.department_id=d.department_id ;28.查询EMPLOYEES表中的雇员编号、姓名、部门编号和DEPARTMENT表中的部门编号、部门名称、部门所在的区域编号以及LOCATION表中的区域编号、该区域所在的城市(使用多表连接)select e.employees_id, st_name, e.department_id, d.department_id, d.department_name,d.location_id, l.location_id, l.city from employees e, department d, location l wheree.department_id=d.department_id and d.location_id=l.location_id29.查询EMPLOYEES表中的雇员姓名、部门编号和DEPARTMENT表中的部门名称(使用左连接)select st_name, e.department_id, d.department_name from employees e left join department d on e.department_id=d.department_id30.查询EMPLOYEES表中的雇员姓名、部门编号和DEPARTMENT表中的部门名称(使用右连接)select st_name, e.department_id, d.department_name from employees e right join department d on e.department_id=d.department_id1.查询地点编号为1的城市Select city from location where location_id=1;2.查询工资在2000-5000之间的员工的信息Select * from employees where salary between 2000 and 5000;3.查询‘张三’所在的部门名称Select department_name from department where department_id=(select department_id from employees where last_name = ‘张三’ );4.查询每个雇员的的姓名,部门名称,工作地点5.统计每个职位(job_id)的人数Select count(*) from employees where job_id=’agoral’;Select count(*) from employees where job_id=’teacher1’;6查询location表中的全部数据Select * from location;7 删除email为“aa@”的员工记录Delete * from employees where email=’aa@’;8查询job_id为teacher1的姓名及工资。

Select last_name,salary from employees where job_id=’teacher1’;9将所有job_id为” president”的工资增加100。

Update employees set salary=salary+100 where job_id=’president’;10查询部门名称中带有“大连”字样的部门的名称Select department_name from department where department_name like ‘%大连%’;11查询系统当前日期,以及seq_location的下一个值Select location_id from location where location_id > seq_location desc limit 1;12’mouse’部门的平均工资。

相关文档
最新文档