oracle命令总结笔记(总结完成版)

合集下载

(完整版)Oracle操作语句大全

(完整版)Oracle操作语句大全

Oracle 操作语句大全1.desc(描述)emp 描述emp这张表2.desc dept 部门表3.desc salgrade 薪水等级4.select *from table 查找表中的元素5.dual 是系统中的一张空表6.select *from dual7.select sysdate from dual 取出系统时间8.select ename,sal*12 "annul sal"(取的别名)from emp; 查找用户姓名和用户的年薪9.任何含有空值的数学表达式的值都是空值select ename,sal*12+comm from emp;10.select ename||sal from emp 其中的||相当于将sal全部转化为字符串11.表示字符串的方法select ename ||'ajjf' from emp;12.如果其中有一个单引号就用2个单引号来代替他select ename||'sakj' 'lds'from emp;13.select distinct deptno from emp (去除部门字段中重复的部分,关键字distinct)14.select distinct deptno,job from emp;(去除这2个字段中重复的组合)15.select *from dept where deptno=10; 取出条件(取出部门编号为10的记录)16.select * from emp where ename='CLIRK'; 取出部门中姓名为clirk的记录(注意取出过程中ename用单引号隔开)17.select ename,sal from emp where sal>1500; 取出部门中薪水大于1500的人的姓名18.select ename,sal,deptno from emp where deptno<> 10 取出部门中的部门号不等于10的19.select ename,sal,deptno from emp where ename>'CBA' 取出部门中员工名字大于CBA的员工(实际比较的是ACIIS码)20.select ename,sal from emp where sal between 800 and 1500select ename,sal from emp where sal>=800 and sal<=1500; (取出800和1500之间的数) 21.select ename,sal,comm from emp where comm is null (选出其中的空值)select enmae,sal,comm from emp where comm is not null(选出其中的非空值)22.select ename,sal,comm from emp where sal in (800,1500,2000);取出这3者之中的select ename,sal,comm from emp where ename in('simth');23.select ename,sal,hiredate from emp where hiredata>'3-04月-81';宣传符合条件的日期24.select ename,sal,from emp where sal>1000 or deptno=10; 找出工资薪水大于1000或者部门号等于10的员工25.select ename,sal from emp where sal not in(500,1000); 查找薪水不在500到1000的员工姓名和月薪26.select ename,sal from emp where ename like '%ALL%';select ename,sal from emp where ename like '_%A%'; 查找姓名中含有ALL的客户信息,一个横线代表一个通配符27.select ename,sal from emp where ename like '_%$%%' escape '$'; 自己指定转易字符select ename,sal from emp where ename like '_%\%%'; 查找中间含有%相匹配的客户信息,运用转易字符28.select * from dept order by deptno 对表中元素按部门号排序select *from dept order by deptno desc 默认为升序,可以用desc 按降序29.select ename,sal from emp where sal <>1000 order by sal desc 按照查询条件来查询,并排序(asc升序排列)30.select ename,sal*12 from emp where ename not like '_%A%' and sal>800 order by sal desc31.select lower(ename) from emp 将ename都转化为小写lower是函数能将字母转化为小写32.select ename from emp where lower(ename) like '_%a%'; 找出ename 中所有的含有a的字符33.select substr(ename,2,3) form emp 从第2个字符开始截取3个字符34.select chr(65) from dual; 将65转化为字符35.select ascii('A') from dual 将ACSII码转化为字符串36.select round(23.565)from dual 四舍五入36.select round(23,4565,2)from dual 四舍五入到第二位37.select to_char(sal,'$99.999.9999') from emp 按指定格式输出select to_char(sal,'L99,999,9999') form emp L代表本地字符38.select hiredate from empselect to_char(hiredate,'YYYY-MM-DD HH:MI:SS) from emp; 时间格式的显示select to_char(sysdate,'YYYY-MM-DD HH:MI:ss) from dual; 十二小时制显示系统时间select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS) from dual 二四小时制显示系统时间39.select ename,hiredate from emp where hiredate > to_date('2005-2-3 12:32:23','YYYY-MM-DD HH:MI:SS');40 select sal from emp where sal>to_number('$1,250.00','$9,999.99'); 取出比它大的一切字符串(把特定格式的数字转化成字符)41 select ename,sal+nvl(comm,0) from emp; 讲comm值为空的用0来替换,单行函数(以一条记录为条件)一条对一条42.select Max(sal) from emp;select Min(sal) from emp;select avg(sal) from emp;select sum(sal) from emp;select count(*) from emp; 查看表中一共有多少条记录select count(*) from emp where deptno=10; 查找部门10一共有多少人;43.select avg(sal),deptno from emp group by deptno; 按部门号进行分组select deptno,job,max(sal) from emp group by job,deptno; 按工作和部门号进行分组;44.select ename from emp where sal=(select max(sal) from emp); 子查询,查找部门中薪水最高的员工姓名45.group by 注意:出现在select列表中的字段,如果没有出现在组函数中必须出现在group by 子句中46.select avg(sal),deptno from emp group by deptno having avg(sal)>2000; 选出部门中平均薪水大于2000的部门,47.select * from emp where sal>100 group by deptno having ..........order by........先取数据--过滤数据------分组----对分组限制-------排序48.select avg(sal) from emp where sal>2000 group by deptno having avg(sal)>1500 order by avg(sal) desc;查找部门中平均薪水打印2000的员工并按部门号进行排序,查询分组后的平均薪水必须大于1500,查询结果按平均薪水从低到高排列49.select ename from emp where sal>(select avg(sal) from emp);查找出员工中薪水位于部门平均薪水之上的所有员工50.select ename,sal from emp join(select max(sal) max_sal from emp group by deptno) t on(emp.sal=t,max_sal and emp.deptno=t.deptno);查找每个部门中薪水最高的51.select e1.ename,e2.ename from emp e1,emp e2 where e1.mgr=e2.empno; 表的自连接52.select dname,ename from emp cross join dept 交叉连接,笛卡尔SQL99中的新语法53.select ename,dname from emp join dept on(emp.deptno=dept.deptno);54.select ename,dname from emp join dept using(deptno); 查找emp和dept表中deptno相同的部分。

occi笔记整理

occi笔记整理

一.Oracle oci工具包安装:$ORACLE_HOME\BIN:执行文件和help文件$ORACLE_HOME\OCI\INCLUDE:头文件$ORACLE_HOME\OCI\LIB\BC: for Borlanf C++的OCI库$ORACLE_HOME\OCI\LIB\MSVC: for MS Visual C++的OCI库如果是unix下,对于ORACLE8i,则OCI库在$ORACLE_HOME/lib下,如果是9i,则在$ORACLE_HOME/lib32下,库文件名一般为libclntsh.so1.创建OCI环境即创建和初始化OCI工作环境,其他的OCI函数需要OCI环境才能执行。

2.需要申请的句柄类型:OCI环境句柄: OCI_HTYPE_ENV—它定义所有OCI函数的环境调用环境,是其他句柄的父句柄。

(由OCIEnvInit或OCIEnvCreate生成)错误句柄:OCI_HTYPE_ERROR—作为一些OCI函数的参数,用来记录这些OCI函数操作过程中所产生的错误,当有错误发生时,可用COIErrorGet()来读取错误句柄中记录的错误信息。

服务器环境句柄:OCI_HTYPE_SVCCTX—定义OCI调用的服务器操作环境,它包含服务器、用户会话和事务三种句柄。

服务器句柄:OCI_HTYPE_SERVER—标识数据源,它转换为与服务器的物理连接。

用户会话句柄:OCI_HTYPE_SESSION—定义用户角色和权限及OCI调用的执行环境。

事务句柄:OCI_HTYPE_TRANS—定义执行SQL操作的事务环境,事务环境中包含用户的会话状态信息。

语句句柄:OCI_HTYPE_STMT—是一个标识SQL语句或PL/SQL块,以及其相关属性的环境。

Bind/Define句柄:属于语句句柄的子句柄,由OCI库隐式自动生成。

用户不需要自己再申请,OCI输入变量存储在bind 句柄中,输出变量存储在定义句柄中3.句柄属性包括:服务器环境句柄属性:(OCI_HTYPE_SVCCTX)OCI_ATTR_SERVER—设置/读取服务环境的服务器环境属性OCI_ATTR_SESSION—设置/读取服务环境的会话认证环境属性OCI_ATTR_TRANS—设置/读取服务环境的事务环境属性用户会话句柄属性:(OCI_HTYPE_SESSION)OCI_ATTR_USERNAME—设置会话认证所使用的用户名OCI_ATTR_PASSWORD—设置会话认证所使用的用户口令服务器句柄:(OCI_HTYPE_SEVER)OCI_ATTR_NOBLOCKING_MODE—设置/读取服务器连接:=TRUE时服务器连接设置为非阻塞方式语句句柄:(OCI_HTYPE_STMT)OCI_ATTR_ROW_COUNT—只读,为当前已处理的行数,其default=1OCI_ATTR_STMT_TYPE—读取当前SQL语句的类型:Eg : OCI_STMT_BEGINOCI_STMT_SELECT OCI_STMT_INSERTOCI_STMT_UPDATE OCI_STMT_DELETEOCI_ATTR_PARAM_COUNT—返回语句选择列表中的列数4.关于输出变量定义:如果在语句执行前就知道select语句的选择列表结构,则定义输出操作可在调用 OCISTMTExecute前进行,如果查询语句的参数为用户动态输入的,则必须在执行后定义。

oracle数据库笔记剖析

oracle数据库笔记剖析

达内学员:oracle数据库笔记Oracle 数据库语法顺序select from on where group by having order by执行顺序from on where group by having select order by一、关键字语法介绍1、from on from后面接的是需要查询的表格on后面接的是表的连接条件和过滤条件单表查询直接跟上源表的名字多表查询跟上的是源表的名字和两表之间的连接种类2、where where语句实现的是对查询表的结果集的筛选where语句后面跟的是条件表达式(可以是列名、常量,比较运算符,文字值)between ..and.. 语句表示一个范围,是两边的闭区间范围in 运算符是表示范围是一个由离散值组成的集合like运算符配合通配符进行相关字符性的信息查找%表示0或多个字符_表示任意单个字符is null表示值是空值null的行信息3、group by 根据group by子句指定的表达式将要处理的数据分组4、having 根据统计结果添加条件对分组后的组进行过滤只有符合having条件的组被保留{where和having的区别}where过滤的是行,having过滤的是分组where可以跟任意列名、单行函数,having只能包含group by的表达式和组函数where执行在前,having执行在后where和having都不允许用列别名5、select select语句把需要显示的列的名称或者是表达式进行设定(查询的核心步骤)通过select语句得到需要的信息进行显示distinct(去重)跟在select后面,用于对显示的记录进行去重操作6、order by 用于对select语句的结果集进行排序的语句后面跟上需要依赖进行排序的列名以及asc(升序,默认)或者desc(降序)7、insert into…用于把记录添加到表格当中insert into tabname(col1,col2/*不写括号默认添加行的所有列,书写可以写进去相应列的记录,其他保持空值*/) values (val1,val2);8、drop 用于删除表格drop table tabname cascade constraints purge;/*cascade constraints用在删除表格前先中断与其他表格的外键约束关系*/9、alter table 修改表格中的列的信息alter table tabname modify (colname null);/*not null列改为null列*/alter table tabname modify (colname default 1 not null);/* null列改为not null列*/alter table tabname add(建表时列定义方法);/*添加列*/alter table tabname drop(colname);/*删除列*/10、synonym 同义词create synonym account for tarena.account;/*设置account与tarena.account一致*/二、数据类型1、number类型number(int a,int b) 表示该数值有a位有效数字,b位小数位ex: number(6);第二个参数不写默认为0,表示从-999999~999999的整数number(4,3);4位有效数字,3位小数位,表示从-9.999~9.999的三位小数数字number(3,-3);3位有效数字,-3位小数位,表示(+-)1~(+-)999*103的数字2、字符类型a、char类型按定义的字符长度存可以不定义长度,缺省为1字节,最大长度2000字节b、varchar2类型按字符串的实际长度存必须定义长度,最大值为4000字节/*列的取值是定长,定义为char类型;列的取值长度不固定,定义为varchar2类型*/ 3、日期函数缺省日期格式为DD-MON-RRalter session set nls_date_format = “yyyy-mm-dd hh24:mi:ss”;/*调整系统date函数缺省格式函数*/三、比较和逻辑运算符比较运算符: = , > , >= , < , <=SQL比较运算符: between and , in , like , is null逻辑运算符: and , or , not否定形式: 比较运算符: <> , != , ^=SQL比较运算符: not between and , not in , not like , is not null四、函数1、字符函数lower 把字符中的字母降为小写upper 把字符中的字母升为大写initcap 把字符中的首字符转为大写concat 拼接函数的内容substr 求子串的函数length 字符串的长度lpad 右对齐函数,位数不够的,左边补指定字符lpad('a',5,'b') 在a前方补4个b到5位rpad 左对齐函数,位数不够的,右边补指定字符trim 去掉字符串两边的空格和制表符2、数值函数round(num,x);对传进的num数值进行四舍五入,保留x位小数trunc(num,x);对传进的num数值进行去尾操作,保留x位小数3、日期函数add months(Date date,number a) 一个日期加a各月months between 两个日期之间相差几个月next day 下一天last day 前一天4、转换函数to date(str);把字符串转为时间函数to char(Date date,String reg);根据reg传入的格式把date转换为字符串to number(str);把数字的字符串转为number数据类型5、一般函数nvl(col1,String str);遍历col1列所有元素,有空值的会置换为str字符串五、SQL语句中的分支1、case ... then... 对where语句进行优先级筛选,从上到下,有一个满足便马上退出case select base_duration,base_cost,case when base_duration = 20 then unit_cost + 0.05when base_duration = 40 then unit_cost + 0.03elseunit_costendnew_unit_cost from cost;当base_duration找到符合的值便马上套用值退出;如果不添加else语句,不符合case中的base_duration的值此时会输出null2、decode 用法与case...when接近SELECT a2.real_name cunstomer,DECODE(a1.real_name,a2.real_name,'No recommender', a1.real_name) recommenderFROM account a1 JOIN account a2ON a1.id = NVL(a2.recommender_id,a2.id);后面的参数分别是: 需要检查的列名,条件1,执行语句1,条件2,执行语句2,... 不符合所有条件时返回的执行语句语句执行的方法是: 找到当前表格的列,检查列中的每一个值是否符合各项的条件,一有符合的条件,马上跳转到执行语句上并执行后退出decode; 若列中的值没有符合条件,则会执行”不符合所有条件时返回的执行语句”后结束decode。

常用oracle数据库命令

常用oracle数据库命令

常用oracle数据库命令
1. 启动Oracle数据库
$ sqlplus /nolog
SQL> connect / as sysdba
SQL> startup
3. 创建表空间
创建表空间的命令是:
SQL> create tablespace 表空间名 datafile '路径名' size 大小;
6. 创建用户
7. 删除用户
删除用户的命令是:
8. 授权用户
SQL> grant 权限 to 用户名;
9. 撤销用户的权限
11. 查看表结构
查看表结构的命令是:
SQL> desc 表名;
SQL> create table 表名 (列名数据类型, 列名数据类型, …);
13. 删除表
14. 插入数据
插入数据的命令是:
SQL> update 表名 set 列名=新值 where 某条件;
18. 创建索引
20. 查看索引
21. 查询相关信息
查询相关信息的命令是:
SQL> select * from v$session; -- 查看会话 22. 查看数据库版本
24. 备份数据库
$ exp 用户名/密码 file=备份文件路径备注:以上命令均需要在Oracle登录后进行。

Oracle数据库语法总结

Oracle数据库语法总结

Oracle数据库语法总结一、DDL(数据定义语言)1、创建、删除表(1)CREATE TABLE 语句用于在Oracle数据库中创建新表:CREATETABLE表名(列1数据类型(大小/长度)[NOTNULL][CONSTRAINT约束名]列2数据类型(大小/长度)[NOTNULL][CONSTRAINT约束名]……(2)DROP TABLE 语句用于从Oracle数据库中删除表:DROPTABLE表名2、更改表(1)ALTERTABLE语句用于更改现有的表:ALTERTABLE表名ADD(添加新的列),MODIFY(修改现有的列),DROP(删除现有的列)(2)RENAME语句用于更改表名:RENAME表名1TO表名23、创建索引(1)CREATEINDEX语句用于在表中创建索引:CREATEINDEX索引名ON表名(列1,列2,...)(2)DROPINDEX语句用于从表中删除索引:DROPINDEX索引名4、创建约束(1)Primary Key 约束:ALTERTABLE表名ADDCONSTRAINT主键名PRIMARYKEY(列名)(2)Foreign Key约束:ALTERTABLE表名ADDCONSTRAINT外键名FOREIGNKEY(列名)REFERENCES参照表名(参照列);(3)Unique 约束:ALTERTABLE表名ADDCONSTRAINT唯一约束名UNIQUE(列1,列2,...);(4)NOTNULL约束:ALTERTABLE表名ADDCONSTRAINT非空约束名NOTNULL(列1,列2,...);5、删除约束(1)Primary Key 约束:ALTERTABLE表名DROPCONSTRAINT主键名PRIMARYKEY;(2)Foreign Key约束:ALTERTABLE表名DROPCONSTRAINT外键名FOREIGNKEY;(3)Unique 约束:。

oracle分组排序汇总笔记

oracle分组排序汇总笔记

一、相关函数:Group by、Rollup、Cube、Grouping sets、Over、Grouping_id、Grouping、Decode、lag、lead、rank、dense_rank、row_number、count二、初始化数据:-- Create tablecreate table EMPLOYEE(EID NUMBER not null,ENAME V ARCHAR2(20) not null,EADDRESS V ARCHAR2(200) not null,E_DID NUMBER not null,HIRE_DA TE DA TE not null,SALARY NUMBER(8,2) not null,BONUS NUMBER(8,2),BOSS NUMBER)tablespace USERSpctfree 10initrans 1maxtrans 255storage(initial 64minextents 1maxextents unlimited);-- Create/Recreate primary, unique and foreign key constraintsalter table EMPLOYEEadd primary key (EID)using index;--insert contentinsert into EMPLOYEE (EID, ENAME, EADDRESS, E_DID, HIRE_DATE, SALARY, BONUS, BOSS)values (1, '郭芙', '广东', 1, to_date('02-01-2006', 'dd-mm-yyyy'), 2000.5, 100.5, 10);insert into EMPLOYEE (EID, ENAME, EADDRESS, E_DID, HIRE_DATE, SALARY, BONUS, BOSS)values (3, '杨康', '成都', 3, to_date('14-07-2004', 'dd-mm-yyyy'), 3000, null, 10);insert into EMPLOYEE (EID, ENAME, EADDRESS, E_DID, HIRE_DATE, SALARY, BONUS, BOSS)values (9, '杨过', '广东', 1, to_date('02-03-2005', 'dd-mm-yyyy'), 2000, 1000, 10);insert into EMPLOYEE (EID, ENAME, EADDRESS, E_DID, HIRE_DATE, SALARY, BONUS, BOSS)values (10, '小龙女', '广东', 2, to_date('05-04-2000', 'dd-mm-yyyy'), 8000, null, 10);insert into EMPLOYEE (EID, ENAME, EADDRESS, E_DID, HIRE_DATE, SALARY, BONUS, BOSS)values (11, '郭襄', '广东', 3, to_date('01-12-2010', 'dd-mm-yyyy'), 5000, null, 10);insert into EMPLOYEE (EID, ENAME, EADDRESS, E_DID, HIRE_DATE, SALARY, BONUS, BOSS)values (14, '郭靖', '成都', 2, to_date('08-07-2008', 'dd-mm-yyyy'), 4300, null, 14);insert into EMPLOYEE (EID, ENAME, EADDRESS, E_DID, HIRE_DATE, SALARY, BONUS, BOSS)values (15, '黄蓉', '成都', 3, to_date('13-05-2009', 'dd-mm-yyyy'), 1600, 200, 14);commit;三、具体应用:1、group by与rollup:select eaddress a ,ename b,sum(salary) c from employee group by rollup(eaddress, ename)图1分析:如图,这里不光只对第一个字段做了累计,先按(eaddress,ename)分组累计,再按(eaddress)分组累计,最后累计全部类似于:select * from(select eaddress,ename,sum(salary) a from employee group by eaddress,enameunion allselect eaddress,null,sum(salary) from employee group by eaddressunion allselect null,null,sum(salary) from employee)2、group by 与cube;select eaddress a ,ename b,sum(salary) c from employee group by cube(eaddress, ename) order by a,b图2分析:CUBE这里的使用与ROLLUP基本相同,但CUBE的合计更加详细,它能够显示次分组字段的合计信息类似于:select eaddress a,ename b,sum(salary) c from employee group by grouping sets((eaddress,ename),(eaddress),(ename),()) order by a,b3、group by 与grouping setsselect eaddress a ,ename b,sum(salary) c from employee group by grouping sets((eaddress, ename),())图3-1select eaddress a ,ename b,sum(salary) c from employee group by grouping sets((eaddress, ename),(eaddress),())图3-2分析:Group by grouping sets可以应用来指定自己感兴趣的总数组合。

Oracle常用命令大全(很有用,做笔记)

Oracle常用命令大全(很有用,做笔记)

Oracle常⽤命令⼤全(很有⽤,做笔记)⼀、ORACLE的启动和关闭1、在单机环境下要想启动或关闭ORACLE系统必须⾸先切换到ORACLE⽤户,如下su - oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>shutdownSVRMGR>quit启动oracle9i数据库命令:$ sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.SQL> connect / as sysdbaConnected to an idle instance.SQL> startup^CSQL> startupORACLE instance started.2、在双机环境下要想启动或关闭ORACLE系统必须⾸先切换到root⽤户,如下su - roota、启动ORACLE系统hareg -y oracleb、关闭ORACLE系统hareg -n oracleOracle数据库有哪⼏种启动⽅式说明:有以下⼏种启动⽅式:1、startup nomount⾮安装启动,这种⽅式启动下可执⾏:重建控制⽂件、重建数据库读取init.ora⽂件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora⽂件。

2、startup mount dbname安装启动,这种⽅式启动下可执⾏:数据库⽇志归档、数据库介质恢复、使数据⽂件联机或脱机,重新定位数据⽂件、重做⽇志⽂件。

oracle表空间总结(个人笔记总结)

oracle表空间总结(个人笔记总结)

表空间含义:表空间是数据库的逻辑组成部分。

从物理上讲,数据库数据存放在数据文件中;从逻辑上讲,数据库则是存放在表空间中,表空间由一个或多个数据文件组成1,oracle 中逻辑结构包括表空间、段、区和块。

说明一下数据库由表空间构成,而表空间又是由段构成,而段又是由区构成,而区又是由oracle 块构成的这样的一种结构,可以提高数据库的效率。

表空间用于从逻辑上组织数据库的数据。

数据库逻辑上是由一个或是多个表空间组成的2,创建表空间:create tablespace data01 datafile 'd:\test\dada01.dbf' size 20m uniform size 128k;或SQL> create tablespace lqb datefile 'e:\lqb.dbf' size 50M autoextend on next 50M maxsize unlimited extend mangement local;-------------extend mangement local;本地管理表空间。

autoextend on next 50M maxsize unlimited 在50M后最大的扩展时没有限制的3,第3步:创建用户并指定表空间*/ create user USERNAME identified by PASSWORD default tablespace USER_DATE temporary tablespace user_temp;-------------temporary 临时的,暂时的4,如何将表移动到指定表空间alter table TABLE_NAME move tablespace TABLESPACE_NAME;如何将索引移动到指定的表空间alter index INDEX_NAME REBUILD tablespace TABLESPACE_NAME;5,改变表空间的状态a,使表空间脱机alter tablespace 表空间名offline; b,使表空间联机alter tablespace 表空间名online; c,只读表空间alter tablespace 表空间名read only; (修改为可写是alter tablespace 表空间名read write;)6, 知道表空间名,显示该表空间包括的所有表select * from all_tables where tablespace_name='表空间名';7,知道表名,查看该表属于那个表空间select tablespace_name, table_name from user_tables where table_name='emp';8,扩展该表空间,为其增加更多的存储空间。

oracle 笔记

oracle 笔记

关于Oracle的学习笔记,可能包括以下几个重要部分:数据库创建和管理:创建用户和表空间。

以超级管理员的身份登录,创建表空间,创建用户,给用户授权,使用新用户进行查询测试。

数据定义语言(DDL)用于建立、修改、删除数据库对象,包括创建语句(CREATE)、修改语句(ALTER)、删除语句(DROP)。

例如,使用CREATE TABLE创建表,使用ALTER TABLE修改表,使用DROP TABLE删除表等。

数据库查询:数据查询语言(DQL)用于查询所需要的数据。

排序查询结果。

例如,使用SELECT语句查询员工信息,并按升序排序。

排序可使用NULLS FIRST和NULLS LAST来选择空的信息的位置。

字符串拼接。

通过“||”实现字符串的拼接。

例如,查询所有员工姓名并在后面加一个“a”。

当字符串拼接遇到空的时候,空会自动变成一个空字符串。

数据库数据操作:数据操作语言(DML)用于改变数据库数据,包括INSERT、UPDATE、DELETE三条语句。

使用DISTINCT去重。

例如,SELECT DISTINCT name, id FROM A,作用于多列。

数据库高级特性:使用PARTITION BY在保留全部数据的基础上,只对其中某些字段做分组排序。

虚拟表DUAL是一个虚表,虚拟表,是用来构成SELECT的语法规则,Oracle保证DUAL里面永远只有一条记录。

数据库控制和管理:数据控制语言(DCL)用于数据库的控制和管理。

事务控制语言(TCL)用于数据库事务的控制。

以上内容只是Oracle学习笔记的一部分,实际上Oracle数据库系统的学习还包括很多其他的内容,如索引管理、视图、存储过程、触发器等高级数据库对象的管理和使用,以及数据库性能优化、安全性管理等内容。

oracle SQL用法总结汇总

oracle SQL用法总结汇总

Oracle SQL 用法总结(一)用户管理1.创建用户create user user_name --创建用户identified by password[default tablespace def_tablespace] --指定用户默认表空间[temporary tablespace temp_tablespace] --指定用户临时表空间2.用户授权与收回权限grant DBA to user_name --给用户授予DBA角色权限grant create user,create table to user_name(用户名)[with admin option](with admin option 选项表示该用户可以将这种系统权限转授予其他用户) --给用户授予系统权限grant select ,update ,insert on table_name(表名) to user_name(用户名) [with grant option](with grant option 选项表示允许该用户将当前的对象权限转授予其他用户) --为用户添加对象权限revoke create table ,create user from user_name(用户名) --收回用户的系统权限(建表,建用户)revoke selece ,insert ,update ,delete on table_name(表名) from user_name (用户名) --收回用户的对象权限(查询,插入,更新,删除).3.修改用户密码alter user user_name --为用户修改密码identified by new_password;或者直接输入:password --修改当前用户密码.4.修改用户默认表空间alter user user_name --修改用户的默认表空间default tablespace new_def_tablespacetemporary tablespace new_tem_tablespace;5.锁定或解锁用户帐号alter user 用户名; --锁定或解锁一个已存在的用户帐号account lock|unlock (锁定/解锁)6.删除用户drop user user_name(用户名); --删除用户drop user user_name(用户名)cascade; --删除用户的同时还要删掉用户所拥有的数据库对象(如表,索引,簇,视图等);7.创建角色create role role_name(角色名)[identified by role_password] ; --为角色创建密码revoke role_name(角色名) from user_name(用户名); --收回用户的角色权限drop role role_name; --删除角色8.查看用户和系统相关信息set timing on --查看执行效率。

oracle常用语法汇总(持续更新)

oracle常用语法汇总(持续更新)

oracle常⽤语法汇总(持续更新)oracle常⽤语法汇总(持续更新)1、取随机数select dbms_random.random from dual -- 可正可负select MOD(DBMS_RAMDOM.RAMDOM,100) FROM DUAL;--产⽣⼀个100以内的随机整数mod(m,n)函数返回m/n的余数select trunc(DBMS_RAMDOM.RANDOM.VALUE(M,N),0);--产⽣⼀个M,N之内的随机整数trunc(m,n)截取数据,m代表要截取的数字,n代表保留位数SELECT DBMS_RAMDOM.STRING('P',20);--P代表可打印的字符,20代表字符串长度2、decodedecode主要⽤于简化SQL,增加可读性,作⽤类似于if..elseselect decode(condition,result1,return1,result2,return2...) from dual可以理解为:if(condition=result1) return1else if(condition=result2) return23、start with... connect by ...这个语法的作⽤是实现类似于树结构的嵌套查询。

⽐如有这么⼀个表结构:单位(id,单位编号dept_no,上级单位编号p_dept_no,单位名dept_name),⼀直某⼀个单位的编号,想要查询出它和它的直接附属单位,以及它的附属单位的附属单位(查询出该单位下的所有单位),可以这么写select * from dept start with dept_no = '123' connect by prior dept_no = p_dept_no类似于⾃连接⼦查询(不相同)select a.* from dept a ,dept b where a.dept_no='123' and a.p_dept_no = b.dept_no不相同是因为start with connect by 的作⽤更强,它能够查询到树根,⽽⼦查询仅仅能查询到直接的⽗节点如果想查询该单位和该单位的直接上级单位以及它的上级单位的上级单位,只需要改变prior的位置select * from dept start with dept_no = '123' connect by dept_no = prior p_dept_no关于prior什么情况下应该写到什么地⽅,需要这么理解:如果是要查叶⼦结点及其⼦节点,prior应该出现在=的左边,否则出现在=右边;4、existsexists作为条件过滤器,与其他where的条件⼀同发⽣作⽤,不会产⽣短路的效应。

oracke数据库笔记

oracke数据库笔记

Orcal数据库SQL:结构化查询语言(Structured Query Language)DDL(数据定义语言Data Definition Language)[自动提交,系统自动commit;]create table table_name;alter table;drop tablecolumn(列、datatype(数据类型)、width(宽度)、constraints(约束)DML(数据操作语言Data Manipulation Language)table datainsert(增加)、delete(删除)、update(修改)rowTCL(事务控制语言Transaction Control Language)Commit rollback savepoint提交回滚保留点确认取消DQL(Data Query Language数据查询语言)Select[选择]Projection[投影]Join[连接](掌握:多表查询)DCL(Data Control Language数据控制语言)grant(授权)revoke(回收权限)例:表格如下:姓名性别年龄专业出生日期(年月日时分秒)【日期型】学号(约束)约束:限制条件,不能重复数据库管理系统:(DBMS Data Base Management System)sqlplus:数据库连接命令bsh中【echo $ORACLE_SID;环境变量(修改值:ORACLE_SID= hiloo ; export ORACLE_SID)】csh中【stenv ORACLE_ID hiiloo ; echo $ORACLE_SID】数据文件、同志文件、控制文件数据库启动后,即创建了一个实例,一个数据库对应一个实例,连接数据库,即连接一个实例(ORACLE_SID)ORCAL_HOME:ORCAL产品的安装目录ORCAL_SID:数据库所对应的实例(instance)用desc(describe的缩写,在sql中不能缩写)显示表结构,包括列名(column name)、非空(not null)、数据类型(data type)SQL> DESC s_dept(表名:s_dept)>not null列必须包含数据>列的数据类型和长度number(p,s)varchar2(s)char(s)date远程登录:telnet 172.16.106.151sqlplus username/password记住如下命令:1、select sysdate;2、alter session set nls_language=american; //修改语言3、alter session set nls_date_format="dd-mon-rr hh24:mi:ss"; //日期格式设置4、在cmd中:¥:set nls_lang=…simplified Chinese_CHINA.ZHS16GBK‟$:set nls_lang=american_americ.utf85、create user Mr_fei identified by dalor; //(创建一个新角色:(用户名:Mr_fei;密码:dalor,如果密码是数字,要加双引号)6、grant connect,resource to Mr_fei;//(授权给新角色)7、conn Mr_fei;(连接到新角色)8、clear scr; //清屏9、col column_name for a10; //【设置某列的长度;col(列)、column_name(列名)、a10(列的新长度,a不能去掉)】10、环境变量更改:nls_lang=‘simplified Chinese_CHINA.ZHS16GBK‟11、将上课写的数据库相关操作保存到指定文件spool d:\\1.sql 新建spool off 保存退出注意:如果命令敲错了,可以输入edit进入Vi修改或输入新命令;保存退出后,输入“”运行查询命令;输入“L”可以查看你输入的命令。

(完整版)ORACLE命令大全

(完整版)ORACLE命令大全

ORACLE命令大全1. 执行一个SQL脚本文件SQL>start file_nameSQL>@ file_name我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,上面的任一命令即可,这类似于dos中的批处理。

2. 对当前的输入进行编辑SQL>edit3. 重新运行上一次运行的sql语句SQL>/4. 将显示的内容输出到指定文件SQL> SPOOL file_name在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。

5. 关闭spool输出SQL> SPOOL OFF只有关闭spool输出,才会在输出文件中看到输出的内容。

6.显示一个表的结构SQL> desc table_name7. COL命令:主要格式化列的显示形式。

该命令有许多选项,具体如下:COL[UMN] [{ column|expr} [ option ...]]Option选项可以是如下的子句:ALI[AS] aliasCLE[AR]FOLD_A[FTER]FOLD_B[EFORE]FOR[MAT] formatHEA[DING] textJUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}LIKE { expr|alias}NEWL[INE]NEW_V[ALUE] variableNOPRI[NT]|PRI[NT]NUL[L] textOLD_V[ALUE] variableON|OFFWRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]1). 改变缺省的列标题COLUMN column_name HEADING column_headingFor example:Sql>select * from dept;DEPTNO DNAME LOC---------- ---------------------------- ---------10 ACCOUNTING NEW YORK sql>col LOC heading locationsql>select * from dept;DEPTNO DNAME location--------- ---------------------------- -----------10 ACCOUNTING NEW YORK2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上:Sql>select * from empDepartment name Salary---------- ---------- ----------10 aaa 11SQL> COLUMN ENAME HEADING ’Employee|Name’Sql>select * from empEmployeeDepartment name Salary---------- ---------- ----------10 aaa 11note: the col heading turn into two lines from one line.3). 改变列的显示长度:FOR[MAT] formatSql>select empno,ename,job from emp;EMPNO ENAME JOB---------- ---------- ---------7369 SMITH CLERK7499 ALLEN SALESMAN7521 WARD SALESMANSql> col ename format a40EMPNOENAME JOB ---------- ---------------------------------------- --------- 7369SMITH CLERK 7499ALLEN SALESMA 7521WARD SALESMAN4). 设置列标题的对齐方式JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}SQL> col ename justify centerSQL> /EMPNO ENAME---------- ---------------------------------------- --------- 7369SMITH CLERK 7499ALLEN SALESMA 7521WARD SALESM 对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边5). 不让一个列显示在屏幕上NOPRI[NT]|PRI[NT]SQL> col job noprintSQL> /EMPNO ENAME---------- ----------------------------------------7369 SMITH7499 ALLEN7521 WARD6). 格式化NUMBER类型列的显示:SQL> COLUMN SAL FORMAT $99,990SQL> /EmployeeDepartment Name Salary Commission---------- ---------- --------- ----------30 ALLEN $1,600 3007). 显示列值时,如果列值为NULL值,用text值代替NULL值COMM NUL[L] textSQL>COL COMM NUL[L] text8). 设置一个列的回绕方式WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]COL1--------------------HOW ARE YOU?SQL>COL COL1 FORMAT A5SQL>COL COL1 WRAPPEDCOL1-----HOW ARE YOU?SQL> COL COL1 WORD_WRAPPEDCOL1-----HOWAREYOU?SQL> COL COL1 WORD_WRAPPEDCOL1-----HOW A9). 显示列的当前的显示属性值SQL> COLUMN column_name10). 将所有列的显示属性设为缺省值SQL> CLEAR COLUMNS8. 屏蔽掉一个列中显示的相同的值BREAK ON break_columnSQL> BREAK ON DEPTNOSQL> SELECT DEPTNO, ENAME, SALFROM EMPWHERE SAL < 2500ORDER BY DEPTNO;DEPTNO ENAME SAL---------- ----------- ---------10 CLARK 2450MILLER 130020 SMITH 800ADAMS 11009. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行BREAK ON break_column SKIP nSQL> BREAK ON DEPTNO SKIP 1SQL> /DEPTNO ENAME SAL---------- ----------- ---------10 CLARK 2450MILLER 130020 SMITH 800ADAMS 110010. 显示对BREAK的设置SQL> BREAK11. 删除6、7的设置SQL> CLEAR BREAKS12. Set 命令:该命令包含许多子命令:SET system_variable valuesystem_variable value 可以是如下的子句之一:APPI[NFO]{ON|OFF|text}ARRAY[SIZE] {15|n}AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}AUTOP[RINT] {ON|OFF}AUTORECOVERY [ON|OFF]AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] BLO[CKTERMINATOR] {.|c}CMDS[EP] {;|c|ON|OFF}COLSEP {_|text}COM[PATIBILITY]{V7|V8|NATIVE}CON[CAT] {.|c|ON|OFF}COPYC[OMMIT] {0|n}COPYTYPECHECK {ON|OFF}DEF[INE] {&|c|ON|OFF}DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}] ECHO {ON|OFF}EDITF[ILE] file_name[.ext]EMB[EDDED] {ON|OFF}ESC[APE] {\|c|ON|OFF}FEED[BACK] {6|n|ON|OFF}FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}FLU[SH] {ON|OFF}HEA[DING] {ON|OFF}HEADS[EP] {||c|ON|OFF}INSTANCE [instance_path|LOCAL]LIN[ESIZE] {80|n}LOBOF[FSET] {n|1}LOGSOURCE [pathname]LONG {80|n}LONGC[HUNKSIZE] {80|n}MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]NEWP[AGE] {1|n|NONE}NULL textNUMF[ORMAT] formatNUM[WIDTH] {10|n}PAGES[IZE] {24|n}PAU[SE] {ON|OFF|text}RECSEP {WR[APPED]|EA[CH]|OFF}RECSEPCHAR {_|c}SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_ WRAPPED]|TRU[NCATED]}]SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}SHOW[MODE] {ON|OFF}SQLBL[ANKLINES] {ON|OFF}SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}SQLCO[NTINUE] {> |text}SQLN[UMBER] {ON|OFF}SQLPRE[FIX] {#|c}SQLP[ROMPT] {SQL>|text}SQLT[ERMINATOR] {;|c|ON|OFF}SUF[FIX] {SQL|text}TAB {ON|OFF}TERM[OUT] {ON|OFF}TI[ME] {ON|OFF}TIMI[NG] {ON|OFF}TRIM[OUT] {ON|OFF}TRIMS[POOL] {ON|OFF}UND[ERLINE] {-|c|ON|OFF}VER[IFY] {ON|OFF}WRA[P] {ON|OFF}1). 设置当前session是否对修改的数据进行自动提交SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句SQL> SET ECHO {ON|OFF}3).是否显示当前sql语句查询或修改的行数SQL> SET FEED[BACK] {6|n|ON|OFF}默认只有结果大于6行时才显示结果的行数。

ORACLE期末复习整理笔记(详细版)

ORACLE期末复习整理笔记(详细版)

Oracle性能优化存储结构SQL> select TABLESPACE_NAME,EXTENT_MANAGEMENT from dba_tablespaces;TABLESPACE_NAME EXTENT_MAN------------------------------ ----------SYSTEM LOCALUNDOTBS1 LOCALSYSAUX LOCALTEMP LOCALUSERS LOCALEXAMPLE LOCAL已选择6行。

减少了数据字典的冲突,因为区的分配不需要记录UET$,FET$当执行事务时(如INSERT大量数据)一旦申请了区,即使执行回滚操作也不需要把区释放回去,因为空间分配和释放没有UNDO生成不需要SMON整理区碎片。

减少空间递归管理,这是本地管理最重要的出发点。

递归SQL 就是我们执行一条SQL,会使oracle在后台执行多条SQL,这个牵扯的多条SQL就是递归SQL本地管理uniform 就是区的大小都是一样的CREATE TABLESPACE "MYTBS2" DA TAFILE'/u01/oracle/oradata/ora10g/mytbs02.dbf' SIZE 104857600LOGGING ONLINE PERMANENT BLOCKSIZE 8192EXTENT MANAGEMENT LOCAL uniform size 64K SEGMENT SPACE MANAGEMENT AUTO; autoallocate 是自动分配的CREATE TABLESPACE "MYTBS" DATAFILE'D:/test/mytbs01.dbf' SIZE 104857600LOGGING ONLINE PERMANENT BLOCKSIZE 8192EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTOSQL> drop tablespace mytbs including contents and datafiles;SQL> create tablespace mytbs datafile '/u01/oracle/oradata/ora10g/mytbs01.dbf' size 100M;create table t2 tablespace mytbs2 as select * from scott.emp;select segment_name,extent_id,file_id,block_id,blocks from dba_extents where owner='SYS' and SEGMENT_NAME='T2';10G以前回收的方法1. 在表空间中移动表alter table TABLE_NAME move tablespace TABLESPACE_NAME;2. 将数据导出删除表再将数据导入10G中提供的新方法alter table TABLE_NAME shrink space [compact|cascate]alter table TABLE_NAME shrink space; 整理碎片并回收空间alter table TABLE_NAME shrink space compact; 只整理碎片不回收空间alter table TABLE_NAME shrink space cascate; 整理碎片回收空间并连同表的级联对象一起整理(比如索引)使用条件自动段管理模式打开行移动使用步骤1. alter table t1 enable ROW MOVEMENT;2. shrink 操作3. alter table t1 disable ROW MOVEMENT;ASSM是自动段管理AUTO SEGMENT SPACE MANAGEMENTMSSM是手工段管理FREELIST(空闲列表)管理FREE extent可以分配给不同的段extent的使用和空闲由数据文件位图或者数据字典UET$和FET$来管理在字典管理及本地管理非自动段管理时将由FREELIST和FREELIST组来管理在本地管理表空间的自动段管理采用位图来管理FREELIST作为一个Oracle存储管理的核心参数其行为方式由Oracle内部控制但对这种机制不了解时,会遇到很多问题当插入一条记录,会插入到哪个块中?是使用新块,还是插入有数据的老块?段是什么时候扩展的,如何扩展的?表中只有一条记录,但是做一次select时,代价为何却是上千个块?带着这些问题来了解FREELISTheader中包含:块属性信息,事务信息,表目录,行目录属性信息:块的类型,块的格式,块地址,SCN,块的序列号,块的标志事务信息:事务相关的基本信息,和ITL(事务槽)表目录:当前表的信息行目录:记录块内存储行的地址信息free space:空闲空间data space:使用空间在生成段的时候,会同时分配初始区(initial extents),初始区的第一个块就格式化为segment header,并被用来记录free list描述信息、extents信息,HWM信息等。

Oracle命令与相关函数的整理

Oracle命令与相关函数的整理

Oracle命令和一些函数的整理oracle联机日志文件恢复SQL*PLUS命令 sql编程手册Oracle9i分析函数set linesize 500set pagesize 100run或 r 或 (符号),都表示把上一个命令重新执行一次.1.alter session set NLS_date_format='YYYY-MM-DD';修改用户的会话来修改日期格式默认的日期格式是:'DD-MON-YY'1.SQL> insert into scott.emp(empno,ename,sal)values(&employeeid,'&name',&employeesal);输入 employeeid 的值: 9001输入 name 的值: jiake02输入 employeesal 的值: 4000原值 2: values(&employeeid,'&name',&employeesal)新值 2: values(9001,'jiake02',4000)Oracle命令和一些函数的整理的过程中这个命令可以多次使用,如按符号 / 然后回车,可以反复的输入值.insert语句中使用子查询;例如1.insert into managers(id,name,salary,hiredate)2.select empno,ename,sa,hiredate3.from emp4.where job='manager';021.Oracle每个SQL语句都是一个事务,当用commit或rollback 来结束事务2.savepoint update_dept;设置保存点;可以用rollback to update_dept;方式,解决分步处理或者有选择的执行;Orcale连接两个字符串用两个||,而SQL用&%代表多个任意字符,_代表一个任意字符IS NULL 是判断是否为空三.lesson 03SQL函数:单行函数:---->General/Character/Number/Date/Conversion1.字符函数在Oracle命令和一些函数的整理中转换函数---->LOWER select lower(ename) from scott.emp;/UPPER select * from scott.emp where ename=upper('king');/INTCAP 首字母大写,其余为小写SQL> select initcap(ename) from scott.emp;INITCAP(ENSmith字符操纵函数------>CONCATselect empno,concat(ename,job) from scott.emp;<=>select ename||job from scott.emp;EMPNO CONCAT(ENAME,JOB)7369 SMITHCLERK7499 ALLENSALESMAN/LENGTH1.select empno,ename,length(ename) from scott.emp;EMPNO ENAME LENGTH(ENAME)文章来源:网络编辑:联动北方技术论坛(如有侵权请及时联络以便删除)。

oracle常用函数汇总

oracle常用函数汇总

oracle常用函数汇总篇一:oracle常用函数总结常用的SQL语句语法(Oracle版)一.数据控制语句(DML)部分1.INSERT(往数据表里插入记录的语句)INSERTINTO表名(字段名1,字段名2,……)VALUES(值1,值2,……);INSERTINTO表名(字段名1,字段名2,……)SELECT字段名1,字段名2,……FROM另外的表名;字符串类型的字段值必须用单引号括起来,例如:’GOODDAY’如果字段值里包含单引号’需要进行字符串转换,我们把它替换成两个单引号''.字符串类型的字段值超过定义的长度会出错,最好在插入前进行长度校验.日期字段的字段值可以用当前数据库的系统时间SYSDATE,精确到秒或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()还有很多种日期格式,可以参看ORACLEDOC.年-月-日小时:分钟:秒的格式YYYY-MM-DDHH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节,如果要插入更长的字符串,请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号,应该先建立一个序列号CREATESEQUENCE序列号的名称(最好是表名+序列号标记)INCREMENTBY1STARTWITH1MA某VALUE99999CYCLENOCACHE;其中最大的值按字段的长度来定,如果定义的自动增长的序列号NUMBER(6),最大值为999999INSERT语句插入这个字段值为:序列号的名称.NE某TVAL2.DELETE(删除数据表里记录的语句)DELETEFROM表名WHERE条件;注意:删除记录并不能释放ORACLE里被占用的数据块表空间.它只把那些被删除的数据块标成unued.如果确实要删除一个大表里的全部记录,可以用TRUNCATE命令,它可以释放占用的数据块表空间TRUNCATETABLE表名;此操作不可回退.3.UPDATE(修改数据表里记录的语句)UPDATE表名SET字段名1=值1,字段名2=值2,……WHERE条件;如果修改的值N没有赋值或定义时,将把原来的记录内容清为NULL,最好在修改前进行非空校验;值N超过定义的长度会出错,最好在插入前进行长度校验..注意事项:A.以上SQL语句对表都加上了行级锁,确认完成后,必须加上事物处理结束的命令COMMIT才能正式生效,否则改变不一定写入数据库里.如果想撤回这些操作,可以用命令ROLLBACK复原.B.在运行INSERT,DELETE和UPDATE语句前最好估算一下可能操作的记录范围,应该把它限定在较小(一万条记录)范围内,.否则ORACLE处理这个事物用到很大的回退段.程序响应慢甚至失去响应.如果记录数上十万以上这些操作,可以把这些SQL语句分段分次完成,其间加上COMMIT确认事物处理.二.数据定义(DDL)部分1.CREATE(创建表,索引,视图,同义词,过程,函数,数据库链接等)ORACLE常用的字段类型有CHAR固定长度的字符串VARCHAR2可变长度的字符串NUMBER(M,N)数字型M是位数总长度,N是小数的长度DATE日期类型创建表时要把较小的不为空的字段放在前面,可能为空的字段放在后面创建表时可以用中文的字段名,但最好还是用英文的字段名创建表时可以给字段加上默认值,例如DEFAULTSYSDATE这样每次插入和修改时,不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如不允许重复UNIQUE,关键字PRIMARYKEY2.ALTER(改变表,索引,视图等)改变表的名称ALTERTABLE表名1TO表名2;在表的后面增加一个字段ALTERTABLE表名ADD字段名字段名描述;修改表里字段的定义描述ALTERTABLE表名MODIFY字段名字段名描述;给表里的字段加上约束条件ALTERTABLE表名ADDCONSTRAINT约束名PRIMARYKEY(字段名);ALTERTABLE表名ADDCONSTRAINT约束名UNIQUE(字段名);把表放在或取出数据库的内存区ALTERTABLE表名CACHE;ALTERTABLE表名NOCACHE;3.DROP(删除表,索引,视图,同义词,过程,函数,数据库链接等)删除表和它所有的约束条件DROPTABLE表名CASCADECONSTRAINTS;4.TRUNCATE(清空表里的所有记录,保留表的结构)TRUNCATE表名;三.查询语句(SELECT)部分SELECT字段名1,字段名2,……FROM表名1,[表名2,……]WHERE条件;字段名可以带入函数例如:COUNT(某),MIN(字段名),MA某(字段名),AVG(字段名),DISTINCT(字段名),TO_CHAR(DATE字段名,'YYYY-MM-DDHH24:MI:SS')NVL(E某PR1,E某PR2)函数解释:IFE某PR1=NULLRETURNE某PR2ELSERETURNE某PR1DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函数解释:IFAA=V1THENRETURNR1IFAA=V2THENRETURNR2..…ELSERETURNNULLLPAD(char1,n,char2)函数解释:字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位字段名之间可以进行算术运算例如:(字段名1某字段名1)/3查询语句可以嵌套例如:SELECT……FROM(SELECT……FROM表名1,[表名2,……]WHERE条件)WHERE条件2;两个查询语句的结果可以做集合操作例如:并集UNION(去掉重复记录),并集UNIONALL(不去掉重复记录),差集MINUS,交集INTERSECT分组查询SELECT字段名1,字段名2,……FROM表名1,[表名2,……]GROUPBY字段名1[HAVING条件];两个以上表之间的连接查询SELECT字段名1,字段名2,……FROM表名1,[表名2,……]WHERE表名1.字段名=表名2.字段名[AND……];SELECT字段名1,字段名2,……FROM表名1,[表名2,……]WHERE表名1.字段名=表名2.字段名(+)[AND……];有(+)号的字段位置自动补空值查询结果集的排序操作,默认的排序是升序ASC,降序是DESCSELECT字段名1,字段名2,……FROM表名1,[表名2,……]ORDERBY字段名1,字段名2DESC;字符串模糊比较的方法INSTR(字段名,‘字符串’)>0字段名LIKE‘字符串%’[‘%字符串%’]每个表都有一个隐含的字段ROWID,它标记着记录的唯一性.四.ORACLE里常用的数据对象(SCHEMA)1.索引(INDE某)CREATEINDE某索引名ON表名(字段1,[字段2,……]);ALTERINDE某索引名REBUILD;一个表的索引最好不要超过三个(特殊的大表除外),最好用单字段索引,结合SQL语句的分析执行情况,也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578单字节ORACLE8.0.6字符串可以索引的最大长度为758单字节ORACLEDOC上说字符串最大可以建索引的长度约是:数据块的大小(db_block_ize)某40%2.视图(VIEW)CREATEVIEW视图名ASSELECT….FROM…..;ALTERVIEW视图名COMPILE;视图仅是一个SQL查询语句,它可以把表之间复杂的关系简洁化.3.同义词(SYNONMY)CREATESYNONYM同义词名FOR表名;4.数据库链接(DATABASELINK)CREATEDATABASELINK数据库链接名CONNECTTO用户名IDENTIFIEDBY 密码USING‘数据库连接字符串’;数据库连接字符串可以用NET8EASYCONFIG或者直接修改TNSNAMES.ORA里定义.数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出SELECT某FROMGLOBAL_NAME;查询远端数据库里的表1.ASCII返回与指定的字符对应的十进制数;SQL>electacii(A)A,acii(a)a,acii(0)zero,acii()pacefromAAZEROSPACE------------------------------------659748322.CHR给出整数,返回对应的字符;SQL>electchr(54740)zhao,chr(65)chr65fromdual;ZHC---赵A3.CONCAT连接两个字符串;----------------010-********转234.INITCAP返回字符串并将字符串的第一个字母变为大写;SQL>electinitcap(mith)uppfromdual;UPP-----Smith5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;C1被搜索的字符串C2希望搜索的字符串I搜索的开始位置,默认为1J出现的位置,默认为1SQL>electintr(oracletraning,ra,1,2)intringfromdual;dual;INSTRING---------96.LENGTH返回字符串的长度;SQL>electname,length(name),addr,length(addr),al,length(to_ch ar(al))fromgao.nchar_tt;NAMELENGTH(NAME)ADDRLENGTH(ADDR)SALLENGT H(TO_CHAR(SAL))---------------------------------------------------------------------------高乾竞3北京市海锭区69999.9977.LOWER返回字符串,并将所有的字符小写SQL>electlower(AaBbCcDd)AaBbCcDdfromdual;AABBCCDD--------aabbccdd8.UPPER返回字符串,并将所有的字符大写SQL>electupper(AaBbCcDd)upperfromdual;UPPER--------AABBCCDD9.RPAD和LPAD(粘贴字符)RPAD在列的右边粘贴字符LPAD在列的左边粘贴字符SQL>electlpad(rpad(gao,10,某),17,某)fromdual; LPAD(RPAD(GAO,1-----------------某某某某某某某gao某某某某某某某不够字符则用某来填满10.LTRIM和RTRIMLTRIM删除左边出现的字符串RTRIM删除右边出现的字符串SQL>electltrim(rtrim(gaoqianjing,),)fromLTRIM(RTRIM(-------------gaoqianjing11.SUBSTR(tring,tart,count)取子字符串,从tart开始,取count个SQL>electubtr(130********,3,8)fromdual;SUBSTR(dual;篇二:Oracle+数据库的常用函数列表一览SQL中的单行函数SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。

Oracle数据库基本常用命令汇总

Oracle数据库基本常用命令汇总

Oracle数据库基本常⽤命令汇总SELECT name, created, log_mode, open_mode FROM v$database;SELECT host_name, instance_name, version FROM v$instance;select * from v$version;select * from v$controlfile;SELECT group#, members, bytes, status, archived FROM v$log;select GROUP#,MEMBER from v$logfile;select * from v$logfile;archive log listselect tablespace_name, block_size, status, contents, logging from dba_tablespaces;select tablespace_name, status from dba_tablespaces;SELECT file_id, file_name, tablespace_name, status, bytes from dba_data_files;select file_name, tablespace_name from dba_data_files;select username,created from dba_users;select username, DEFAULT_TABLESPACE from dba_users;复制代码代码如下:select * from v$archivedselect * from v$archived_logselect * from v$backupselect * from v$databaseselect * from v$datafileselect * from v$logselect * from v$logfileselect * from v$loghistselect * from v$tablespaceselect * from v$tempfileCONTROL_FILE_RECORD_KEEP_TIME参数来控制,该参数的默认值为7天,即可重⽤的部份的内容保留7天,⼀周之后这部份的内容可能被覆盖。

oracle语句及语法大全分析

oracle语句及语法大全分析

第一章Oracle命令a)系统管理员连接 conn */* as sysdbab)查询当前用户 show userc)创建新用户 create user 用户名 identified by 密码(密码不能以数字开头)。

例如create user abc identified bycbad)用户登录 conn 用户名/密码。

例如conn abc/cbae)用户授权 grant 权限 to 用户。

例如grant connect,resource to abc;grant select on scott.emp to abcf)收回权限 revoke 权限 from 用户。

例如revoke resource from abc;revoke select on scott.emp from abcg)修改密码 alter user用户名 identified by 新密码。

例如alter user abc identified by cba12h)锁定用户 alter user用户名 account lock。

例如alter user scott account locki)解锁用户 alter user用户名 account unlock。

例如alter user scott account unlockj)创建表空间 create tablespace 表空间名 datafile 表空间文件路径 size 初始大小 autoextend on(/off)。

例如create tablespace svse ‘c:\1.dbf’ size 10m autoextend onk)为某个用户指定表空间 alter user 用户名 default tablespace 表空间名l)修改表空间的文件大小:alter database datafile 路径(路径要加’) resize 新大小。

例如alter database datafile ‘c:\1.dbf’ resize 20mm)向表空间添加文件:alter tablespace 表空间名 add datafile 路径 size 初始大小。

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

一、oracle 常用sql plus 命令(1)conn[ect] 用户名/密码@网络[as sysdba /sysoper](2)一般情况下使用普通用户登录,除非需要更高权限时,在切换高级用户;(3)disc[onnect] 断开连接,又不退出当前窗口;(4)quit/exit 完全退出;(5)show user 显示当前用户;(6)管理员修改用户密码:alter user xxxx identified by yyyy;(7)Passw[ord]pass 用户名;给自己修改密码,不需要带用户名;给别的用户修改,需要带用户名;创建临时表空间create temporary tablespaceuser_temptempfile 'd:\user_temp.dbf'size 50mautoextend onnext 50m maxsize 1024mextent management local;创建表空间createtablespaceuser_tsdatafile 'd:\user_ts.dbf'size 50mautoextend onnext 50m maxsize 1024mextent management local;创建用户create user test38 identified by test38default tablespaceuser_tstemporary tablespaceuser_tempquota 5m on user_ts;给用户赋予权力grantdba to test38;给scott用户解锁alter user scott account unlock;用system 用户给scott修改密码Alter user scott identified by tiger;不常用的命令:linesize一行能显示多少个字符就换行了默认就只有80字符,所以会出现一个记录一行没有显示完全就换行了Set linesize 120pagesize显示多少个记录就从新开始如图:前后差别Set pagesize 100二、oracle 用户管理1. 创建用户(必须是具有DBA权限的才行)create user 名字identified by 密码(密码不能以数字开始)defaulttablespace xxxx;temporary tablespace xxx2;quota x mon xxxx;如果出现这样的情况,直接百度或者google一下。

2.给用户分配权限grant create session to 用户名;3.管理的用户的机制4.综合案例方案(schema)(当创建一个用户的时候,只要这个用户创建了任何的数据对象(如表,索引,触发器等),那么DBMS就会创建一个与该用户名一样的一个方案。

)赋权grant select/update/insert/all on emp to 用户名;ps:如果想看一个用户有哪些数据对象,可以通过pl/sql development 查看。

例子:小红查询scott的emp表select * from scott.emp;表空间参考:/view/2973562.htmOracle表空间之基本概念ORACLE数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。

一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。

表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。

每个ORACLE数据库均有SYSTEM表空间,这是数据库创建时自动创建的。

SYSTEM表空间必须总要保持联机,因为其包含着数据库运行所要求的基本信息(关于整个数据库的数据字典、联机求助机制、所有回退段、临时段和自举段、所有的用户数据库实体、其它ORACLE软件产品要求的表)。

一个小型应用的ORACLE数据库通常仅包括SYSTEM表空间,然而一个稍大型应用的ORACLE数据库采用多个表空间会对数据库的使用带来更大的方便。

一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。

用户和表空间没有隶属关系个人阶段总结数据库实例、表空间(逻辑结构)、用户、方案、数据对象(表,过程,包等)的关系一个实例下可以有多个表空间。

默认是有一个system表空间。

一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。

用户和表空间没有隶属关系。

数据库建立一个用户,就建立了有且只有一个与该用户名字一样的方案来管理该用户建立的各种数据对象。

如有两个表空间,一个是默认的system表空间,一个是新建的user_tasp表空间。

用户(wang)在system建立一个表t1,在user_tasp建立一个表t2,但是只有一个方案(wang)来管理这两个表,虽然表分布在不同的表空间上。

也说明方案和表空间没有隶属关系,就像用户和表空间没有隶属关系一样。

数据对象的操作一般是通过方案来实现操作的。

如:Select * from scott.emp 这是完整的写法。

scott是方案名--个人实验--建立临时表空间create temporary tablespace user_temptempfile'f:\data\user_temp.dbf'size50mautoextend onnext10m maxsize100mextent management local--建立表空间create tablespace user_taspdatafile'f:\data\user_tasp.dbf'size50mautoextend onnext10m maxsize100mextent management local--创建用户create user wang identified by wang default tablespace system;grant connect,resource to wang;alter user wang quota10m on user_tasp; //在表空间上给用户分配空间就能让用户在该表空间建立数据对象。

注意不要指定分配空间在临时表空间上,不然会报错。

--在默认表空间上建表create table t_test1(id number,name varchar2(20))【tablespace system】;--在user_tasp 建表create table t_test2(id number,name varchar2(20))tablespace user_tasp;Schema(方案)当一个用户被创建之后,只要它创建任何一个数据对象,那DBMS就会创建一个和它名字一样的方案与该用户对应。

Ps:如果想看某个用户有什么数据对象,用pl/sql development 软件。

Schema 的实际应用:xioanghong访问scott的emp表1.连接scottconn soctt/tiger2.给xiaohong赋权限grant select/update/delete/all on emp to xiaohong3.select * from scott.emp;参考:/tpadvjynoebbird/item/428a8fee7371253b86d9de271、with admin option 用于系统权限授权,with grant option 用于对象授权。

2、给一个用户授予系统权限带上with admin option 时,此用户可把此系统权限授予其他用户或角色,但收回这个用户的系统权限时,这个用户已经授予其他用户或角色的此系统权限不会因传播无效,如授予A系统权限create session with admin option,然后A又把create session权限授予B,但管理员收回A的create session权限时,B依然拥有create session的权限,但管理员可以显式收回B create session的权限,即直接revoke create session from B.而with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效,如:grant select on 表名 to A with grant option;,A用户把此权限授予B,但管理员收回A的权限时,B的权限也会失效,但管理员不可以直接收回B的SELECT ON TABLE 权限。

相同点:- 两个都可以既可以赋予user 权限时使用,也可以在赋予role 时用不同点:- with admin option 只能在赋予system privilege 的时使用- with grant option 只能在赋予object privilege 的时使用- 撤消带有with admin option 的system privileges 时,连带的权限将保留撤消带有with grant option 的object privileges 时,连带的权限将不被保留用户口令管理使用profile进行用户口令管理一个用户连续3次密码输入错误,那该账户锁定1.创建profile文件create profile文件名limitfailed_login_attempts次数password_lock_time天数;2.把该文件(规则)分配给某个用户alter user用户名profile profile文件名;3.终止口令一个账号的密码最多能用几天的问题。

Pl: 一个密码的使用时间为10天,宽限时间是2天create profile文件名limit password_life_time 10 password_grace_tim e 2;4.删除profiledrop profile文件名;windows下lsnrctl startoradim–startup–sidorcl; unix/linux环境下(略)Oracle 的登陆认证Compmgmt.msc 进入计算机管理找回管理员的密码1.搜索PWD数据库实例名.ora2.删除该文件,最好备份一份。

3.生成新的密码文件,在dos下输入命令。

orapwd file=PWD数据库实例名.ora的具体路径password=新密码entries = 允许多少个人进入。

相关文档
最新文档