5.updatebiaomingset(lie1,lie2,lie3)=(selectl1,l2,l3frombiaowhere……)where……
二,分页显示
1.(select*fromemp);
2.显示rownum[oracle分配的]
3.selecta.*,rownumrnfrom(select*fromemp)a;
4.例子:
(若指定查询,则只需修改最里面的视图)select*from(selecta.*,rownumrnfrom(select*fromemp)awhererownum<=10)wherern>6;
三,根据查询结果创建新表
1.createtablemytable(id,ename,sal)asselectempno,ename,salfromemp;
2.insertintotest1(name,job)selectename,jobfromemp;
四,查询结果的合并(速度快)
1.union(除去一样的行),unionall(并),intersect(交),minus(差)
五,创建数据库
1.配置工具——》databaseconfiguraassistancedbca【数据库配置助手】
六,java链接oracle数据库
packagecom.test1;
importjava.sql.*;
publicclassconnOracle{
/**
jdbc-odbc
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connectionct=DriverManager.getConnection("jdbc:
odbc:
GToracle","gaotuan","gaotuan");
Statementsm=ct.createStatement();
ResultSetrs=sm.executeQuery("select*fromtest");
while(rs.next())
{
System.out.println("姓名:
"+rs.getString
(1));
}
rs.close();
sm.close();
ct.close();
}catch(Exceptione){
//TODO:
handleexception
e.printStackTrace();
}
}
}
总结:
为了保存事务的正确性:
1.可以建立保存点(但是不能提交)
2.建立一个新的用户,并设置为只读事务。
提高速度:
1.将索引单独放在一个表空间。
总结:
为了保存事务的正确性:
1.可以建立保存点(但是不能提交)
2.建立一个新的用户,并设置为只读事务。
提高速度:
2.1.将索引单独放在一个表空间。
总结:
为了保存事务的正确性:
1.可以建立保存点(但是不能提交)
2.建立一个新的用户,并设置为只读事务。
提高速度:
1.将索引单独放在一个表空间。
1.sql函数
注:
dual表可以用来测试
一。
字符函数:
1.lower(char)(字符串转化为小写)
2.upper(char)(字符串转化为大写)
3.length(char)(返回字符串的长度)
4.substr(char,m,n)(去字符串的子串)(从第m开始取n个字符)
selectupper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1))fromemp;
5.replace(ename,string1,string2)(ename要替换的字段,将String1替换为string2)(区分大小写)
6.instr()(取字串在字符串中的位置)
二,数学函数
1.round(ename,n)(四舍五入)
2.trunc(ename,1)(截取)
3.mod(m,n)
4.floor(m)(不大于的最大整数)
5.ceil(m)
6.abs(n)绝对值
7.log(m,n)对数值
8.power(m,n)m的n次幂
三,日期函数
1.默认日期:
'dd-mm-yy'“12-7月-1988”
2.sysdate返回系统时间
3.add_month(d,n)在d年加上n个月;
4.last_day(y)返回指定日期所在月份的最后一天
selecttrunc(sysdate-hiredate)“入职天数”fromemp;
四,转化函数(oracle隐含转换):
1.to_char(hiredate,'yyyy-mm-ddhh24:
mi:
ss')
2.to_char(sal,'L99999.99')显示本地货币单位
3.to_date()to_date('1988-12-22','yyyy-mm-dd')
五,其他函数:
1.sys_context('userenv','db_name')
terminal,lanuage,db_name,nls-date_format,session_user,current_scheam,host
例子:
selectsys_context('userenv','language')fromdual;
2.sys与system的区别
一,sys与system的区别
1.sys用户必须以assysdba或assysoper形式登陆,不能以normal方式登陆
2.system如果以正常登陆,就是一个普通的dba,
如果以assysdba登陆,就是作为sys用户登陆。
3.
4.
3.备份与恢复(17讲)
注意:
导入导出必须在安装oracle的bin目录下运行exp使用
一,逻辑备份恢复与物理备份恢复
1.逻辑备份与恢复:
只能在open下进行
2.物理备份与恢复:
可以在open下进行,也可以在DB关闭情况下进行。
二,导出
1.导出表,导出方案,导出数据库;
2.导出使用exp命令完成常用参数:
userid,tables,owner,full,inctype,rows,file
3.导出表:
expuserid=scott/G110@oraltables=(emp)file=D:
\c.dmp;
(导出表结构)expuserid=scott/G110@oraltables=(emp)file=D:
\c.dmprows=n
(直接方式导出表结构)expuserid=scott/G110@oraltables=(emp)file=D:
\c.dmpdirect=y
4.导出方案:
(导出他人方案)expuserid=scott/G110@oralowner=(system,scott)file=D:
\c.dmp;
(导出自己方案)expuserid=scott/G110@oralowner=scottfile=D:
\c.dmp;
5.导出数据库:
expuserid=scott/G110@oralfull=yinctype=completefile=D:
\c.dmp;
三,导入:
1.导入表:
(导入表)impuserid=scott/G110@orcltables=empfile=D:
\a.dmp
(导入表结构)impuserid=scott/G110@orcltables=empfile=D:
\a.dmprows=n;
(导入数据)impuserid=scott/G110@orcltables=empfile=D:
\a.dmpignore=y;
2.导入方案:
3.导入数据库:
impuserid=scott/G110@oraclefile=D:
\a.dmpfull=y;
4.数据字典(18讲)
一,
1.数据字典:
基表(静态数据),动态视图(动态的数据)
2.数据字典视图:
user_xxx,all_xxx,dba_xxx
user_tables,all_tables,dba_tables(dba权限)
二,用户名,权限,角色
1.selectusername,passwordfromdba_users;(查看数据库的用户)
2.descdba_role_privs;
select*fromdba_role_privswhereGRANTEE='gaotuan'
3.(查询oracle所有的所有角色)select*fromdba_roles;
4.(查询oracle所有的所有系统权限)select*fromsystem_privilege_map;
5.(查询oracle所有的所有对象权限)selectdistinctprivilegefromdba_tab_privs;
6.(查询一个角色所有的权限:
)(可以在工具视图中查询)
select*fromrole_sys_privswhererole='CONNECT'
例子:
select*fromdba_role_privswheregrantee='GAOTUAN';
7.
表空间
一,移动数据文件:
1.确定数据文件所在的表空间:
selecttablespace_namefromdba_data_fileswherefile_name='D:
\sp001.dbf'
2.使表空间脱机:
altertablespacesp001offline;
3.使用命令移动数据文件到指定的目标位置:
hostmoveD:
\sp001.dbfC:
\sp001.dbf
4.执行altertablespace命令(对数据库进行逻辑修改):
altertablespacesp001renamedatafile'D:
\sp001dbf'to'C:
\sp001.dbfm'
5.使表空间联机:
altertablespacesp001online;
二,显示表空间信息:
selecttablespace_namefromdba_tablespaces;
三,显示表空间所包含的数据文件:
selectfile_name,bytesfromdba_data_fileswheretablespace_name='SYSTEM';
约束
1.显示约束信息:
select constraint_name,constraint_type,status,validated
fromuser_constraintswheretable_name='表名'
2.显示约束信息:
selectcolumn_name,positionfromuser_cons_columnswhereconstraint_name=''
索引
1.显示表的所有索引信息:
select index_name,index_typefromuser_indexswheretable_name='表名'
2.显示索引所对应的列的信息:
select table_name,column_namefromuser_ind_columnswhereindex_name='';
权限,角色
一,
系统权限:
不是级联回收(withadminoption,能用于角色)
对象权限:
级联回收(withgrantoption,不能用于角色)
1.查询系统权限:
select*fromsystem_privilege_maporderbyname;
2.创建自定义角色:
createrole角色名notidentified;
createrole角色名identifiedby密码(将来更改时提供密码);
3.角色赋权限:
grant……to角色名
4.删除角色:
droprole角色名
二,
1.显示所有角色
select*fromdba_roles;
2.显示角色所具有的系统权限
selectprivilege,admin_optionfromrole_sys_privswhererole='角色名'
3.显示角色所具有的对象权限
selectprivilege,admin_optionfromdba_tab_privswhererole='角色名'
4.显示用户具有的角色,及默认角色
selectgranted_role,default_rolefromdba_role_privswheregrantee='角色名'
setserveroutputon;
一,变量:
1.标量
%type(返回数据一样的类型)
%rowtype(pl/sql提供,返回一个记录类型,其数据类型和数据库的表的数据结构一致)
例子:
declare
recac01%rowtype;
begin
select*intorecfromac01whereaac001='41022300024654';
dbms_output.put_line(rec.aac003);
end;
2.复合变量(composite)
pl/sql记录(高级语言的结构体)
declare
typeemp_record_typeisrecord(
nameemp.ename%type,
salaryemp.sal%type);
emp_recordemp_record_type;
begin
selectename,salintoemp_recordfromemp;
setserveroutputon;
dbms_output.put_line(emp_record.name);
end;
pl/sql表(高级语言的数组)
declare
typeename_table_typeistab