oracle基本操作,自己亲手做过了
第一部分:
--创建表空间(其中TWC.DBF不需要我们手工创建)
-----创建了一个大小为20M的表空间,自动增长以5M的大小,可以无限制增加下去,------只要你的磁盘够大
create tablespace tian datafile
'D:\Oracle1\TWC.DBF' size 20M autoextend on next 5M maxsize unlimited
logging online permanent extent management local autoallocate
blocksize 8K
segment space management manual
flashback on;
--修改表空间
alter tablespace tian1 add datafile 'F:\oraData\tablesecond04\tablesecond_DATA2.DBF' size 10000M;
alter database datafile 'F:\oraData\tablesecond04\tablesecond_DATA2.DBF' autoextend on next 100m maxsize unlimited;
---创建用户(其中表空间为 tian)
create user twc identified by twc
default tablespace tian
temporary tablespace temp
profile default
account unlock;
--创建用户的语句的说明
create user 用户名
identified by 密码(不要加引号)
default tablespace 默认表空间名 quota 5M on 默认表空间名
[temporary tablespace 临时表空间名]
[profile 配置文件名] //配置文件
[default role 角色名] //默认角色
[password expire] //密码失效
[account lock] //账号锁定
修改用户
alter user 用户名 identified by 密码 quota 10M on 表空间名
alter user 用户名 account lock/unlock
删除用户
drop user 用户名 [cascade].如果要删除的用户中有模式对象,必须使用cascade.
--用户的角色及其授权
-- Roles for tablesecond
grant DBA TO twc with admin option;
grant aq_administrator_role to twc with admin option;
grant mgmt_user to twc;
alter user twc default role all;
--建另外一个用户
CREATE USER twc1
IDENTIFIED BY twc1
DEFAULT TABLESPACE tian
TEMPORARY TABLESPACE TEMP
PROFILE DEFAULT
ACCOUNT UNLOCK;
--角色和授权
-- Roles for tablesecond
GRANT DBA TO twc1 WITH ADMIN OPTION;
GRANT AQ_ADMINISTRATOR_ROLE TO twc1 WITH ADMIN OPTION;
GRANT MGMT_USER TO twc1;
ALTER USER twc1 DEFAULT ROLE ALL;
-- 1 System Privilege for tablesecond
GRANT UNLIMITED TABLESPACE TO twc1 WITH ADMIN OPTION;
-- 1 Tablespace Quota for tablesecond
ALTER USER twc1 QUOTA UNLIMITED ON tian;
-- 创建表
create table users1(
userid int primary key ,
username varchar2(30) NOT NULL,
pwd varchar2(30) NOT NULL
);
--如果创建上面的表,那么系统将为你生成,以下此表的具体的代码:
-- Create table
create table USERS1
(
USERID INTEGER not null,
USERNAME VARCHAR2(30) not null,
PWD VARCHAR2(30) not null
)
tablespace TIAN
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table USERS1
add primary key (USERID)
using index
tablespace TIAN
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
create sequence userid;--创建序列
--另外一种创建序列的方式
--创建一个从1开始,默认最大值,每次增长1的序列,要求NOCYCLE,缓存中有30个预先分配好的序列号。
CREATE SEQUENCE MYSEQ
MINVALUE 1
START WITH 1
NOMAXVALUE
INCREMENT BY 1
NOCYCLE
CACHE 30
CREATE SEQUENCE userid --创建序列,名为:myseq
START WITH 1 --从1开始
INCREMENT BY 1 --每次递增 1
ORDER --排序
NOCYCLE ; --避免重新开始,关闭循环
--删除序列
drop sequence userid;
--以下是表操作
insert into users1 values(userid.nextval,'xiaoliiu','666666');---插入
RENAME users1 TO users;--修改表名
COMMENT ON TABLE users IS '存放雇员信息';--表名的注释
COMMENT ON TABLE users.username IS '描述雇员姓名';--表中属性的注释
select * from users1 --查询表的所有属性
delete from users1 where userid=1;--删除表中的值
ALTER TABLE users1 ADD birhtday number(4);--增加表属性
ALTER TABLE users1 ADD pass NUMBER(4);
ALTER TABLE users1 DROP COLUMN username;--删除表属性
ALTER TABLE users1 MODIFY(col1 VARHCAR2(50), col2 VARCHAR2(100));--修改表属性 col1改为col2
drop table users1;--删除表结构
delete from users1 where username='二';--删除
SELECT max(userid) FROM users1;-- 查询学号最大的
SELECT min(userid) FROM users1;-- 查询学号最小的
update users set username='tianweichang', pwd='888888' where userid=2;
create sequence userid1;
insert into users values(userid1.nextval,'wangwu','55555');---插入
--创建视图
CREATE OR REPLACE VIEW usersView
AS
SELECT u.USERID,u.username
FROM users u JOIN users1 ON u.userid=users1.userid
WITH READ ONLY
select * from usersView --查询视图
--创建索引
CREATE UNIQUE INDEX UQ_ENAME_IDX ON users1(username);
远程导入
imp 用户名/密码@IP地址:1521/orcl file=d:\aa.dmp; 导入aa.dmp文件
第二部分
l 客户端
1. Sql Plus(客户端),命令行直接输入:sqlplus,然后按提示输入用户名,密码。在sqlPlus客户端输入命令ed,可以出现文本编辑器。
2. 从开始程序运行:sqlplus,是图形版的sqlplus.
3. http://localhost:5560/isqlplus
4.一些第三方客户端:Toad和PlSql Developer(必须在本机安装了orcl)
l 解锁用户
1. 在cmd窗口输入sqlplus sys/bjsxt as sysdba (sys是超级管理员用户名,/后面是其密码)
2. alter user scott account unlock;(解锁用户scott)
l 查看表结构
desc 表名
l select语句
n 计算数据
计算数据可以用空表:比如:.select 2*3 from dual
任何含有空值的数学表达式,最后的计算结果都是空值。
n 查看系统时间
select sysdate from dual; //查看当前的系统时间
n 查询结果连接字符串
select ename || "abcd" 如果连接字符串中含有单引号,用两个单引号代替一个单引号。
select ename||sal from emp; //(将sal的查询结果转化为字符串,与ename连接到一起,相当于Java中的字符串连接)
l distinct
8、select distinct deptno from emp; //消除deptno字段重复的值
9、select distinct deptno , job from emp; //将与这两个字段组合重复的值去掉
l where
n 大于过滤判断
select * from emp where empno > 10; //大于 过滤判断
n 不等于过滤判断
select * from emp where empno <> 10 //不等于 过滤判断
n 字符串比较
select * from emp where ename > 'cba'; //字符串比较,实际上比较的是每个字符的AscII值,与在Java中字符串的比较是一样的
n 指定某个范围between and
select ename, sal from emp where sal between 800 and 1500; //(between and过滤,包含800 1500)
n 选择字段的值是否为null
select ename, sal, comm from emp where comm is null; //(选择comm字段为null的数据)
select ename, sal, comm from emp where comm is not null; //(选择comm字段不为null的数据)
n in 表范围
select ename, sal, comm from emp where sal in (800, 1500,2000); //(in 表范围)
select ename, sal, comm from emp where sal not in (800, 1500,2000); //(可以对in指定的条件进行取反)
n 比较日期
select ename, sal, hiredate from emp where hiredate > '02-2月-1981'; //(只能按照规定的格式写)
n 模糊查询
select ename from emp where ename like '%ALL%'; //(模糊查询)
select ename from emp where ename like '_A%'; //(取第二个字母是A的所有字段)
select ename from emp where ename like '%/%%'; //(用转义字符/查询字段中本身就带%字段的)
select ename from emp where ename like '%$%%' escape '$'; //(指定$为转义字符查询字段中本身就带%字段的)
l 排序
select * from dept where deptno <>10 order by deptno asc; //(升序排列)
select ename, sal, deptno from emp order by deptno asc, ename desc; //(按照多个字段排序 首先按照deptno升序排列,当detpno相同时,再按照ename的降序排列)
第三部分:
Oracle数据导入导出imp/exp ,切记是在cmd命令直接开始,并不是sqlplus,因为之前自己老搞错
功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。
大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。
Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接
(通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端 修了条路,然后数据就可以被拉过来了)
这样你可以把数据导出到本地,虽然可能服务器离你很远。
你同样可以把dmp文件从本地导入到远处的数据库服务器中。
利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于 在oracle 8i 中 安装目录\$ora10g\BIN被设置为全局路径,
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面 加上 compress=y 就可以了
数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入
imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
基本上上面的导入导出够用了。不少情况我是将表彻底删除,然后导入。
注意:
你要有足够的权限,权限不够它会提示你。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。
数据导出:
exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log;
导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!
同名用户之间的数据导入:
imp hkb/hkb@xe file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y
不同名之间的数据导入:
imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp
log=c:\orabackup\hkbimp.log;
另外附上oracle视频教程网站:http://bbs.51cto.com/thread-884173-1.html
期待第四部分的出现..............
select * from xd_bankquotasatistical as of timestamp sysdate-(1/(24)); --恢复1小时前的表中的数据
欢迎关注公众号:Java后端技术全栈