oracle 练习
- 格式:doc
- 大小:106.50 KB
- 文档页数:16
史上最全Oracle数据库基本操作练习题(含答案)oracle基本操作练习题使用表格:员工表(emp):部:(deptnonumber(2)notnull,--部门编号dnamevarchar2(14),--部门名称locvarchar2(13)―部门地址)注:添加、删除和修改相对简单。
这些练习旨在进行数据查询。
查询主要使用函数、运算符、模糊查询、排序、分组、变量关联、子查询、分页查询等。
建表脚本(根据需要使用):创建表脚本1练习:2.找出部门10中所有经理(manager)和部门20中所有办事员(clerk)的详细资料。
从empwhere(job='manager'和deptno=10)或(job='clerk'和deptno=20)中选择*;3.统计各部门的薪水总和。
按deptno从empgroup中选择deptno,sum(sal);4.找出部门10中所有理(manager),部门20中所有办事员(clerk)以及既不是经理又不是办事员但其薪水大于或等2000的所有员工的详细资料。
从empwhere(job='manager'和deptno=10)或(job='clerk'和deptno=20)或(jobnotin('manager','clerk')和sal>2000)中选择*;5.列出各种工作的最低工资。
从empgroupbyjob中选择job,min(sal);26.列出每个部门经理的最低工资。
selectdeptno,min(sal)fromempwherejob='manager'groupbydeptno;7.了解领取奖金的员工的不同工作。
9.找出各月最后一天受雇的所有员工。
选择*fromempwherehiredate=最后一天(hiredate);10.显示所有员工的姓名,首字母大写。
oracle练习题及答案Oracle练习题及答案Oracle是一种强大的关系数据库管理系统,被广泛应用于企业级应用程序和数据管理中。
为了帮助大家更好地掌握Oracle数据库的知识,以下是一些Oracle练习题及答案,希望能够帮助大家更好地理解和掌握Oracle数据库的知识。
1. 什么是Oracle数据库?Oracle数据库是一种关系数据库管理系统,由美国Oracle公司开发。
它是一种高性能、可靠性高的数据库系统,被广泛应用于企业级应用程序和数据管理中。
2. Oracle数据库的特点有哪些?Oracle数据库具有以下特点:高性能、高可用性、可伸缩性、安全性高、灵活性强、易管理等。
3. 如何创建一个新的数据库用户?在Oracle数据库中,可以使用以下SQL语句来创建一个新的数据库用户:```CREATE USER username IDENTIFIED BY password;```4. 如何查看Oracle数据库中所有的表?可以使用以下SQL语句来查看Oracle数据库中所有的表:```SELECT table_name FROM user_tables;```5. 如何在Oracle数据库中插入一条新的记录?可以使用以下SQL语句来在Oracle数据库中插入一条新的记录:```INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);```6. 如何在Oracle数据库中更新一条记录?可以使用以下SQL语句来在Oracle数据库中更新一条记录:```UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;```7. 如何在Oracle数据库中删除一条记录?可以使用以下SQL语句来在Oracle数据库中删除一条记录:```DELETE FROM table_name WHERE condition;```通过以上Oracle练习题及答案的学习,相信大家对Oracle数据库有了更深入的了解。
ORACLE基础练习1.desc table_name 可以查询表的结构2.怎么获取有哪些用户在使用数据库select username from v$session;3.如何在Oracle服务器上通过SQLPLUS查看本机IP地址? select sys_context('userenv','ip_address') from dual;4.如何给表、列加注释?SQL>comment on table 表is '表注释';注释已创建SQL>comment on column 表.列is '列注释';注释已创建。
查询该用户下的注释不为空的表SQL> select * from user_tab_comments where comments is not null;5.如何在ORACLE中取毫秒?select systimestamp from dual;6.如何在字符串里加回车?添加一个||chr(10)select 'Welcome to visit'||chr(10)||'' from dual ;7.怎样修改oracel数据库的默认日期?alter session set nls_date_format='yyyymmddhh24miss';8.怎么可以看到数据库有多少个tablespace?select * from dba_tablespaces;9.如何显示当前连接用户?SHOW USER10.如何测试SQL语句执行所用的时间?SQL>set timing on ;11.怎么把select出来的结果导到一个文本文件中?SQL>SPOOL F:\ABCD.TXT;SQL>select * from table;SQL >spool off;12.如何在sqlplus下改变字段大小?alter table table_name modify (field_name varchar2(100));改大行,改小不行(除非都是空的)13.如果修改表名?alter table old_table_name rename to new_table_name;14.如何搜索出前N条记录?(desc降序)SELECT * FROM Tablename WHERE ROWNUM < nORDER BY column;15. 如何在给现有的日期加上2年?select add_months(sysdate,24) from dual;16.Connect string是指什么?17.返回大于等于N的最小整数值?SELECT CEIL(-10.102) FROM DUAL;18.返回小于等于N的最大整数值?SELECT FLOOR(2.3) FROM DUAL;19.返回行的物理地址SELECT ROWID, ename FROM tablename WHERE deptno = 20 ;20.将N秒转换为时分秒格式?set serverout ondeclareN number := 1000000;ret varchar2(100);beginret := trunc(n/3600) || '小时' || to_char(to_date(mod(n,3600),'sssss'),'fmmi"分"ss"秒"'); ine(ret);end;21.如何监控当前数据库谁在运行什么SQL语句?SELECT osuser, username, sql_text from v$session a, v$sqltext bwhere a.sql_address =b.address order by address, piece;22.如何知道当前用户的ID号?SQL>SHOW USER;ORSQL>select user from dual;23.如何知道使用CPU多的用户session?11是cpu used by this sessionselect a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value from v$session a,v$process b,v$sesstat cwhere c.statistic#=11 and c.sid=a.sid and a.paddr=b.addr order by value desc;建立表空间和用户的步骤:用户建立:create user 用户名identified by "密码";授权:grant create session to 用户名;grant create table to 用户名;grant create tablespace to 用户名;grant create view to 用户名;表空间建立表空间(一般建N个存数据的表空间和一个索引空间):create tablespace 表空间名datafile ' 路径(要先建好路径)\***.dbf ' size *Mtempfile ' 路径\***.dbf ' size *Mautoextend on --自动增长--还有一些定义大小的命令,看需要default storage(initial 100K,next 100k,);用户权限授予用户使用表空间的权限:alter user 用户名quota unlimited on 表空间;或alter user 用户名quota *M on 表空间;create tablespace zq datafile 'D:\zq\zw.dbf' SIZE 1000M AUTOALLOCATE;修改用户的默认表空间alter user username default tablespace tablespacename;25.在sqlplus 中清屏命令:clear src clear screen; cl scr;怎样用语句查询表空间里面表的内容?select table_name from all_tables where tablespace_name='zq';select table_name from user_tables where tablespace_name='xx'26.如何查询表在哪个表空间中?(单引号里面的要大写)SELECT tablespace_name FROM USER_TABLES WHERE table_name = 'YOUR_TABLENAME'查一下,这个表是哪个用户下的,如果是本用户则可以用上面的sql如果是别的用户的表你就用SELECT tablespace_name FROM DBA_TABLES WHERE table_name = 'YOUR_TABLENAME' and owner='表的OWNER'还有你要确定你查的确实是一个表而不是view 或SYNONYM而且在引号里面的表名和owner都要用大写字母create table aa(a varchar2(10),b number(8,2),c date) tablespace users;如果在创建用户时没有指定默认表空间,系统默认表空间为System,在创建表时必须指定tablespace;28.如何查询一个表空间下的所有表(单引号里面的要大写)select table_name from user_tables where tablespace_name='表空间名';29.更改计算机名后会出现Oracle ORA-12541:TNS:no listener错误解决方法修改为现在的计算机名,再次启动OracleOraHome90TNSListener服务成功31.oracle10g em Database Control的启动问题修复打开http://localhost:1158/em/ 显示数据库状态没有启动,提示用户登录错误ORA-28000: the account is locked,使用PL/SQL或SQL*plus连接是正常的。
O r a c l e经典练习题(很全面)Oracle 经典练习题一.创建一个简单的PL/SQL程序块1.编写一个程序块,从emp表中显示名为“SMITH”的雇员的薪水和职位。
declarev_emp emp%rowtype;beginselect * into v_emp from emp where ename='SMITH';dbms_output.put_line('员工的工作是:'||v_emp.job||' ;他的薪水是:'||v_emp.sal);end;2.编写一个程序块,接受用户输入一个部门号,从dept表中显示该部门的名称与所在位置。
方法一:(传统方法)declarepname dept.dname%type;ploc dept.loc%type;pdeptno dept.deptno%type;beginpdeptno:=&请输入部门编号;select dname,loc into pname,ploc from dept wheredeptno=pdeptno;dbms_output.put_line('部门名称: '||pname||'所在位置:'||ploc);exception –异常处理when no_data_foundthen dbms_output.put_line('你输入的部门编号有误!!');when othersthen dbms_output.put_line('其他异常');end;方法二:(使用%rowtype)declareerow dept%rowtype;beginselect * into erow from dept where deptno=&请输入部门编号;dbms_output.put_line(erow.dname||'--'||erow.loc); exceptionwhen no_data_foundthen dbms_output.put_line('你输入的部门号有误!!!');when othersthen dbms_output.put_line('其他异常');end;3.编写一个程序块,利用%type属性,接受一个雇员号,从emp表中显示该雇员的整体薪水(即,薪水加佣金)。
oracle上机试题及答案Oracle上机试题及答案1. 查询当前数据库版本- 请写出SQL语句来查询当前数据库的版本。
答案:```sqlSELECT * FROM V$INSTANCE;```2. 创建表- 编写SQL语句创建一个名为`employees`的表,包含字段`id`(主键,自动增长),`name`(姓名),`department`(部门),`salary`(薪资)。
答案:```sqlCREATE TABLE employees (id NUMBER GENERATED ALWAYS AS IDENTITY,name VARCHAR2(100),department VARCHAR2(50),salary NUMBER(10, 2),PRIMARY KEY (id));```3. 插入数据- 向`employees`表中插入一行数据,姓名为"John Doe",部门为"IT",薪资为5000。
答案:```sqlINSERT INTO employees (name, department, salary) VALUES('John Doe', 'IT', 5000);```4. 更新数据- 更新`employees`表中姓名为"John Doe"的员工的薪资为6000。
答案:```sqlUPDATE employees SET salary = 6000 WHERE name = 'John Doe'; ```5. 删除数据- 删除`employees`表中所有薪资低于3000的员工记录。
答案:```sqlDELETE FROM employees WHERE salary < 3000;```6. 查询数据- 查询`employees`表中所有员工的姓名和薪资,并按薪资从高到低排序。
oracle期末考试题及答案一、选择题(每题2分,共20分)1. Oracle数据库中的用户和模式是什么关系?A. 完全相同B. 完全不同C. 模式是用户的集合D. 用户是模式的集合答案:C2. 在Oracle数据库中,以下哪个命令用于查看当前用户?A. SELECT USER FROM DUAL;B. SELECT CURRENT_USER FROM DUAL;C. SELECT SESSION_USER FROM DUAL;D. SELECT SYSTEM_USER FROM DUAL;答案:A3. Oracle数据库中的哪个参数用于设置数据库的字符集?A. DB_CHARSETB. NLS_CHARACTERSETC. DB_LANGUAGED. NLS_LANGUAGE答案:B4. 在Oracle数据库中,以下哪个不是SQL语句?A. SELECTB. UPDATEC. DELETED. PRINT答案:D5. Oracle数据库中的触发器可以在哪些时刻执行?A. 数据插入前B. 数据更新前C. 数据删除后D. 数据查询时答案:ABC二、填空题(每空2分,共20分)1. Oracle数据库的默认表空间名称是 _ 。
答案:SYSTEM2. 在Oracle数据库中,用来查看当前数据库版本信息的命令是 _ 。
答案:SELECT * FROM V$VERSION;3. Oracle数据库中,用来创建索引的SQL语句是 _ 。
答案:CREATE INDEX;4. 在Oracle数据库中,存储过程和函数的区别在于存储过程可以有_ ,而函数不能。
答案:OUT参数5. Oracle数据库中,用于实现数据完整性的约束包括主键约束、外键约束、 _ 和CHECK约束。
答案:UNIQUE约束三、简答题(每题10分,共30分)1. 解释Oracle数据库中的视图是什么,并说明其优点。
答案:视图是Oracle数据库中的一种虚拟表,它是基于一个或多个表的查询结果。
oracle练习题(打印版)### Oracle数据库练习题#### 一、选择题1. Oracle数据库中,哪个命令用于创建表?- A. CREATE TABLE- B. CREATE DATABASE- C. DROP TABLE- D. ALTER TABLE2. 以下哪个不是Oracle数据库的数据类型?- A. NUMBER- B. CHAR- C. DATE- D. IMAGE3. 在Oracle数据库中,哪个命令用于删除表?- A. DELETE FROM- B. DROP TABLE- C. REMOVE TABLE- D. ERASE TABLE4. Oracle数据库中,如何查看当前用户?- A. SELECT USER FROM DUAL;- B. SELECT CURRENT_USER FROM DUAL;- C. SELECT USERNAME FROM ALL_USERS;- D. SELECT CURRENT_USER FROM ALL_USERS;5. 以下哪个命令用于在Oracle数据库中创建索引?- A. CREATE INDEX- B. CREATE KEY- C. CREATE CONSTRAINT- D. CREATE UNIQUE#### 二、填空题1. 在Oracle数据库中,使用____命令可以查看表结构。
2. Oracle数据库中,使用____命令可以查看当前数据库的所有表。
3. 要删除Oracle数据库中的行,可以使用____命令。
4. Oracle数据库中,____用于存储二进制数据。
5. Oracle数据库中,____命令用于查看数据库中所有的索引。
#### 三、简答题1. 描述Oracle数据库中事务的ACID属性。
2. 解释Oracle数据库中的锁定机制。
3. 说明Oracle数据库中视图的作用。
#### 四、操作题1. 创建一个名为`Employees`的表,包含以下字段:- `EmployeeID` NUMBER(10) PRIMARY KEY,- `FirstName` VARCHAR2(50),- `LastName` VARCHAR2(50),- `HireDate` DATE,- `Salary` NUMBER(10, 2),- `DepartmentID` NUMBER(10).2. 向`Employees`表中插入以下数据:- `EmployeeID`: 1001, `FirstName`: 'John', `LastName`:'Doe', `HireDate`: '2023-01-01', `Salary`: 70000,`DepartmentID`: 101.- `EmployeeID`: 1002, `FirstName`: 'Jane', `LastName`:'Smith', `HireDate`: '2023-02-15', `Salary`: 50000,`DepartmentID`: 102.3. 编写一个查询,显示所有员工的姓名和工资,按工资从高到低排序。
Oracle基础(习题卷1)第1部分:单项选择题,共63题,每题只有一个正确答案,多选或少选均不得分。
1.[单选题]以下()用户默认拥有SYSDBA权限A)A-SYSTEMB)B-SYSC)C-SAD)D-DBADMIN答案:B解析:2.[单选题]你使用 IMMEDIATE 选项关闭数据库实例。
考虑打开数据库需要执行的步骤:1. 分配 SGA2. 读取控制文件3. 读取日志文件4. 开始实例恢复5. 启动后台进程6. 检查数据文件一致性7. 读取 spfile 或者 pfile哪个选项是正确的关于这些步骤()A)7, 1, 5, 2, 3, 6, 4B)1, 5, 7, 2, 3, 6; step 4 is not requiredC)7, 1, 5, 2, 3, 6 step 4 is not requiredD)1, 2, 3, 5, 6, 4; step 7 is not required答案:C解析:3.[单选题]执行下面的命令备份 USERS 表空间SQL> ALTER TABLESPACE users BEGIN BACKUP;ALTER TABLESPACE users BEGIN BACKUP*ERROR at line 1:ORA-01123: cannot start online backup;media recovery not enabled什么原因导致整个错误()A)MTTR Advisor 禁用B)数据库处于 NOARCHIVELOG 模式C)表空间已经处于备份模式D)Flash Recovery Area 没有配置答案:B解析:4.[单选题]当执行介质数据库恢复时,有个归档日志文件丢失或者损坏,那么此时只能执行哪种操作?什么A)Until SCNB)Until timeC)Recover using backup control file.D)Until cancel答案:D解析:5.[单选题]oracle逻辑存储结构正确的是( )A)tablespace--segment--osblock--blockB)tablespace--segment--extent--blockC)tablespace--extent--segment--blockD)tablespace--extent--block -segment答案:B解析:6.[单选题]如何将变量v_row 定义为emp表的记录类型( )A)v_row emp%type;B)v_row emp%record;C)v_row emp%tabletype;D)v_row emp%rowtype;答案:D解析:7.[单选题]The schema SALES exists in two databases, ORCL1 and ORCL2, and has the same password,SALES123. User SALES has CREATE DATABASE LINK and CREATE SESSION privileges on bothDatabases.Eaxmine these command:Conn SALES/SALES123CREATE DATABASE LINK orcl2 USING ‘orcl12’;What is the outcome of executing these commands in the ORCL1 database?A)ORCL2 is created as a shared database link to connect multiple sessions to the SALES schema in the ORCL2 databaseB)ORCL2 database link creation failsC)ORCL2 is created as a private database link to connect to only the SALES schema in the ORCL2 databaseD)ORCL2 is created as a public link to connect a single session to the SALES schema in the ORCL2 database答案:C解析:8.[单选题]分析以下的SQL 命令:SELECT manufacturer_idFROM inventoryWHERE manufacturer_id LIKE '%N\%P\%O%' ESCAPE '\';命令执行的返回结果是( )。
ORACL复习题一、填空题:1、ORACLE数据库默认最高管理员账号是。
sys2、ORACLE数据库系统由、组成。
逻辑结构、物理结构和实例3、ORACLE数据库具有3种主要类型的文件,它们分别是:、、。
数据文件,控制文件,日志文件4、ORACLE内存结构主要分为、。
系统全局区,程序全局区5、ORACLE逻辑存储结构包括、、、。
块,区,段,表空间6、在SQL SELECT语句查询中,要去掉查询结果中的重复记录,应该使用_________关键字。
Distinct7、使用SQL语言的SELECT语句进行分组查询时,如果希望去掉不满足条件的分组,应当使用_________子句。
Having8、连接到ORACLE数据库的方法有、。
SQL*PLUS、OEM9、SCOTT用户的默认口令是:。
tiger10、SYS用户登录SQL*PLUS时,连接字符应该为。
数据库名AS sysdba11、安装ORACLE时,(是/否)一定要进行数据库实例的安装。
否12、要登录OEM,必须启动才行。
OracleDBConsoleORCL服务13、OUI工具用来安装和ORACLE组件。
卸载14、打开ORACLE安装目录下的install中的文件可以查看OEM、ISQL*PLUS的URL和端口号。
Portlist.ini15、每个数据库至少有一个系统表空间,被称为表空间。
system16、安装过程中进行了口令的设置,但是出现了口令有错的信息,是因为原因。
口令设置不符合ORACLE的约定17、EXP命令是用来进行文件的。
导出18、数据库可以使用工具进行创建。
DBCA19、登录ISQL*PLUS页面的默认端口号为。
556020、支持客户端应用程序到ORACLE数据库服务器网络会话的组件是。
ORACLE NET21.在SQL*PLUS中使用SQL*PLUS的命令可以显示表的结构信息。
22.所谓方案,就是一系列数据库对角的集合,是数据库中存储数据的一个逻辑表示。
Oracle基本操作练习题使用表:员工表(emp):(empnoN UMBER(4)notnul l,--员工编号,表示唯一enameV ARCHA R2(10),--员工姓名job VARCHA R2(9),--员工工作职位mgrNUM BER(4),--员工上级领导编号hireda teDAT E,--员工入职日期salNUM BER(7,2),--员工薪水commNU MBER(7,2),--员工奖金deptno NUMBE R(2)—员工部门编号)部门表(dept):(deptno NUMBE R(2)notnul l,--部门编号dnameV ARCHA R2(14),--部门名称locVAR CHAR2(13)—部门地址)说明:增删改较简单,这些练习都是针对数据查询,查询主要用到函数、运算符、模糊查询、排序、分组、多变关联、子查询、分页查询等。
建表脚本.txt建表脚本(根据需要使用):练习题:1.找出奖金高于薪水60%的员工信息。
SELECT * FROM emp WHEREcomm>sal*0.6;2.找出部门10中所有经理(MANAGE R)和部门20中所有办事员(CLERK )的详细资料。
SELECT* FROM emp WHERE(JOB='MANAGE R' AND DEPTNO=10) OR (JOB='CLERK' AND DEPTNO=20);3.统计各部门的薪水总和。
SELECT deptno,SUM(sal) FROM emp GROUPBY deptno;4.找出部门10中所有理(M ANAGE R),部门20中所有办事员(C LERK 以及既不是经理又不是办事员但其薪水大于或等2000的所有员工的)详细资料。
Oracle习题,以scott/tiger为示例数据库1.列出至少有一个员工的所有部门。
select distinct dnamefrom deptwhere deptno in(select distinct deptno from emp);要查部门编号如果存在于emp 表中,说明这个部门有员工。
2.列出薪金比“SMITH”多的所有员工。
select ename,job,mgr,hiredate,salfrom empwhere sal>(select salfrom empwhere ename='SMITH');3.列出所有员工的姓名及其直接上级的姓名。
select e.ename, e.mgr , w.enamefrom emp e, emp wwhere e.mgr=w.empno;4.列出受雇日期早于其直接上级的所有员工。
select e.ename, e.mgr , e.hiredate,w.ename,w.hiredatefrom emp e, emp wwhere e.mgr=w.empnoand e.hiredate< w.hiredate;5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
select e.ename,e.hiredate, d.dname,d.deptnofrom emp e, dept dwhere e.deptno (+)=d.deptno;本例子使用的是外连接,也可以用右连接。
select e.ename,e.hiredate, d.dname,d.deptnofrom emp e right join dept don e.deptno=d.deptno;6.列出所有“CLERK”(办事员)的姓名及其部门名称。
select e.ename,e.hiredate,e.job, d.dname,d.deptnofrom emp e, dept dwhere e.deptno =d.deptnoand e.job=upper('clerk');7.列出最低薪金大于1500的各种工作。
select job, min(sal)from empgroup by jobhaving min(sal)>1500;8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
9.列出薪金高于公司平均薪金的所有员工。
10.列出与“SCOTT”从事相同工作的所有员工。
11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
13.列出在每个部门工作的员工数量、平均工资和平均服务期限。
14.列出所有员工的姓名、部门名称和工资。
15.列出从事同一种工作但属于不同部门的员工的一种组合。
16.列出所有部门的详细信息和部门人数。
17.列出各种工作的最低工资。
18.列出各个部门的MANAGER(经理)的最低薪金。
19.列出所有员工的年工资,按年薪从低到高排序。
8.select e.ename,d.dnamefrom emp e,dept dwhere e.deptno=d.deptnoand d.dname=upper('sales');或者:select ename from empwhere deptno =(select deptno from deptwhere dname=upper('SALES'));9.select ename, job, salfrom empwhere sal> (select avg(sal)from emp );10.select ename, job from empwhere job = (select job from emp where ename=upper('scott'));11.select ename, sal,jobfrom empwhere sal in(select salfrom emp where deptno=30);12.select ename, sal,jobfrom emp where sal >all (select sal from emp where deptno=30);或者select ename ,sal from emp where sal>(select max(sal) from emp where deptno=30);13.select d.deptno,d.dname, count(e.ename), avg(e.sal), avg(months_between(sysdate,e.hiredate)) from emp e, dept d where e.deptno(+)= d.deptnogroup by d.deptno,dname;或者下面的方法,这种方法更好理解,把需要汇总的生成一个视图e。
select e.*,d.dnamefrom (select deptno, count(ename) ,avg(sal),avg(months_between(sysdate,hiredate)) from empgroup by deptno) e, dept dwhere e.deptno =d.deptno;14.select d.dname, e.ename, sal+nvl(comm,0)from emp e, dept dwhere d.deptno=e.deptno;15.select e.ename,e.job, e.deptno ,d.job, d.deptnofrom emp e, emp dwhere e.job=d.job and e.deptno<>d.deptno;16.select count(e.ename),d.dnamefrom emp e, dept dwhere e.deptno(+)= d.deptnogroup by e.deptno,d.dname;或者写成select d.deptno,e.*,d.dnamefrom (select deptno,count(ename)from empgroup by deptno) e,dept dwhere e.deptno(+)= d.deptno;17.select job,min(sal+nvl(comm,0))from emp group by job;18.select deptno,min(sal) from emp where job=upper('manager')group by deptno ;19.select ename , (sal+nvl(comm,0))*12 yearsalfrom emporder by yearsal ;1、创建表myemp和emp表具有相同的结构和记录。
2、给myemp的empno列添加主建约束。
3、给myemp添加一条记录。
4、给myemp添加一条记录只有empno,ename,mgr,sal,deptno有值,其他列为空。
5、显示所有薪金高于公司均薪金的人。
6、显示所有薪金高于各自部门平均薪金的人。
关联子查询*******7、给所有10部门的经理(MANAGER)和20部门的职员(CLERK),增加薪金10%。
----使用SCOTT和DEPT表完成8、使用EMP,DEPT表显示所有销售部'SALES'的员工。
9、删除DEPT中没有员工的部门。
10、显示所有的部门信息和人数。
11、删除雇佣年限低于20年的员工。
12、显示各部门员工薪金最高的前2名select * from(select e.deptno,d.dname,e.ename,e.sal,dense_rank() over(partition by e.deptno order by sal desc) as numfrom emp e,dept d where e.deptno=d.deptno)where num<=213、显示薪金最高的3位员工14、为EMP的各字段建立必要的索引,使得如下查询能使用上索引create index ind_sal on myemp(sal);1.create table myempasselect *from emp;2.alter table myempadd constraint myemp_empno_pk primary key (empno);3.insert into myemp( empno,ename,job,mgr,hiredate, sal, comm, deptno) values(7444, 'xiaobao', 'salemans', 7902, SYSDATE, 2500.00, 0, 40);4.insert into myemp( empno,ename,job,mgr,hiredate, sal, comm, deptno) values(7445, 'xiaobao', NULL, 7902, '', 2500.00, '', 40);5.select ename,salfrom myempwhere sal>(select avg(sal) from myemp );6.select m.ename,m.sal ,e.asalfrom (select avg(sal) asal from myemp group by deptno )e, myemp m where m.sal>e.asal;7.update myempset sal=sal*1.1where (deptno=10 and job=upper('manager'))or (deptno=20 and job=upper('clerk'));8.select e.ename, e.jobfrom emp e, dept dwhere e.deptno= d.deptnoand dname=upper('sales');9.delete from deptwhere deptno not in (select deptno from emp);10.select d.deptno,e.*,d.dnamefrom (select deptno,count(ename)from empgroup by deptno) e,dept dwhere e.deptno(+)= d.deptno;11.delete from empwhere months_between( sysdate, hiredate)/12<20;12.select rownum,ename,dname,sal from(select ename,sal,deptno from emp order by sal) e,dept dwhere e.deptno intersect d.deptno13Select *from (Select ename,sal, rank() over (order by sal desc) as grade from emp) where grade in (1,2,3);1、创建表STUDENT、COURSE、GRADE,各个表的结构如下:(1) STUDENT学号NUMBER(6),姓名V ARCHAR2(12)入学时间DATE,专业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条纪录。