racle学习笔记总计Word下载.docx
《racle学习笔记总计Word下载.docx》由会员分享,可在线阅读,更多相关《racle学习笔记总计Word下载.docx(25页珍藏版)》请在冰点文库上搜索。
![racle学习笔记总计Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/28/46923f80-7627-439e-9070-69a2279c8ee8/46923f80-7627-439e-9070-69a2279c8ee81.gif)
2.password名
3.dropuser名(如果用户有表,则加参数cascade)
培训第二天(下午)(自己动手遇到无法登陆oracle)
(gaotuan:
gaotuan、system:
G62980778cxz)
一,用户授权
(对象权限(selectinsertupdatedeleteallcreateindex),系统权限)
1.grantconnectto名(登录)
2.grantresourceto名(创建数据库对象)
3.sqlplus"
/assysdba"
(sys登陆)
4.alteruserscottaccountunlock;
(解锁)
二,角色
connect,dba
对象权限:
withgrantoption
系统权限:
withadminoption
收回父权限时下边的用户也没有相应得权限
三,表空间
一,表空间作用:
1.控制数据库占用的磁盘空间。
2.可以将不同的数据类型放在不同的位置(提高io,有利于备份与恢复)。
二,建立表空间:
1.Createtablespace"
bkjm001"
datafile'
C:
\filenam0e.bdf'
size1M;
2.(使用表空间)createtabletesttablespace(ageint)tablespace"
;
三,改变表空间状态:
1.(表空间脱机)altertablespace"
名"
offline;
2.(表空间联机)altertablespace"
online;
3.(只读表空间)altertablespace"
readonly;
四,删除表空间:
1.droptablespace"
includingcontentsanddatafiles;
五,拓展表空间:
第三天:
(上午)(密码不能以数字开头)
注:
1.select不区分大小写fromuserwherename='
区分大小写'
2.在计算时如果一个值为null,则运算结果为空nvl(列名,0)(为null则用0替换)
一,常用查询语句
1.查询一个用户所拥有的表
selecttable_namefromuser_tables;
2.终止口令:
createprofile名limitpassword_limit_time(密码使用的时间)10password_grace_time(宽限时间)2password_reuse_time(10天内不让使用原密码)10;
alteruser名profile名;
3.dropprofile名{cascade}
4.setlinesize10(设置显示行的宽度,默认是80个字符)
5.setpagesize5(设置显示行的数目,默认是14个字符);
6.settimingon;
(显示耗时)
7.查询数据库名select*fromglobal_name;
二,创建表(规范)
1.表名,列名
必须以字母开头,不能超过30个字符,不能使用关键字,保留字,使用A-Z,a-z,0-9,$,#等
2、数据类型:
a,number(10的38次方),number(5,2),number(5)
b,char(10)定长(最大2000字符)(查询速度快)
c,varchar2(20)变长(最大4000字符)(节省空间)
d,clob(字符型大对象最大4G)
e,时间:
date(年月日时分秒)
timestamp(date拓展)
f,blob(存放图片、声音4G)
3.表修改
a,altertable表名add(classidnumber
(2));
b,altertable表名modify(lmchar(20));
c,altertable表名dropcolumnlm;
d,rename名1to名2;
e,droptable表名;
f,插入数据insertintobmvalues();
H,oracle中默认日期格式:
'
dd-mm月-yy'
修改日期格式:
altersessionsetnls_data_format='
yyyy-mm-dd'
to_date('
1988-12-22'
'
)
4.删除数据恢复(在commit提交之前可以使用保存点)(commit提交之后事务结束,删除保存点,释放锁)
savepointss;
delete*from表(delect删除时写日志)
rollbacktoss;
(rollback所有的都撤销)
(truncatetablestudent)(删除表中的记录,表结构还在,不写日志,无法找回,但是速度快)
5.插入数据(测试)
insertintobiao1(lm1,lm2)select*frombiao1
(下午)
注意:
1.from中使用子查询,则子查询被作为一个视图对待(内嵌视图)
2.from子句使用查询时必须有列名
3.表取别名不用as,列时可以使用as
一,经典查询
1.selecta1.ename,a1.sal,a2.gradefromempa1,salgradea2wherea1.salbetweena2.losalanda2.hisal;
2.select*fromempwheresal<
200andename='
(数据库执行时从右向左执行,所以应先将一次能筛选多的条件放在最右边)
3.单行子查询,
4.多行子查询
(返回单列多行)(in)
(返回多列单行)
select*fromempwhere(deptno,job)=(selectdeptno,jobfromemp);
或者用select*fromempa,(selectdeptno,jobfromemp)asbwhere……
例子:
select*fromempa,(selectavg(sal)avgg,deptnofromempgroupbydeptno)bwherea.deptno=b.deptnoandb.avgg<
a.sal;
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"
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.将索引单独放在一个表空间。
2.1.将索引单独放在一个表空间。
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('
五,其他函数:
1.sys_context('
userenv'
db_name'
terminal,lanuage,db_name,nls-date_format,session_user,current_scheam,host
例子:
selectsys_context('
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:
(导出自己方案)expuserid=scott/G110@oralowner=scottfile=D:
5.导出数据库:
expuserid=scott/G110@oralfull=yinctype=completefile=D:
三,导入:
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'
\sp001dbf'
to'
\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表(高级语言的数组)
typeename_table_typeistab