1.oracle处理sql语句时再同一时间处理每一条语句,在网络环境下意味着每当一个独立的调用都被oracle服务器所处理,占用了大量的服务器时间,导致网络拥挤。。而PL/SQL以整句发送服务器,降低了网络拥挤...

 

2.包(package):组合一起相关对象的集合,当包中函数/存储过程被调用时,包就加载在内存中,包中函数/存储过程的子程序访问将加大访问速度...

 

3.LOB(large object)大对象数据类型存储图像,声音等大型数据,可以是二进制或字串,大小不超4G... 

 

4.oracle-scott账户解锁: alter user scott identified by apple account unlock...apple 为scott账户设置的密码... 

 

5.select * from scott.emp; //打印出来的结果条目栏有两行,输入命令:set linesize 300;//每页显示的表值较少导致条目栏有多个,在此设置一个,保证了每页的打印结果有100行..命令:set pagesize 100;

 

6.oracle sql*plus 解决输入一串字符后要删除后面的才能修改前面的字符,浪费时间浪费小手,在此一般:sql>ed apple //(apple为要打开的txt文本文件),然后选择创建...输入查询语句完毕后在sql>@apple 或者 sql>@f:\oracle\script\apple.txt //直接保存或者创建apple.sql文件,这样可以直接执行得到结果...

 

7.sys 最高权限..sysdba角色,能创建DB。。。system 用户管理操作员..sysoper..没有创建DB权限..数据库维护用system...能否create database的权限决定与sys和system是否具有sysdba角色,即使 sys/system as sysdba...

 

8.dba权限修改自己的密码用sql>password oracle..即可。。。拥有dba权限修改其他账户如scott的密码,则可以:alter user scott identified by scott来完成对scott密码的修改...

 

9.新创建用户apple:sql>create user apple identified by apple...sql>conn apple/apple

显示:error:ORA-01017: invalid username/password; logon denied...原因:未给相应的权限conn/select/update==...

解决方案:由dba(sys/system)授予权限..sql>grant connect to apple //给予conn权限到apple用户...sql>grant select on scott.emp to apple...显示授权成功..sql>grant update on scott.emp to apple..显示授权成功...然后sql>conn apple/apple就能登录成功而且可以select和update...

 

10.sql>conn sys/oracle...①:system授权connect给用户不是针对某张表或者某个数据库,而是针对所有数据库的大门。。sql>grant connect to apple√...sql>grant connect on scott.emp to apple×...②:system授权select给apple,然后apple也有权利授予bpple,也可以授权给cpple...

 

11.oracle字串类型:char定长,最大2000B...varchar变长,最大4000B...clob(character large object)字符型大对象,最大4G...blob (binary large object)二进制大对象,存储图片/声音...number(5)长度为五位的整数,number(5,2)五位有效数字,两位小数...time含有年月日时分秒(1-1月-2011)...

 

12.table student(xh number(4),xm char(20),xb char(2),sr date)...修改表增加一个字段,alter table student add(classId number(2));..修改字串的长度/类型:alter table student modify(xm varchar2(35));...

 

13.查询字段为空的记录:select * from student where birthday is null;√ ... select * from student where birthday = null;× ... select * from student where birthday is not null;√ ...

 

14.savepoint a;//创建保存点a.. delete from student;//查询student表为空.. rollback to a;恢复到保存点...rollback to a;//首先要保证savepoint已经设置而且要保证rollback to a;已经使用一次...经验:truncate from table后再rollback to a显示没有创建保存点a...

 

15.distinct取消重复行的标准是:取消查询的某些/所有字段的重复行,而不是单独的某一列的值取消..1.select distinct deptno,job from scott.emp√;...2.select deptno,distinct job from scott.emp;×...

 

16.oracle重要特性:读一致性(Read Consistency)的特性...即一个会话修改数据时,只要不提交,其他的会话就看不到这项修改,要记住这个概念,这是Oracle极重要的特性...consistency[kən'sistənsi] n.连贯, 一致性, 强度, 硬度, 浓稠度...

 

17.分布式查询功能:一次查询、访问存储于多个位置上的数据...最小粒度:row-level locking行级锁...联机热备份:数据库执行备份的时候就不再需要停机...10g网格计算定义:10g中网格计算相当于将整个信息化的各个物理和逻辑的组成部分(如存储、数据库、应用程序等)定义成虚拟化的服务,由Grid Control(Oracle公司提供的控制软件)统一控制...

 

18.”数据和物理独立性”解释:当数据在物理存储结构上发生变化时应用程序在逻辑上不应受到影响...数据的逻辑独立性: 当改变表的结构时应用程序在最大程度上不受影响...client/server系统:单一的任务分解到多个处理器上进行协同处理,就像在单个处理器上运行时一样。将多个处理器捆绑在一起以提供一个单一系统虚拟环境共享的资源可以被位于远端的客户机通过特殊的服务来访问...

 

19.开放型数据库联接ODBC:为应用程序接口API 提供的访问下层数据库所用的函数库它通过数据库引擎与数据库交流..ODBC 是许多数据库所支持的一种标准...

 

20.SQL 语句对大小写并不敏感,但在数据库中的字符型char/varchar数据却是大小写敏感的...where name ='LINCOLN' vs where name ='lincoln' 不同的查询结果...select * from emp where job like '%K'; vs select * from emp where job like '%k'; 两者的结果不同...scott->emp->empno字段为number类型..用like同样和字符串一样能处理..如:查询数字为7打头的一些empno值语句如下:select * from emp where empno like '7%'...

 

21.select ename from emp union/union all/intersect select ename from apple; //1.联合查询union去掉重复的ename后输出两个表的所有ename,.....2.union all输出所有字段两表的.....3.intersect[.intə'sekt]v.贯穿, (和 ... )相交, 交叉 ..返回两表中共有的行... minus相减...返回存在第一表中不存在第二表中字段..select ename from emp minus select ename from apple;

 

22.sum求和只应用于数字..select sum(ename) from emp;...结果:ORA-01722: 无效数字(invalid number)... avg求平均..仅限于有值的字段..非null值但是0值也算..emp.comm字段有14条记录,只有三条有comm值300,500,1400,还一个0..avg(comm)=300+500+1400+0/4=550...select ename where comm=max(comm);×..where字段不允许用max分组函数..只能使用子查询进行:select ename from emp where comm=(select max(comm) from emp);...

 

23.查询hiredate雇佣日期在1983年1月1日前入职的员工:select ename,hiredate from emp where months_between('1-1月 -83',hiredate)>0;//months_between函数能查出月份在前者 - 后者的取值有正有负,取正值表示hiredate的值为小的就是在这之前入职的人员..而<0的则是在此之后... 到现在为止有哪些员工入职:select ename from emp where hiredate<sysdate;...sysdate返回当前系统的时间...

 

24.数学函数ceil ['si:liŋ] n.天花板, 上限 /floor [flɔ:]n.地面, 地板...CEIL 返回与给定参数相等或比给定参数在的最小整数FLOOR 则正好相反它返回与给定参数相等或比给定参数小的最大整数...

 

25.concat函数:两字段相连..等价于 || ...1.select ename||job ”first_name_second_job” from apple;2.select concat(ename,job) ”first_name_second_job” from apple; //两者的结果一致...

 

26.大写/小写/首字母大写:select upper(ename),lower(ename),initcap(ename) from apple;...initcap能将所有字符串的首字母大写.. ltrim/rtrim剪切左端和右端,rtrim(ename,'H')意为剪切ename字段的右端含有H的...

27.substr的应用:apple表字段phone(number(11))..占有11位大小的phone列值查询后显示的结果为:1.6888E+10...不是很直观.而输出此:168-8888-8888则非常清楚..语句如下:select phone,substr(phone,1,3)||'-'||substr(phone,4,4)||'-'||substr(phone,8,4) from apple;...

 

28.instr(源字符串, 目标字符串, 起始第几个位置, 搜索第几个返回)... select ename,instr(ename,'S',1,1) from apple;//查询ename字段S字符从第一个开始查询到第二个返回... instr从第一个起始位置开始至查询到第二个搜索结束均是宏观概念..意思就是两数字都是从1开始,没有0... 

 

29.求值' allen '的长度:select ename,length(ename),length(ltrim(ename)),length(rtrim(ename)),length(ltrim(rtrim(ename))) from apple where  empno=7846;//ename本身大小:VARCHAR2(10)...查询的结果为:allen 9 7 7 5...

 

30.system登陆,sql>select user from scott.emp;...scott登陆,sql>select user from emp;...每个sql*plus终端显示的结果表明一个终端对应一个用户...即使当前有其他用户在其他终端登陆产生一样的结果..user()函数返回当前使用数据库的用户的名字...so:每个终端访问相同的表只能是自己user,比如sys访问,则语句结果为sys,scott登陆查询则显示为scott...select user查询,系统会去检索数据库中每一行..导致表有几行数据就打印几个sys/scott/system..利用distinct解决相同字段...

 

31.select ename,sum(empno) from apple;×ORA-00937: 不是单组分组函数...因为:sum是聚合函数,有聚合函数需要用 group by 去分组...如果在select 列表项中除了包含聚合函数外,还包含了表的某些列,那么你将必须使用group by语句,否则语法通不过..例如:统计班上男生和女生的人数,显示的结果肯定是:男生x人,女生y人...select empno,max(empno),min(empno) from apple group by empno;//语句说明:在分组empno值相等的组里,然后分别列出max和min值然后进行输出...

 

32.分析count(*) vs count(col) :count(*)是查询表记录多少行,有记录则会递增+1...count(col)是查询(not null)的个数的,只要此字段值为空值的话就不会递增+1;...

 

33.以eanme进行分组,返回分组后平均工资低于1500的组:select ename,avg(sal) from apple where avg(sal)<1500 group by ename;×//ORA-00934: 此处不允许使用分组函数...原因是由于汇总函数不能工作在where子句,利用group by字句的having字句能解决问题...查询ename,job,avg(sal)且>700:select ename,job,avg(sal) from apple group by ename,job having avg(sal)>700;...

 

34.select empno,max(sal) from apple where sal>700 group by empno; √... select empno,max(sal) from apple where sal>700 group by job;×...原因:无论在什么情况下进行分组SELECT 语句中出现的字段只能是在GROUP BY 中出现过的才可以...select * from apple group by empno;×..ORA-00979: 不是 GROUP BY 表达式...

 

35.等值联合:显示第一个表中的数据以及第二个表中的存在于第一个表中的数值.. select dept.deptno,dept.dname, emp.deptno,emp.ename from scott.dept,scott.emp where dept.deptno=emp.deptno and emp.deptno=20; ...where之后的and字句 一定要加上哪个表的字段deptno..否则的话and deptno=20显示:ORA-00918: 未明确定义列...

 

36.木马程序的原理:先在电脑上用木马程序监听一个端口,即此端口的状态为LISTENING,其他电脑通过网络访问此端口,建立一个连接(其状态为ESTABLISHED),就可任意操作被控制者的电脑...

 

37.SQL> select employee_id,last_name from hr.employees where last_name like 'S%';//where last_name like 's%';string->last_name字段大小写明确,只是写sql语句才不区分大小写,string类型的字串区分大小写... 

 

38.显示名称以“W”开头的雇员,并将名称转换成以大写开头。.. select ename,initcap(ename) from emp where substr(ename,1,1)='W';...

 

39.rpad/lpad:字符填充字符串左右侧..lpad('Hi',10,'-') 左侧填充-在Hi字段且长度总共为10,而不是指填充10个-..结果为:--------Hi sql例句:select ename,rpad(ename,15,'*') from emp;...TRIM('S' FROM 'SSMITH')//结果:MITH...REPLACE('abc','b','d')//结果:adc...CONCAT('Good', 'String');//结果:GoodString...substr(hire_date,-2,2)=99;//hire_date从倒数第二个字串开始的长度为2个的字符等于99的数据... extract:获取日期的year/month/day...hire_date,extract(year from hire_date),substr( extract(year from hire_date),-2,2)...结果为: 17-6月 -87..1987..87 ...

 

40.存储过程:create or replace procedure emp_count is num number; begin select count(*) into num from emp; dbms_output.put_line(num); dbms_output.put_line('my first procedure!!!'); end; /...

 

41.instance && database 理解:桌面apple.txt文本类似于database数据库文件,双击运行apple.txt后在进程管理器里面存着的notepad.exe进程就类似于instance...instance是一组进程,还一块共享的内存区域/database是一组数据库文件...

 

42.select ename,deptno,dname from emp,dept where emp.deptno=dept.deptno //deptno在emp和dept表中均有,所以select deptno显示错误为:ORA-00918: 未明确定义列...所以修改为:select emp.deptno 或者dept.deptno ...

 

43.查询第二名工资的员工 select ename,sal from (select ename ,sal from (select ename,sal from emp order by sal desc) where rownum<=2) where rownum<=1;...

 

44.对特定表操作(选择插入更新删除)的能力叫做权限。特定的权限组合就构成了角色(role)...

 

45.is null意味着这个值不可用、未配置的、未知的和不可应用的!空值不能等于或者不等于任何值,因此comm=null 是赋值,comm is null 是判断...

 

46.oracle-number数值型,可存储integer/float/real number..这些类型统一为number,oracle没有定义integer/int,将会把字段定义此两类型转换为number以存储!number包含了integer/float等这些类型,降低了用户设计数据库的复杂性...

 

47.SQL> create sequence my_seq minvalue 1 maxvalue 99 start with 1 increment by 1 cache 20;//先执行 select my_seq.nextval from dual;//然后执行 select my_seq.currval from dual;...scott执行时候没alter system权限,切换或者继续连接system,执行:SQL> alter system flush shared_pool;...继续切换scott查看:SQL> select my_sequence.nextval from dual;//结果为:NEXTVAL 21 ...可以看出来,如果刷新内存那么就会造成序列的不连续,也就是会出现GAP... 

 

48.cmd1 vs cmd2 窗口,在cmd1下执行命令:lsnrctl stop; //关闭监听..在cmd2下执行登陆命令:sqlplus scott/oracle@orcl; //产生错误:无监听..然后再在cmd1命令下执行:lsnrctl start;//启动监听...再在cmd2执行登陆命令:sqlplus scott/oracle@orcl; //登陆被拒绝...直到三次后重新退出到cmd命令...最后再cmd命令行执行:>sqlplus scott/oracle@orcl 执行成功... 

 

posted on 2012-03-16 12:19  小蚂蚱  阅读(199)  评论(0编辑  收藏  举报