经典Oracle SQL查询练习

1,经典查询练手第一篇本文使用的实例表结构与表的数据如下:scott.emp员工表结构如下:Name Type Nullable Default Comments-------- ------------ -------- ------- --------EMPNO NUMBER(4) 员工号ENAME VARCHAR2(10) Y 员工姓名JOB VARCHAR2(9) Y 工作MGR NUMBER(4) Y 上级编号HIREDATE DATE Y 雇佣日期SAL NUMBER(7,2) Y 薪金COMM NUMBER(7,2) Y 佣金DEPTNO NUMBER(2) Y 部门编号scott.dept部门表:Name Type Nullable Default Comments------ ------------ -------- ------- --------DEPTNO NUMBER(2) 部门编号DNAME VARCHAR2(14) Y 部门名称LOC VARCHAR2(13) Y 地点提示:工资= 薪金+ 佣金scott.emp表的现有数据如下:SQL> select * from emp;EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- ------7369 SMITH CLERK 7902 1980-12-17 800.00 207499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 307521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 30 7566 JONES MANAGER 7839 1981-4-2 2975.00 20 7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30 7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30 7782 CLARK MANAGER 7839 1981-6-9 2450.00 10 7788 SCOTT ANALYST 7566 1987-4-19 4000.00 207839 KING PRESIDENT 1981-11-17 5000.00 107844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30 7876 ADAMS CLERK 7788 1987-5-23 1100.00 207900 JAMES CLERK 7698 1981-12-3 950.00 30 7902 FORD ANALYST 7566 1981-12-3 3000.00 20 7934 MILLER CLERK 7782 1982-1-23 1300.00 10 102 EricHu Developer 1455 2011-5-26 1 5500.00 14.00 10104 huyong PM 1455 2011-5-26 1 5500.00 14.00 10 105 WANGJING Developer 1455 2011-5-26 1 5500.00 14.00 1017 rows selectedScott.dept表的现有数据如下:SQL> select * from dept;DEPTNO DNAME LOC------ -------------- -------------10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON50 50abc 50def60 Developer HaiKou6 rows selected用SQL完成以下问题列表:列出至少有一个员工的所有部门。

列出薪金比“SMITH”多的所有员工。

列出所有员工的姓名及其直接上级的姓名。

列出受雇日期早于其直接上级的所有员工。

列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门列出所有“CLERK”(办事员)的姓名及其部门名称。

列出最低薪金大于1500的各种工作。

列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

列出薪金高于公司平均薪金的所有员工。

列出与“SCOTT”从事相同工作的所有员工。

列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

列出在每个部门工作的员工数量、平均工资和平均服务期限。

列出所有员工的姓名、部门名称和工资。

列出所有部门的详细信息和部门人数。

列出各种工作的最低工资。

列出各个部门的MANAGER(经理)的最低薪金。

列出所有员工的年工资,按年薪从低到高排序。

各答案如下,欢迎大家给出不出的解答方式。

2,经典查询练手第一篇:答案部分--------1.列出至少有一个员工的所有部门。

---------SQL> select dname from dept where deptno in(select deptno from emp);DNAME--------------RESEARCHSALESACCOUNTING--------或--------SQL> select dname from dept where deptno in(select deptno from emp group by deptno having count(deptno) >=1);DNAME--------------ACCOUNTINGRESEARCHSALES--------2.列出薪金比“SMITH”多的所有员工。

----------SQL> select * from emp where sal > (select sal from emp where ename = 'SMITH');EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----- ---------- --------- ----- ----------- --------- --------- ------7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 307521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 307566 JONES MANAGER 7839 1981-4-2 2975.00 207654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 307698 BLAKE MANAGER 7839 1981-5-1 2850.00 307782 CLARK MANAGER 7839 1981-6-9 2450.00 107788 SCOTT ANALYST 7566 1987-4-19 4000.00 207839 KING PRESIDENT 1981-11-17 5000.00 107844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 307876 ADAMS CLERK 7788 1987-5-23 1100.00 207900 JAMES CLERK 7698 1981-12-3 950.00 307902 FORD ANALYST 7566 1981-12-3 3000.00 207934 MILLER CLERK 7782 1982-1-23 1300.00 10102 EricHu Developer 1455 2011-5-26 1 5500.00 14.00 10104 huyong PM 1455 2011-5-26 1 5500.00 14.00 10105 WANGJING Developer 1455 2011-5-26 1 5500.00 14.00 1016 rows selected--------3.列出所有员工的姓名及其直接上级的姓名。

----------SQL> select a.ename,(select ename from emp b where b.empno=a.mgr) as boss_name from emp a;ENAME BOSS_NAME---------- ----------SMITH FORDALLEN BLAKEWARD BLAKEJONES KINGMARTIN BLAKEBLAKE KINGCLARK KINGSCOTT JONESKINGTURNER BLAKEADAMS SCOTTJAMES BLAKEFORD JONESMILLER CLARKEricHuhuyongWANGJING17 rows selected--------4.列出受雇日期早于其直接上级的所有员工。

----------SQL> select a.ename from emp a where a.hiredate<(select hiredate from emp b where b.empno=a.mgr);ENAME----------SMITHALLENWARDJONESBLAKECLARK6 rows selected--------5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门---------- SQL> select a.dname,b.empno,b.ename,b.job,b.mgr,b.hiredate,b.sal,b.deptno2 from dept a left join emp b on a.deptno=b.deptno;DNAME EMPNO ENAME JOB MGR HIREDATE SAL DEPTNO-------------- ----- ---------- --------- ----- ----------- --------- ------RESEARCH 7369 SMITH CLERK 7902 1980-12-17 800.00 20 SALES 7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 30 SALES 7521 WARD SALESMAN 7698 1981-2-22 1250.00 30 RESEARCH 7566 JONES MANAGER 7839 1981-4-2 2975.00 20SALES 7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 30 SALES 7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30 ACCOUNTING 7782 CLARK MANAGER 7839 1981-6-9 2450.00 10 RESEARCH 7788 SCOTT ANALYST 7566 1987-4-19 4000.00 20 ACCOUNTING 7839 KING PRESIDENT 1981-11-17 5000.00 10 SALES 7844 TURNER SALESMAN 7698 1981-9-8 1500.00 30 RESEARCH 7876 ADAMS CLERK 7788 1987-5-23 1100.00 20 SALES 7900 JAMES CLERK 7698 1981-12-3 950.00 30 RESEARCH 7902 FORD ANALYST 7566 1981-12-3 3000.00 20 ACCOUNTING 7934 MILLER CLERK 7782 1982-1-23 1300.00 10 ACCOUNTING 102 EricHu Developer 1455 2011-5-26 1 5500.00 10 ACCOUNTING 104 huyong PM 1455 2011-5-26 1 5500.00 10 ACCOUNTING 105 WANGJING Developer 1455 2011-5-26 1 5500.00 1050abcOPERATIONSDeveloper20 rows selected--------6.列出所有“CLERK”(办事员)的姓名及其部门名称。

合集下载

Oracle_oracle常用经典SQL查询

Oracle_oracle常用经典SQL查询

、查看表空间的名称及大小select t.tablespace_name, round(sum(by tes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files dw here t.tablespace_name = d.tablespace_namegroup by t.tablespace_name;2、查看表空间物理文件的名称及大小select tablespace_name, file_id, file_name,round(by tes/(1024*1024),0) total_spa cefrom dba_data_filesorder by tablespace_name;3、查看回滚段名称及大小select segment_name, tablespace_name, r.status,(initial_e xtent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, v.curext C urExtentF rom dba_rollback_segs r, v$rollstat vWhere r.segment_id = n(+)order by segment_name;4、查看控制文件select name from v$controlfile;5、查看日志文件select member from v$logfile;6、查看表空间的使用情况select sum(by tes)/(1024*1024) as f ree_space,tablespa ce_name from dba_free_spacegroup by tablespace_name;SELECT A.TABLESPACE_NAME,A.BYTES TOTA L,B.BYTES USED, C.BYTES FREE,(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"F ROM SYS.SM$TS_AVAIL A,SYS.SM$TS_U SED B,SYS.SM$TS_F REE CWHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;7、查看数据库库对象select ow ner, object_ty pe, status, count(*) count# from all_objects group by ow ner, object_ty pe, status;8、查看数据库的版本Select v ersion F ROM Product_compone nt_v ersionWhere SU BSTR(PRODUCT,1,6)='O racle';9、查看数据库的创建日期和归档方式Select C reated, Log_Mode, Log_Mode F rom V$Database;10、捕捉运行很久的SQ Lcolumn username format a12column opname format a16column progress format a8select username,sid,opname,round(sofar*100 / totalw ork,0) || '%' as progress,time_remaining,sql_textfrom v$session_longops , v$sqlw here time_remaining <> 0and sql_address = addressand sql_hash_v alue = hash_v alue/11.查看数据表的参数信息SELECT partition_name, high_v alue, high_v alue_length, tablespace_name,pct_free, pct_used, ini_trans, max_trans, initial_extent,next_extent, min_e xtent, max_e xtent, pct_increase, F REELISTS,freelist_groups, LO GGING, BUFFER_POO L, num_row s, blocks,empty_blocks, av g_space, chain_cnt, av g_row_len, sample_size, last_analy zedF ROM dba_tab_partitions--WHERE table_name = :tname AND table_ow ner = :tow ner ORDER BY partition_position12.查看还没提交的事务select * from v$locked_object;select * from v$transaction;13.查找object为哪些进程所用selectp.spid,s.sid,s.serial# serial_num,ername user_name,a.ty pe object_ty pe,s.osuser os_user_name,a.ow ner,a.object object_name,decode(sign(48 - command),1,to_char(command), 'A ction C ode #' || to_char(command) ) action,p.program oracle_proce ss,s.terminal terminal,s.program pro gram,s.status session_statusfrom v$session s, v$access a, v$process pw here s.paddr = p.addr ands.ty pe = 'USER' anda.sid = s.sid anda.object='SUBSCRIBER_ATTR'order by ername, s.osuser14.回滚段查看select row num, sy s.dba_rollback_segs.segment_name Name, v$rollstat.extentsExtents, v$rollstat.rssize Size_in_By tes, v$rollstat.xacts XA cts,v$rollstat.gets Gets, v$rollstat.waits Waits, v$rollstat.w rites Writes,sy s.dba_rollback_segs.status status f rom v$rollstat, sy s.dba_rollback_segs,v$rollname w here v$(+) = sy s.dba_rollback_segs.segment_name andv$n (+) = v$n order by row num15.耗资源的进程(top session)select s.schemaname schema_name, decode(sign(48 - command), 1,to_char(command), 'A ction C ode #' || to_char(command) ) action, statussession_status, s.osuser os_use r_name, s.sid, p.spid , s.serial# serial_num,nv l(ername, '[O racle process]') user_name, s.terminal terminal,s.program pro gram, st.v alue criteria_v alue from v$sesstat st, v$session s , v$process pw here st.sid = s.sid and st.statistic# = to_number('38') and ('A LL' = 'A LL'or s.status = 'A LL') and p.addr = s.paddr order by st.v alue desc, p.spid asc, ername asc, s.osuser asc 16.查看锁(lock)情况select /*+ RU LE */ ls.osuser os_user_name, ername use r_name,decode(ls.ty pe, 'RW', 'Row w ait enqueue lock', 'TM', 'DML enqueue lock', 'TX','Transaction enqueue lo ck', 'U L', 'U ser supplied lock') lock_ty pe,o.object_name object, decode(ls.lmode, 1, null, 2, 'Row Share', 3,'Row Exclusiv e', 4, 'Share', 5, 'Share Row Exclusiv e', 6, 'Exclusiv e', null)lock_mode, o.ow ner, ls.sid, ls.serial# serial_num, ls.id1, ls.id2from sy s.dba_objects o, ( select s.osuser, ername, l.ty pe,l.lmode, s.sid, s.serial#, l.id1, l.id2 from v$session s,v$lock l w here s.sid = l.sid ) ls w here o.object_id = ls.id1 and o.ow ner<> 'SYS' order by o.ow ner, o.object_name17.查看等待(w ait)情况SELECT v$w aitstat.class, v$w aitstat.count count, SU M(v$sy sstat.v alue) sum_v alueF ROM v$w aitstat, v$sy sstat WHERE v$sy IN ('db block gets','consistent ge ts') group by v$waitstat.class, v$w aitstat.count18.查看sga情况SELECT NAME, BYTES F ROM SYS.V_$SGASTA T O RDER BY NAME ASC19.查看catched objectSELECT ow ner, name, db_link, namespace,ty pe, sharable_mem, loads, executions,locks, pins, kept FROM v$db_object_cache20.查看V$SQ L A REASELECT SQ L_TEX T, SHARABLE_MEM, PERSISTENT_MEM, RU NTIME_MEM, SORTS, VERSION_COUNT, L OADED_VERSIONS, OPEN_VERSIONS, U SERS_OPENING, EXECUTIONS,USERS_EXECUTING, LOADS, FIRST_LOAD_TIME, INVALIDATIONS, PARSE_CALLS, DISK_READS, BUFFER_GETS, RO W S_PROCESSED FROM V$SQ L A REA21.查看object分类数量select decode (o.ty pe#,1,'INDEX' , 2,'TA BL E' , 3 , 'C L USTER' , 4, 'VIEW' , 5 ,'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) object_ty pe , count(*) quantity fromsy s.obj$ o w here o.ty pe# > 1 group by decode (o.ty pe#,1,'INDEX' , 2,'TABLE' , 3, 'C LUSTER' , 4, 'VIEW' , 5 , 'SYNONYM' , 6 , 'SEQUENCE' , 'OTHER' ) union select'CO L UMN' , count(*) from sy s.col$ union select 'DB LINK' , count(*) from22.按用户查看object种类select schema, sum(decode(o.ty pe#, 1, 1, NU LL)) inde xes,sum(decode(o.ty pe#, 2, 1, NULL)) tables, sum(decode(o.ty pe#, 3, 1, NU LL))clusters, sum(decode(o.ty pe#, 4, 1, NU LL)) v iew s, sum(decode(o.ty pe#, 5, 1,NU LL)) sy nony ms, sum(decode(o.ty pe#, 6, 1, NU LL)) sequence s,sum(decode(o.ty pe#, 1, NU LL, 2, NU LL, 3, NU LL, 4, NU LL, 5, NU LL, 6, NU LL, 1))others from sy s.obj$ o, sy er$ u w here o.ty pe# >= 1 and er# =o.ow ner# and <> 'PU BLIC' group by order bysy s.link$ union select 'CONSTRAINT' , count(*) from sy s.con$23.有关co nnectio n的相关信息1)查看有哪些用户连接select s.osuser o s_user_name, decode(sign(48 - command), 1, to_char(command),'A ction C ode #' || to_char(command) ) action, p.program oracle_process,status session_status, s.terminal terminal, s.program program,ername user_name, s.fixed_table_sequence activ ity_meter, '' quer y,0 memory, 0 max_memor y, 0 cpu_usage, s.sid, s.serial# serial_numfrom v$session s, v$process p w here s.paddr=p.addr and s.ty pe = 'USER' order by ername, s.osuser2)根据v.sid查看对应连接的资源占用等情况select ,v.v alue,n.class,n.statistic#from v$statname n,v$sesstat vw here v.sid = 71 andv.statistic# = n.statistic#order by n.class, n.statistic#3)根据sid查看对应连接正在运行的sqlselect /*+ PUSH_SUBQ */command_ty pe,sql_text,sharable_mem,persistent_mem,runtime_mem,sorts,v ersion_count,loaded_v ersions,open_v ersions,users_opening,executio ns,users_exe cuting,loads,first_load_time,inv alidations,parse_calls,disk_reads,buffer_gets,row s_processed,sy sdate start_time,sy sdate finish_time,'>' || address sql_address,'N' statusfrom v$sqlareaw here address = (select sql_address from v$session w here sid = 71) 24.查询表空间使用情况select a.tablespace_name "表空间名称",100-round((nv l(b.by tes_free,0)/a.by tes_alloc)*100,2) "占用率(%)", round(a.by tes_alloc/1024/1024,2) "容量(M)",round(nv l(b.by tes_free,0)/1024/1024,2) "空闲(M)",round((a.by tes_alloc-nv l(b.by tes_free,0))/1024/1024,2) "使用(M)", Largest "最大扩展段(M)",to_char(sy sdate,'yyyy-mm-dd hh24:mi:ss') "采样时间"from (select f.tablespace_name,sum(f.by tes) by tes_alloc,sum(decode(f.autoextensible,'YES',f.maxby tes,'NO',f.by tes)) maxby tesfrom dba_data_files fgroup by tablespace_name) a,(select f.tablespa ce_name,sum(f.by tes) by tes_freefrom dba_free_space fgroup by tablespace_name) b,(select ro und(max(ff.length)*16/1024,2) Large st, tablespace_namefrom sy s.fet$ ff, sy s.file$ tf,sy s.ts$ tsw here ts.ts#=ff.ts# and ff.file#=tf.relfile# and ts.ts#=tf.ts#group by , tf.blocks) cw here a.tablespace_name = b.tablespace_name and a.tablespace_name = c.tablespace_name 25. 查询表空间的碎片程度select tablespace_name,co unt(tablespace_name) from dba_free_space gro up by tablespace_name hav ing count(tablespace_name)>10;alter tablespace name coalesce;alter table name deallocate unused;create or repla ce v iew ts_blocks_v asselect tablespace_name,blo ck_id,by tes,blocks,'free space' segment_name from dba_free_spa ce union allselect tablespace_name,blo ck_id,by tes,blocks,segment_name from dba_extents;select * from ts_blocks_v;select tablespace_name,sum(by tes),max(by tes),count(blo ck_id) f rom dba_free_spa cegroup by tablespace_name;26.查询有哪些数据库实例在运行select inst_name from v$activ e_instances;=========================================================== ######### 创建数据库----look $ORAC LE_HOME/rdbms/admin/buildall.sql ############# create database db01maxlogfiles 10maxdatafiles 1024maxinstances 2logfileGROUP 1 ('/u01/oradata/db01/log_01_db01.rdo') SIZE 15M,GROUP 2 ('/u01/oradata/db01/log_02_db01.rdo') SIZE 15M,GROUP 3 ('/u01/oradata/db01/log_03_db01.rdo') SIZE 15M,datafile 'u01/o radata/db01/sy stem_01_db01.dbf') SIZE 100M,undo tablespace U NDOdatafile '/u01/oradata/db01/undo_01_db01.dbf' SIZE 40Mdefault temporary tablespace TEMPtempfile '/u01/oradata/db01/temp_01_db01.dbf' SIZE 20Mextent management local uniform size 128kcharacter se t A L32UTE8national chara cter set A L16U TF16set time_zone='A merica/New_York';############### 数据字典########## set w rap offselect * from v$dba_users;grant select on ta ble_name to user/rule;select * from user_tables;select * from all_tables;select * from dba_tables;rev oke dba from user_name;shutdow n immediatestartup nomountselect * from v$instance;select * from v$sga;select * from v$tablespace;alter session set nls_langua ge=american;alter database mount;select * from v$database;alter database open;desc dictio naryselect * from dict;desc v$fixed_table;select * from v$fixed_table;set oracle_sid=fo xconnselect * from dba_objects;set serv eroutput onexecute dbms_o utput.put_line('sfasd');############# 控制文件###########select * from v$database;select * from v$tablespace;select * from v$logfile;select * from v$log;select * from v$backup;/*备份用户表空间*/alter tablespace use rs begin ba ckup;select * from v$archiv ed_log;select * from v$controlfile;alter sy stem set control_files='$O RAC L E_HOME/oradata/u01/ctrl01.ctl','$ORAC LE_HOME/oradata/u01/ctrl02.ctl' sco pe=spfile;cp $O RAC L E_HOME/oradata/u01/ctrl01.ctl $O RAC L E_HOME/oradata/u01/ctrl02.ctl startup pfile='../initSID.ora'select * from v$parameter w here name like 'control%' ;show parameter control;select * from v$controlfile_re cord_se ction;select * from v$tempfile;/*备份控制文件*/alter database backup controlfile to '../f ilepath/control.bak';/*备份控制文件,并将二进制控制文件变为了asc 的文本文件*/alter database backup controlfile to trace;############### redo log ##############archiv e log list;alter sy stem archiv e log start;--启动自动存档alter sy stem sw itch logfile;--强行进行一次日志sw itchalter sy stem checkpoint;--强制进行一次checkpointalter tablspace use rs begin ba ckup;alter tablespace offline;/*checkpoint 同步频率参数FAST_START_MTTR_TARGET,同步频率越高,系统恢复所需时间越短*/show parameter fast;show parameter log_checkpoint;/*加入一个日志组*/alter database add logfile group 3 ('/$O RACLE_HOME/oracle/ora_log_file6.rdo' size 10M);/*加入日志组的一个成员*/alter database add logfile member '/$O RAC L E_HOME/oracle/ora_log_file6.rdo' to group 3;/*删除日志组:当前日志组不能删;活动的日志组不能删;非归档的日志组不能删*/alter database drop lo gfile group 3;/*删除日志组中的某个成员,但每个组的最后一个成员不能被删除*/alter databse drop lo gfile member '$O RAC L E_HOME/oracle/ora_log_f ile6.rdo';/*清除在线日志*/alter database clear logf ile '$O RAC L E_HOME/oracle/o ra_log_file6.rdo';alter database clear logf ile group 3;/*清除非归档日志*/alter database clear una rchiv ed logfile group 3;/*重命名日志文件*/alter database rename file '$O RAC L E_HOME/oracle/ora_log_file6.rdo' to '$O RACLE_HOME/oracle/ora_log_file6a.rdo';show parameter db_create;alter sy stem set db_create_online_log_dest_1='path_name';select * from v$log;select * from v$logfile;/*数据库归档模式到非归档模式的互换,要启动到mount状态下才能改变;sta rtup mount;然后再打开数据库.*/ alter database noarchiv elog/archiv elog;achiv e log start;---启动自动归档alter sy stem archiv e all;--手工归档所有日志文件select * from v$archiv ed_log;show parameter log_archiv e;###### 分析日志文件logmnr ##############1) 在init.ora中set utl_f ile_dir 参数2) 重新启动ora cle3) create 目录文件desc dbms_logmnr_d;dbms_logmnr_d.build;4) 加入日志文件add/remov e log filedhms_logmnr.add_logfiledbms_logmnr.remov efile5) start lo gmnrdbms_logmnr.sta rt_logmnr6) 分析出来的内容查询v$logmnr_content --sqlredo/sqlundo实践:desc dbms_logmnr_d;/*对数据表做一些操作,为恢复操作做准备*/update 表set qty=10 w here stor_id=6380;delete 表w here stor_id=7066;/***********************************/utl_file_dir的路径execute dbms_logmnr_d.build('foxdict.ora','$ORAC L E_HOME/oracle/admin/fox/cdump');execute dbms_logmnr.add_lo gfile('$O RAC L E_HOME/oracle/o ra_log_file6.lo g',dbms_logmnr.new file);execute dbms_logmnr.sta rt_logmnr(dictfilename=>'$O RAC L E_HOME/oracle/admin/fo x/cdump/foxdict.ora');######### tablespace ##############select * form v$tablespace;select * from v$datafile;/*表空间和数据文件的对应关系*/select , from v$tablespace t1,v$datafile t2 w here t1.ts#=t2.ts#;alter tablespace use rs add datafile 'path' size 10M;select * from dba_rollback_segs;/*限制用户在某表空间的使用限额*/alter user use r_name quota 10m on tablespace_name;create tablespace xxx [datafile 'path_name/datafile_name'] [size xxx] [extent management local/dictionary] [default storage(xxx)];exmple: create tablespa ce userdata datafile '$O RAC L E_HOME/oradata/use rdata01.dbf' size 100M A UTOEXTEND ON NEXT 5M MA X SIZE 200M;create tablespace use rdata datafile '$O RAC L E_HOME/oradata/userdata01.dbf' size 100M extent management dictionary default storage(initial 100k ne xt 100k pctincrease 10) offline;/*9i以后,oracle建议使用lo cal管理,而不使用dictionary管理,因为loca l采用bitmap管理表空间,不会产生系统表空间的自愿争用;*/ create tablespace use rdata datafile '$ORAC L E_HOME/oradata/userdata01.dbf' size 100M extent management local uniform size 1m; create tablespace use rdata datafile '$ORAC L E_HOME/oradata/userdata01.dbf' size 100M extent management local autoallocate;/*在创建表空间时,设置表空间内的段空间管理模式,这里用的是自动管理*/create tablespace userdata datafile '$O RAC L E_HOME/oradata/use rdata01.dbf' size 100M extent management lo cal unifo rm size 1m segment space management auto;alter tablespace use rdata mininum e xtent 10;alter tablespace use rdata default sto rage(initial 1m ne xt 1m pctincrease 20);/*undo tablespace(不能被用在字典管理模下) */create undo tablespace undo1 datafile '$O RAC L E_HOME/oradata/undo101.dbf' size 40M extent management local;show parameter undo;/*temporary tablespace*/create temporary tablespace userdata tempfile '$O RACLE_HOME/oradata/undo101.dbf' size 10m extent management local;/*设置数据库缺省的临时表空间*/alter database default tempora ry tablespace tablespace_name;/*系统/临时/在线的undo表空间不能被offline*/alter tablespace tablespace_name offline/online;alter tablespace tablespace_name read only;/*重命名用户表空间*/alter tablespace tablespa ce_name rename datafile '$O RAC L E_HOME/oradata/undo101.dbf' to '$O RACLE_HOME/oradata/undo102.dbf'; /*重命名系统表空间,但在重命名前必须将数据库shutdow n,并重启到mount状态*/alter database rename file '$O RAC L E_HOME/oradata/sy stem01.dbf' to '$O RAC L E_HOME/oradata/sy stem02.dbf';drop tablespace userdata including contents and datafiles;---drop tablespce/*resize tablespace,autoe xtend datafile spa ce*/alter database datafile '$O RAC L E_HOME/oradata/undo102.dbf' autoe xtend o n next 10m maxsize 500M;/*resize datafile*/alter database datafile '$O RAC L E_HOME/oradata/undo102.dbf' resize 50m;/*给表空间扩展空间*/alter tablespace use rdata add datafile '$ORAC L E_HOME/oradata/undo102.dbf' size 10m;/*将表空间设置成O MF状态*/alter sy stem set db_create_file_dest='$O RAC L E_HOME/oradata';create tablespace use rdata;---use OMF status to create tablespace;drop tablespace userdata;---user O MF status to drop tablespace;select * from dba_tablespace/v$tablespace/dba_data_files;/*将表的某分区移动到另一个表空间*/alter table table_name mov e partition partition_name tablespace tablespa ce_name;###### ORAC L E storage structure and relationships #########/*手工分配表空间段的分区(extend)大小*/alter table kong.test12 allocate e xtent(size 1m datafile '$O RACLE_HOME/oradata/undo102.dbf'); alter table kong.test12 dealloca te unused; ---释放表中没有用到的分区show parameter db;alter sy stem set db_8k_cache_size=10m; ---配置8k块的内存空间块参数select * from dba_extents/dba_segments/data_tablespace;select * from dba_free_space/dba_data_file/data_tablespace;/*数据对象所占用的字节数*/select sum(by tes) from dba_e xtents w here onw er='kong' and segment_name ='table_name'; ############ UNDO Data ################show parameter undo;alter tablespace use rs offline no rmal;alter tablespace use rs offline immediate;recov er datafile '$ORAC L E_HOME/oradata/undo102.dbf';alter tablespace use rs online ;select * from dba_rollback_segs;alter sy stem set undo_tablespace=undotbs1;/*忽略回滚段的错误提示*/alter sy stem set undo_suppress_e rrors=true;/*在自动管理模式下,不会真正建立rbs1;在手工管理模式则可以建立,且是私有回滚段*/create rollba ck segment rbs1 tablespace undotbs;desc dbms_flashba ck;/*在提交了修改的数据后,9i提供了旧数据的回闪操作,将修改前的数据只读给用户看,但这部分数据不会又恢复在表中,而是旧数据的一个映射*/execute dbms_fla shback.enable_at_time('26-JA N-04:12:17:00 pm');execute dbms_fla shback.disable;/*回滚段的统计信息*/select end_time,begin_time,undoblks from v$undostat;/*undo表空间的大小计算公式: U ndoSpace=[U R * (UPS * DBS)] + (DBS * 24)U R :UNDO_RETENTION 保留的时间(秒)UPS :每秒的回滚数据块DBS:系统EXTENT和F ILE SIZE(也就是db_blo ck_size)*/select * from dba_rollback_segs/v$rollname/v$rollstat/v$undostat/v$session/v$transaction;show parameter transactions;show parameter rollback;/*在手工管理模式下,建立公共的回滚段*/create public rollba ck segment prbs1 tablespace undo tbs;alter rollback segment rbs1 online;----在手工管理模式/*在手工管理模式中,initSID.ora中指定undo_management=manual 、rollback_segment=('rbs1','rbs2',...)、transactio ns=100 、transactions_per_rollback_segment=10然后shutdow n immediate ,startup pfile=....\???.o ra */########## Managing Tables ###########/*char ty pe maxlen=2000;v archar2 ty pe maxlen=4000 by tesrow id 是18位的64进制字符串(10个by tes 80 bits)row id组成: object#(对象号)--32bits,6位rfile#(相对文件号)--10bits,3位block#(块号)--22bits,6位row#(行号)--16bits,3位64进制: A-Z,a-z,0-9,/,+ 共64个符号dbms_row id 包中的函数可以提供对row id的解释*/select row id,dbms_row id.row id_block_number(row id),dbms_row id.row id_row_number(row id) from table_name; create table test2(id int,lname varchar2(20) not null,fname v archar2(20) constraint ck_1 check(f name like 'k%'),empdate date default sy sdate)) tablespace table space_name;create global tempora ry table test2 on commit delete/pre serv e row s as select * from kong.authors;create table user.table(...) tablespa ce tablespace_name storage(...) pctfree10 pctused 40;alter table user.tablename pctfree 20 pctused 50 sto rage(...);---changing table sto rage/*手工分配分区,分配的数据文件必须是表所在表空间内的数据文件*/alter table user.table_name allocate extent(size 500k datafile '...');/*释放表中没有用到的空间*/alter table table_name deallocate unused;alter table table_name deallocate unused keep 8k;/*将非分区表的表空间搬到新的表空间,在移动表空间后,原表中的索引对象将会不可用,必须重建*/alter table user.table_name mov e tablespace new_tablespace_name;create index index_name on user.table_name(colum n_name) tablespace users;alter index index_name rebuild;drop table table_name [CASCADE CONSTRAINTS];alter table user.table_name drop column col_name [C ASCADE CONSTRA INTS CHEC KPOINT 1000];---dro p column /*给表中不用的列做标记*/alter table user.table_name set unused co lumn comments CA SCADE CONSTRAINTS;/*drop表中不用的做了标记列*/alter table user.table_name drop unu sed columns checkpoint 1000;/*当在drop col是出现异常,使用CO NTINUE,防止重删前面的column*/A LTER TABLE USER.TABLE_NAME DROP CO L UMNS CONTINUE CHECKPOINT 1000;select * from dba_tables/dba_o bjects;######## managing indexes ##########/*create index*/example:/*创建一般索引*/create index index_name on table_name(column_name) tablespace table space_name;/*创建位图索引*/create bitmap inde x inde x_name on table_name(column_name1,column_name2) tablespace table space_name;create [bitmap] inde x inde x_name o n table_name(column_name) tablespace table space_name pctfree 20storage(inital 100k ne xt 100k) ;/*大数据量的索引最好不要做日志*/create [bitmap] inde x inde x_name table_name(colum n_name1,column_name2) tablespace_name pctfree 20 storage(inital 100k next 100k) nologging;/*创建反转索引*/create index index_name on table_name(column_name) rev erse;/*创建函数索引*/create index index_name on table_name(functio n_name(co lumn_name)) tablespa ce tablespace_name;/*建表时创建约束条件*/create table user.table_name(column_name number(7) constraint constraint_name prima ry key deferrable using index storage(initial 100k next 100k) tablespa ce tablespa ce_name,column_name2 v archar2(25) constraint constraint_name not null,column_name3 number(7)) tablespace tablespace_name;/*给创建bitmap inde x分配的内存空间参数,以加速建索引*/show parameter create_bit;/*改变索引的存储参数*/alter index index_name pctfree 30 storage(initial 200k ne xt 200k);/*给索引手工分配一个分区*/alter index index_name allocate extent (size 200k datafile '$O RAC L E/oradata/..');/*释放索引中没用的空间*/alter index index_name deallocate unused;/*索引重建*/alter index index_name rebuild tablespace tablespa ce_name;/*普通索引和反转索引的互换*/alter index index_name rebuild tablespace tablespa ce_name rev erse;alter index index_name rebuild o nline;/*给索引整理碎片*/alter index index_name COA L ESCE;/*分析索引,事实上是更新统计的过程*/analy ze index index_name v alidate structure;desc inde x_state;drop inde x inde x_name;alter index index_name monitoring usage;-----监视索引是否被用到alter index index_name nomonitoring usage;----取消监视/*有关索引信息的视图*/select * from dba_indexes/dba_ind_columns/dbs_ind_e xpressions/v$object_usage;########## 数据完整性的管理(Maintaining data integrity) ##########alter table table_name drop constraint constraint_name;----drop 约束alter table table_name add constraint constraint_name prima ry key(column_name1,column_name2);-----创建主键alter table table_name add constraint constraint_name unique(column_name1,column_name2);---创建唯一约束/*创建外键约束*/alter table table_name add constraint constraint_name foreign key(column_name1) references table_name(column_name1); /*不效验老数据,只约束新的数据[enable/disable:约束/不约束新数据;nov alidate/v alidate:不对/对老数据进行验证]*/alter table table_name add constraint constraint_name che ck(colum n_name like 'B%') enable/disable nov alidate/v alidate; /*修改约束条件,延时验证,commit时验证*/alter table table_name modify constraint constraint_name initially deferred;/*修改约束条件,立即验证*/alter table table_name modify constraint constraint_name initially immediate;alter session set constra ints=deferre d/immediate;/*drop一个有外键的主键表,带cascade constraints参数级联删除*/drop table table_name cascade constraints;/*当truncate外键表时,先将外键设为无效,再truncate;*/truncate table table_name;/*设约束条件无效*/alter table table_name disable co nstraint constraint_name;alter table table_name enable nov alidate constraint constraint_name;/*将无效约束的数据行放入exceptio n的表中,此表记录了违反数据约束的行的行号;在此之前,要先建exce ptions表*/alter table table_name add constraint constraint_name che ck(colum n_name >15) enable v alidate exceptions into exceptions;/*运行创建e xceptions表的脚本*/start $O RAC L E_HOME/rdbms/admin/utlexcpt.sql;/*获取约束条件信息的表或视图*/select * from user_constraints/dba_co nstraints/dba_cons_columns;################## managing passw ord security and resources ####################alter user use r_name account unlock/open;----锁定/打开用户;alter user use r_name passw ord expire;---设定口令到期/*建立口令配置文件,failed_login_attempts口令输多少次后锁,passw ord_lo ck_times指多少天后口令被自动解锁*/create profile profile_name limit failed_login_attempts 3 passw ord_lock_times 1/1440;/*创建口令配置文件*/create profile profile_name limit failed_login_a ttempts 3 passw ord_lock_time unlimited passw ord_life_time 30 passw ord_reuse_t ime 30 passw ord_v erify_function v erify_function passw ord_grace_time 5;/*建立资源配置文件*/create profile prfile_name limit session_per_user 2 cpu_per_session 10000 idle_time 60 co nnect_time 480;alter user use r_name profile profile_name;/*设置口令解锁时间*/alter profile profile_name limit passw ord_lock_time 1/24;/*passw ord_life_time指口令文件多少时间到期,passw ord_grace_time指在第一次成功登录后到口令到期有多少天时间可改变口令*/ alter profile profile_name limit passw ord_lift_time 2 passw ord_grace_time 3;/*passw ord_reuse_time指口令在多少天内可被重用,passw ord_reuse_ma x口令可被重用的最大次数*/alter profile profile_name limit passw ord_reuse_time 10[pa ssw ord_reuse_max 3];alter user use r_name identified by input_passw ord;-----修改用户口令drop profile profile_name;/*建立了profile后,且指定给某个用户,则必须用CASCADE才能删除*/drop profile profile_name CASCADE;alter sy stem set resource_limit=true;---启用自愿限制,缺省是false/*配置资源参数*/alter profile profile_name limit cpu_per_se ssion 10000 connect_time 60 idle_time 5;/*资源参数(sessio n级)cpu_per_se ssion 每个sessio n占用cpu的时间单位1/100秒sessions_pe r_user 允许每个用户的并行se ssion数connect_time 允许连接的时间单位分钟idle_time 连接被空闲多少时间后,被自动断开单位分钟logical_reads_per_session 读块数priv ate_sga 用户能够在SGA中使用的私有的空间数单位by tes(call级)cpu_per_call 每次(1/100秒)调用cpu的时间logical_reads_per_call 每次调用能够读的块数*/alter profile profile_name limit cpu_per_call 1000 logical_reads_per_call 10;desc dbms_reso uce_manager;---资源管理器包/*获取资源信息的表或视图*/select * from dba_users/dba_profiles;###### Managing users ############show parameter os;create user testuser1 identified by kxf_001;grant conne ct,createtable to testuser1;alter user testuser1 quota 10m on tablespace_name;/*创建用户*/create user user_name identified by passw ord default tablespace tablespace_name tempora ry tablespace tablespace_name quota 15m on tablespace_name passw ord expire;/*数据库级设定缺省临时表空间*/alter database default tempora ry tablespace tablespace_name;/*制定数据库级的缺省表空间*/alter database default tablespa ce tablespace_name;/*创建os级审核的用户,需知道os_authent_prefix,表示oracle和o s口令对应的前缀,'O PS$'为此参数的值,此值可以任意设置*/create use r use r_name identified by externally default OPS$tablespace_name tablespace_name temporary tablespace ta blespace_name quota 15m on tablespace_name passw ord expire;/*修改用户使用表空间的限额,回滚表空间和临时表空间不允许授予限额*/alter user use r_name quota 5m on tablespa ce_name;/*删除用户或删除级联用户(用户对象下有对象的要用CASCADE,将其下一些对象一起删除)*/drop user user_name [C ASCADE];/*每个用户在哪些表空间下有些什么限额*/。

oracle sql语句练习题

oracle sql语句练习题
from
emp e,
salgrade s,
dept d
where
e.sal between s.losal and s.hisal and
e.deptno = d.deptno and
s.grade!=4;
14.查找出职位和'MARTIN' 或者'SMITH'一样的员工的平均工资
select avg(sal) from emp where job in
(select distinct job from emp where ename in('MARTIN','SMITH'));
15.查找出不属于任何部门的员工
select * from emp where deptno not in (select distinct deptno from dept);
9.得到每个月工资总数最少的那个部门的部门编号,部门名称,部门位置
select d.*
from
dept d,
(select * from
(select deptno,sum(sal) as sum_sal from emp group by deptno order by sum(sal))
where e.sal>t.sal;
4.列出所有员工的姓名和其上级的姓名
select xd.ename ,boss.ename boss_name from emp xd,emp boss where xd.mgr=boss.empno;
5.以职位分组,找出平均工资最高的两种职位
select t.*
from emp) boss

oracle查询练习

oracle查询练习
用SQL完成以下问题列表:
列出至少有一个员工的所有部门。
列出薪金比“SMITH”多的所有员工。
select * from emp where sal>(select sal from emp where ename='SMITH');
列出所有员工的姓名及其直接上级的姓名。
SELECT A.ENAME,B.ENAME FROM EMP A,EMP B WHERE A.MGR=B.EMPNO;
select distinct job from emp where deptno=20;
列出不属于SALES 的部门。
select * from dept where dname !='SALES';
显示工资不在1000 到1500 之间的员工信息:名字、工资,按工资从大到小排序。
SELECT ENAME,SAL FROM EMP WHERE SAL NOT BETWEEN 1000 AND 1500 ORDER BY SAL DESC;
HR表
1. 让SELECT TO_CHAR(SALARY,'L99,999.99') FROM HR.EMPLOYEES WHERE ROWNUM < 5 输出结果的货币单位是¥和$。
2. 列出前五位每个员工的名字,工资、涨薪后的的工资(涨幅为8%),以“元”为单位进行四舍五入。
3. 找出谁是最高领导,将名字按大写形式显示。
select a.* ,b.dname from emp a right join dept b on(a.deptno=b.deptno);
列出所有“CLERK”(办事员)的姓名及其部门名称。

oracle数据库查询练习任务

oracle数据库查询练习任务

简单查询1.查询customers表中的所有记录的c_name, c_truename, c_address,c_mobile列。

SELECT c_name, c_truename, c_address, c_mobile FROM Customers2.在会员信息表中查询年龄在20岁到30之间的会员信息。

SELECT*from Customers year(getdate())-year(birthdate)between 20 and303.查询会员所有的地址,即不重复的地址。

sELECT DISTINCT c_Address FROM Customers4.查询会员电话区号为0731的会员信息。

SELECT*FROM Customers WHERE c_Phone LIKE'0731%'5.查询VIP会员信息。

SELECT*FROM Customers where c_Type='VIP'6.统计商品类别数。

SELECT count(*)FROM Types7.在商品信息表中查询三星的产品信息。

SELECT*FROM Goods where g_Name like'三星_%'8.在商品信息表中查询价格在2000-3000区间的商品信息。

SELECT*FROM Goods WHERE g_Price between 2000 and 30009.在商品信息表以价格降序查询商品信息。

SELECT*FROM Goods ORDER BY g_Price DESC10.在商品信息表中查询商品类别为02的所有商品的商品名称,商品单价,并根据商品价格进行升序排序。

SELECT g_Name g_Price FROM Goods WHERE t_ID like'02%'ORDER BY g_Price ASC11.在商品信息表中查询三星和海尔品牌的商品的详细信息。

oracle 有关emp表的简单查询练习题

oracle 有关emp表的简单查询练习题

SQL练习训练一1、查询dept表的结构在命令窗口输入:desc dept;2、检索dept表中的所有列信息select * from dept3、检索emp表中的员工姓名、月收入及部门编号select ename "员工姓名",sal "月收入",empno "部门编号" from emp注意查询字段用分号隔开。

4、检索emp表中员工姓名、及雇佣时间日期数据的默认显示格式为“DD-MM-YY",如果希望使用其他显示格式(YYYY-MM-DD),那么必须使用TO_CHAR函数进行转换。

select ename "员工姓名", hiredate "雇用时间1",to_char(hiredate,'YYYY-MM-DD') "雇用时间2" from emp注意:第一个时间是日期类型的,在Oracle的查询界面它的旁边带有一个日历。

第二个时间是字符型的。

易错点:不要将YYYY-MM-DD使用双引号5、使用distinct去掉重复行。

检索emp表中的部门编号及工种,并去掉重复行。

select distinct deptno "部门编号",job "工种" from emp order by deptno注意distinct放的位置为什么不放在from的前面?翻译成汉语就明白了应该是:选择不重复的部门编号和工种从emp表。

而不是:选择部门编号和工种不重复地从emp表。

这还是人话么O(∩_∩)O哈哈~6、使用表达式来显示列检索emp表中的员工姓名及全年的月收入select ename "员工姓名", (sal+nvl(comm,0))*12 "全年收入" from emp 注意:防止提成comm为空的操作,使用nvl函数7、使用列别名用姓名显示员工姓名,用年收入显示全年月收入。

oracle练习题

oracle练习题

oracle练习题1. 编写一个SQL查询,从员工表中选择出年龄大于30岁的员工信息。

SELECT *FROM 员工表WHERE 年龄 > 30;2. 编写一个SQL查询,计算每个部门的平均薪资,并按照薪资的降序排列。

SELECT 部门, AVG(薪资) AS 平均薪资FROM 员工表GROUP BY 部门ORDER BY 平均薪资 DESC;3. 编写一个SQL查询,找出工资最高的前5名员工的信息。

SELECT *FROM 员工表ORDER BY 薪资 DESCFETCH FIRST 5 ROWS ONLY;4. 编写一个SQL查询,计算每个部门的员工人数。

SELECT 部门, COUNT(*) AS 员工人数FROM 员工表GROUP BY 部门;5. 编写一个SQL查询,查找姓名中包含字母'O'的员工信息。

SELECT *FROM 员工表WHERE 姓名 LIKE '%O%';6. 编写一个SQL查询,找出工资高于部门平均工资的员工信息。

SELECT *FROM 员工表WHERE 薪资 > (SELECT AVG(薪资) FROM 员工表 GROUP BY 部门);7. 编写一个SQL查询,按照入职时间从早到晚排序员工信息。

SELECT *FROM 员工表ORDER BY 入职时间;8. 编写一个SQL查询,查找年龄最小的员工信息。

SELECT *FROM 员工表ORDER BY 年龄FETCH FIRST ROW ONLY;9. 编写一个SQL查询,统计每个员工的工资涨幅。

SELECT 姓名, 工资 - (SELECT MAX(工资) FROM 员工表 WHERE 姓名 = 员工表.姓名) AS 工资涨幅FROM 员工表;10. 编写一个SQL查询,计算每个员工的工资和距离入职日期的年数的乘积,并按照乘积的降序排列。

SELECT 姓名, 工资 * (SYSDATE - 入职日期)/365 AS 乘积FROM 员工表ORDER BY 乘积 DESC;以上是Oracle练习题的答案,通过这些题目可以提升对Oracle数据库的理解和应用能力。

oracle的sql练习题

oracle的sql练习题1. 编写SQL查询语句,从员工表(EMPLOYEES)中选择工资(SALARY)大于5000的员工信息,按照工资的降序排列。

```sqlSELECT * FROM EMPLOYEES WHERE SALARY > 5000 ORDER BY SALARY DESC;```2. 编写SQL查询语句,从部门表(DEPARTMENTS)中选择部门名称(DEPARTMENT_NAME)、部门位置(LOCATION_ID)以及该部门员工的数量,按照员工数量的升序排列。

```sqlSELECT DEPARTMENT_NAME, LOCATION_ID, COUNT(*) AS EMPLOYEE_COUNTFROM DEPARTMENTSJOIN EMPLOYEES ON DEPARTMENTS.DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_IDGROUP BY DEPARTMENT_NAME, LOCATION_IDORDER BY EMPLOYEE_COUNT ASC;```3. 编写SQL查询语句,从员工表(EMPLOYEES)中选择员工的姓名(FIRST_NAME)以及所属部门的名称(DEPARTMENT_NAME),要求只选择属于部门名称以"E"开头的员工信息。

```sqlSELECT FIRST_NAME, DEPARTMENT_NAMEFROM EMPLOYEESJOIN DEPARTMENTS ON EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_IDWHERE DEPARTMENT_NAME LIKE 'E%';```4. 编写SQL查询语句,从员工表(EMPLOYEES)中选择员工的姓名(FIRST_NAME)以及所属部门的名称(DEPARTMENT_NAME),要求只选择属于部门名称以"A"结尾的员工信息,且员工的工资(SALARY)在3000到6000之间。

oracle sql 试题及答案

oracle sql 试题及答案在Oracle数据库管理和开发中,SQL(Structured Query Language)是一种标准化的关系型数据库语言。

在这篇文章中,我们将提供一些Oracle SQL试题及其答案,旨在帮助读者巩固和加深对Oracle SQL语言的理解。

请注意,答案中不再重复题目,仅给出相应的解答。

1. 以下SQL语句中,哪一个用于创建一个名为"Employees"的表?CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,LastName VARCHAR2(50),FirstName VARCHAR2(50),DateOfBirth DATE);2. 在一个名为"Employees"的表中,你想要删除LastName为"Smith"的所有行。

你应该使用以下哪个SQL语句?DELETE FROM Employees WHERE LastName = 'Smith';3. 假设你有一个名为"Employees"的表,你想要增加一个名为"Salary"的列,数据类型为NUMBER(10,2)。

你应该使用以下哪个SQL 语句?ALTER TABLE Employees ADD (Salary NUMBER(10,2));4. 以下SQL查询语句将返回哪些列?SELECT LastName, FirstName FROM Employees;答案:该查询将返回"Employees"表中的LastName和FirstName列。

5. 以下SQL语句将返回"Employees"表中有多少条记录?SELECT COUNT(*) FROM Employees;答案:该查询将返回"Employees"表中的记录数。

oracle数据库sql试题及答案

oracle数据库sql试题及答案Oracle数据库SQL试题及答案1. 如何查询员工表中所有员工的姓名和工资,要求工资从高到低排序?```sqlSELECT name, salaryFROM employeesORDER BY salary DESC;```2. 如何统计每个部门的员工人数?```sqlSELECT department_id, COUNT(*) AS employee_countFROM employeesGROUP BY department_id;```3. 如何查询工资高于平均值的员工信息?```sqlSELECT *FROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);```4. 如何找出没有直属上司的员工?```sqlSELECT *FROM employees e1WHERE NOT EXISTS (SELECT 1FROM employees e2WHERE e1.manager_id = e2.employee_id);```5. 如何查询工资在3000到5000之间的员工姓名和工资?```sqlSELECT name, salaryFROM employeesWHERE salary BETWEEN 3000 AND 5000;```6. 如何删除员工表中所有工资低于3000的员工记录?```sqlDELETE FROM employeesWHERE salary < 3000;```7. 如何更新员工表中所有部门为10的员工的工资,增加10%?```sqlUPDATE employeesSET salary = salary * 1.1WHERE department_id = 10;```8. 如何查询员工表中每个员工的姓名和他们直属上司的姓名?```sqlSELECT AS employee_name, AS manager_name FROM employees e1JOIN employees e2 ON e1.manager_id = e2.employee_id; ```9. 如何查询员工表中每个部门的平均工资?```sqlSELECT department_id, AVG(salary) AS avg_salary FROM employeesGROUP BY department_id;```10. 如何查询员工表中工资最高的员工信息?```sqlSELECT *FROM employeesWHERE salary = (SELECT MAX(salary) FROM employees); ```。

Oracle SQL:经典查询练手第二篇

1.基本练习本文使用的实例表结构与表的数据如下:scott.emp员工表结构如下:1.SQL> DESC SCOTT.EMP; Type Nullable Default Comments3.-------- ------------ -------- ------- --------4.EMPNO NUMBER(4) 员工编号5.ENAME VARCHAR2(10) Y 员工姓名6.JOB VARCHAR2(9) Y 职位7.MGR NUMBER(4) Y 上级编号8.HIREDATE DATE Y 雇佣日期9.SAL NUMBER(7,2) Y 薪金M NUMBER(7,2) Y 佣金11.DEPTNO NUMBER(2) Y 所在部门编号12.--提示:工资=薪金+佣金scott.dept部门表1.SQL> DESC SCOTT.DEPT; Type Nullable Default Comments3.------ ------------ -------- ------- --------4.DEPTNO NUMBER(3) 部门编号5.DNAME VARCHAR2(14) Y 部门名称6.LOC VARCHAR2(13) Y 地点scott.emp表的现有数据如下:1.SQL> SELECT * FROM SCOTT.EMP;2.3.EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO4.----- ---------- --------- ----- ----------- --------- --------- ------5. 7369 SMITH CLERK 7902 1980-12-17 800.00 206. 7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 307. 7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00 308. 7566 JONES MANAGER 7839 1981-4-2 2975.00 209. 7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 3010. 7698 BLAKE MANAGER 7839 1981-5-1 2850.00 3011. 7782 CLARK MANAGER 7839 1981-6-9 2450.00 1012. 7788 SCOTT ANALYST 7566 1987-4-19 4000.00 2013. 7839 KING PRESIDENT 1981-11-17 5000.00 1014. 7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 3015. 7876 ADAMS CLERK 7788 1987-5-23 1100.00 2016. 7900 JAMES CLERK 7698 1981-12-3 950.00 3017. 7902 FORD ANALYST 7566 1981-12-3 3000.00 2018. 7934 MILLER CLERK 7782 1982-1-23 1300.00 1019. 102 EricHu Developer 1455 2011-5-26 1 5500.00 14.00 1020. 104 huyong PM 1455 2011-5-26 1 5500.00 14.00 1021. 105 WANGJING Developer 1455 2011-5-26 1 5500.00 14.00 1022.23.17 rows selectedScott.dept表的现有数据如下:1.SQL> SELECT * FROM SCOTT.DEPT;2.3.DEPTNO DNAME LOC4.------ -------------- -------------5. 110 信息科海口6. 10 ACCOUNTING NEW YORK7. 20 RESEARCH DALLAS8. 30 SALES CHICAGO9. 40 OPERATIONS BOSTON10. 50 50abc 50def11. 60 Developer HaiKou12.13.7 rows selected用SQL完成以下问题列表:1.找出EMP表中的姓名(ENAME)第三个字母是A 的员工姓名。

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