oracle常用语句自我小结

1 篇文章 0 订阅
1 篇文章 0 订阅

(对oracle9/10g使用的总结,部分sql语句都实用)

-------------第一步oracle的启动过程-----------
在window下:

启动数据库实例
oradim -startup -sid orcl(数据库实例名称);
关闭数据库实例
oradim -shuntdown -sid orcl;
启动监听
lnsrctl -start ;
关闭监听
lnsrctl -shuntdown;

在Linux下启动过程:
lsnrctl start --启动监听
        //sqlplus sys/manager as sysdba --oracle10中可以这么写
        sqlplus /nolog
        conn sys/oracle as sysdba
        startup --启动数据库实例


------进入oracle使用system---------
一般来说,在window下:
启动中的框中输入:sqlplus 进入到oracle的sqlplus登录界面中。

sys/ as sysdba //此登录命令为 用户名sys/密码为空 以数据库管理员的身份进入到oracle。
对于一般的当前window登录用户为sysdba的话,都能登录成功的。不过这中登录方式不够安全。

system/meiling //此登录命名为,使用系统管理员的身份进入到oracle中,密码为meiling(此密码是在)
安装oracle的时候自己设置的一定要记住。


---------用户操作------------------
SQL> create user test1 identified by test1 ;//创建一个test1用户密码为test1
SQL> grant r1 to test1;//把角色r1赋予test1用户
SQL> grant unlimited tablespace to test1;//给test1用户赋予不限制使用表空间的权限,此权限不能赋予给角色。只能给用户。
SQL> drop user test1;//删除用户

一般来说创建一个用户的过程如下:
SQL> create user test identified by test;//创建用户

用户已创建。

SQL> grant connect to test;//给用户赋予登录的角色

授权成功。

SQL> grant resource to test;//给用户赋予使用资源的角色,也就是可以对表的曾删改查创建序列视图等。

授权成功。


-----------角色操作
SQL> create role r1 ;//创建了一个r1角色;
SQL> grant create table to r1;//给r1赋予创建表的权限
SQL> grant create session to r1;//给r1赋予创建回话的权限,也就是登录权限。
SQL> drop role r1;//删除角色;
SQL> revoke dba from test;//把test用户的dba角色撤销
数据库中预先定义的角色:

1)CONNECT、RESOURCE、DBA  这几个权限比较常见

2)SELECT_CATALOG_ROLE:查询数据字典的权限

3)DELETE_CATALOG_ROLE:删除数据字典的权限

4)EXECUTE_CATALOG_ROLE:执行数据字典包的权限


---创建数据(一般对于程序员来说这步不是必须的,是由dba来创建的)
一般来说,创建数据库有三种方式:
1,使用GUI视图界面方式创建,也就是在:“Oracle Database Configuration Assisstant”中创建。
2,用命令行方式创建数据库。
3,通过指定批处理文件进行数据库的创建。


------------表操作(对于程序员来书是必须会的)
create table usertable(
userid number(9) primary key ,
username varchar2(64) not null,
password varchar2(128) not null,
sex varchar2(10),
age number(3),
address varchar2(1000)
)//创建一个usertable表

SQL> alter table usertable add phone varchar2(32);//修改表结构:给表添加一行phone
SQL> alter table usertable modify phone varchar2(40);//修改表结构:修改phone的数据类型大小为varchar2(40)
SQL> alter table usertable drop column phone;//修改表结构:删除了字段phone。
SQL> insert into usertable values(1,'yxh','yxh','男',26,'138956322114');//插入数据
SQL> update usertable set username='yuanxh' where userid=1;//修改数据
SQL> select * from usertable;//查询数据
SQL> delete from usertable where userid=1;//删除数据
1* insert into usertable values(user_sequence.nextval,'yxh','yxh','男',26,'ads
fdsfa')//使用创建的序列作为主键插入表中。
SQL> alter table usertable rename to users;//更改表名
SQL> comment on table users is '用户表';//给表添加注释
SQL> comment on column users.userid is '用户表id';//给users表userid字段添加注释

-----------序列操作(程序员必须会)
SQL> create sequence user_sequence start with 1 increment by 1 maxvalue 1000000;//创建序列

SQL> alter sequence user_sequence minvalue 0;//修改序列但是,start with 这项是不能修改的。

SQL> select user_sequence.nextval from dual;//使用sql获取序列user_sequence的下一个值


------------视图的操作(程序员必会)

SQL> create view user_view  as select * from usertable;//创建视图
SQL> create or replace view user_view as
  2  select "USERID","USERNAME","PASSWORD","SEX","AGE" from usertable;//修改视图的内容
SQL> select * from user_view;//使用视图


---------存储过程的使用(程序员必会)
  创建存储过程包含输入输出的参数
  1  create or replace procedure user_proc(userid out number,username in varchar
2,password in varchar2)
  2  is begin
  3  insert into usertable(userid,username,password) values(user_sequence.nextva
l,username,password);
  4  select user_sequence.currval into userid from dual;
  5* end user_proc;

执行存储过程
在command界面中:
exc user_proc('','');//只适用于足有输入参数的时候
execute user_proc('','');//只适用于足有输入参数的时候
call user_proc('','');//只适用于足有输入参数的时候
begin user_proc('','') end; //只适用于足有输入参数的时候

//带有输入输出的参数的执行:
SQL> set serveroutput on
SQL> DECLARE
  2    spno number;
  3    spname varchar2(10);
  4  BEGIN
  5    sp_pro10 (spno, spname);
  6   
  7    dbms_output.put_line(spname);
  8  END;
  9  /

-----用户对象的导入导出也就是exp、imp命令的使用此命令相当于备份还原了
导出exp命令的使用
数据导出:
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 将数据库中的表inner_notify、notify_staff_relat导出
    exp aichannel/aichannel@TESTDB2 file= d:\datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
   exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=" where filed1 like '00%'"

导出远程主机上的方法:

C:\Users\zdvictory>exp gds/123@192.168.3.193/orcl file=e:\data\gddzjc.dmp tables
=(om_organization)


数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
   imp system/manager@TEST  file=d:\daochu.dmp
   imp aichannel/aichannel@TEST  full=y  file=d:\datanewsmgnt.dmp ignore=y
   上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
   在后面加上 ignore=y 就可以了。
2 将d:daochu.dmp中的表table1 导入
imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值