关于oracle的一些基本知识点和操作

关于oracle的一些基本东西

Oracle的安装:

 首先检查机器上是否安装过oracle若果安装过,则卸载后注意删除注册表(具体位置上网查)中有关oracle中的一切和本地磁盘中oracle的文件夹。安装oracle,记住oracle的实例名(这个很重要)用户可以后来添加。一个oracle可以对应n个用户。配置环境变量。

 

Oracle创建用户:

创建临时表空间

创建临时表空间
CREATE   TEMPORARY  TABLESPACE test_temp
TEMPFILE  ' C:\oracle\product\10.1.0\oradata\orcl\test_temp01.dbf '
SIZE 32M
AUTOEXTEND  ON
NEXT  32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

创建用户表空间

          创建用户表空间
CREATE  TABLESPACE test_data
LOGGING
DATAFILE  ' C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\TEST_DATA01.DBF '  
SIZE 32M 
AUTOEXTEND  ON  
NEXT  32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;

 

创建用户并制定表空间

CREATE   USER  username IDENTIFIED  BY  password
DEFAULT  TABLESPACE TEST_DATA
TEMPORARY  TABLESPACE TEST_TEMP;

 

给用户授予系统权限

GRANT  
   CREATE  SESSION,  CREATE   ANY   TABLE ,  CREATE   ANY   VIEW  , CREATE   ANY   INDEX ,  CREATE   ANY   PROCEDURE ,
   ALTER   ANY   TABLE ,  ALTER   ANY   PROCEDURE ,
   DROP   ANY   TABLE ,  DROP   ANY   VIEW ,  DROP   ANY   INDEX ,  DROP   ANY   PROCEDURE ,
   SELECT   ANY   TABLE ,  INSERT   ANY   TABLE ,  UPDATE   ANY   TABLE ,  DELETE   ANY   TABLE
   TO  username;

为用户创建角色权限

grant connect tousername;

grant dba to username;

grant resource tousername;

将role这个角色授与username,也就是说,使username这个用户可以管理和使用role所拥有的资源

GRANT  role  TO  username;

-----------------------------------------------查看用户权限---------------------------------------------------------

查看所有用户

SELECT   *   FROM  DBA_USERS;
SELECT   *   FROM  ALL_USERS;
SELECT   *   FROM  USER_USERS;

查看用户系统权限

SELECT   *   FROM  DBA_SYS_PRIVS;
SELECT   *   FROM  USER_SYS_PRIVS;

查看用户对象或角色权限

SELECT   *   FROM  DBA_TAB_PRIVS;
SELECT   *   FROM  ALL_TAB_PRIVS;
SELECT   *   FROM  USER_TAB_PRIVS;

查看所有角色

SELECT   *   FROM  DBA_ROLES;

查看用户或角色所拥有的角色

SELECT   *   FROM  DBA_ROLE_PRIVS;
SELECT   *   FROM  USER_ROLE_PRIVS;

 

当用户处于不用的计算机时需要建立计算机之间的一个链接dataBaseLink

Drop existing database link

drop public database link XXDLINK.REGRESS.RDBMS.DEV.US.ORACLE.COM;

Create database link

create public database link XXDLINK.REGRESS.RDBMS.DEV.US.ORACLE.COM

connect to WOXINGTONG

using '192.168.95.212/itsdb';

访问同一个机器上的不同用户是前面加username.用户下的表。

访问不同机器上的用户需要添加username.用户的表@链接的名称(例如XXDLINK.REGRESS.RDBMS.DEV.US.ORACLE.COM)这样就能访问了。

Sql的一些语法:

ddl语句:

数据库的数据类型介绍:最常用的number(n),varchar varchar2(n) char date Boolean

数据库中的数据类型是存储在dba_types中可用sysdba登录后查询:select type_name  from dba_types where  owner  is  null;

建表:

Create table  tablename(

Id  number(2)  primary  key  not  null,

Username  varchar2(20)  not  null,

)

修改表的字段: alter table  tablename  rname  column  lastName  to  newname;

修改字段的长度只能改大:alter table  tablename  modify(name  type(n));

表外添加主键: alter table  tablename  add constraints  name  primary  key(id);

创建主键时直接创建索引空间和数据存储空间:

Alter table tablename  add constraints  name  primary  key(id)  using  index  tablespace  index storate(initial  10M next  5M pctincrese  0)

Tablespace user storate( initial  10M next  5M  pcincrese 0)

Oracle建议任何一个表至少建立两个表空间 一个存储索引另外一个存储数据这样物理层的存储就会把两个文件放在不同的地方就能避免I/O操作所引起的竞争,提高查询效率。

再有就是在批量插入数据的时候主键的可设置为disable不起作用这样会提高效率等数据插入完毕后在吧主键设置为enablealter table tablename  disable  constraint  name;

                      Alter  table  tablename  enable  primary  key;

若存在主键是外键的关键这样主键就不能设置为disable

删除主键:alter table tablename drop constraint  name;

                      Alter  table  tablename  drop  primary  key;

 

外键:alter table tablename  add constraint  name  foreign key(外键字段references anothertable(关联字段);

Oracle无法修改已经创建的外键(外键列,名称);所有只有一种方法就是重新创建外键把原有的删除掉;先设置外键无效:alter table  tablename  disable constraint 外键名再删除:alter table  tablename  drop constraint  外键名;

添加列的字段说明:comment on column tablename.line is  ‘说明的文字’;

 

约束:

Oracle约束的五种类型:主键,外键,checknot null, unique index;

Check约束:为特定级别的约束或者一个表的约束可以自定义:例如一个表中有性别字段这是可设置sex varchar2(2) check(sex=’’  or sex=’’)

                      age number(2) check(age between 10 and 20)

not null:是对单一的字段的约束;默认是可为空的;id number(2) not null;或者alter table tablename modify  name  not null;

unique:唯一性约束,一列或者一组列中的值都是唯一,用于一组列时,这组列组合起来有唯一值。唯一性约束是需要占用空间的所以需要为其分配空间例如创建主键;

 

索引:方便查询的,为一个字段添加索引:create unique  index  name on tablename(id);

                      删除索引drop index indexname;

 

 

视图:是“存储的查询”或者“虚拟的表”只是映射基表的信息;可以吧多个表的查询同时呈现出来,最后直接查询视图就行了。可以根据同义词创建视图

                      Create or replace view viewname as select name, from  tablename1, tablename2  where tablename1.name=tablename2.name

删除视图:drop view viewname;

 

序列:生成唯一的整数,一般作为自增的id避免了应用层生成自增整数而降低性能。

Create sequence  sqname minvalue 1

                      Maxvalue 9999999999

start with 1

increment by 1

nocache;

修改:alter sequence sqname

Minvalue n

Maxvalue n

Increment by n;

删除:drop sequence  sqname;

 

同义词:数据库对象的别名,用户可以使用同义词为表另外起一个名字;多个用户可以通过同义词访问别的用户的表;

创建: create  or  replace  synonym  syname  for  targetname;

删除drop synonym syname;

 

 

DML语句:

SELECT: select  需要查询的字段 from  tablename  where  条件

where条件中可以使用运算符<>不等于 <   >   <=  >=  like 

多个条件之间的关系 or and  not   (between and)两个之间的所有值,in(几个特定的值

Order by  要排序的字段 desc(降序) asc(升序)

Distinct去重查询select distinct  字段 from  tablename;

基本运算符:-  *  /

select sal*2  from  tablename;

简单的基本函数:

字符函数:

ASCII(<c1>) c1是字符创,返回c1的第一个字母的ascII 它的逆函数是chr(<i>) i是整数

Concat(c1,c2)将字符串c2连接到c1后面,若其中一个为null返回另一个,都为null则返回null

Initcap(c1)每个单词第一个字母大写,其他小写返回;

Instrc1,[c2,<i>[j]]c2c1中第j此次出现的位置,从c1i位置开始,没有返回0,为负,则从右往左开始检索但是位置顺序不变;

Instrb(c1,{c2,<i>[j]})同上,返回字节;

Length(c1)返回c1长度

Lengthb()返回长度字节

Lower(c)返回小写字符;

Soundex(c)返回与c发音相似的词;

Translatec1,c2,c3c1c2中相同的字符用c3代替;

Upperc1)返回c1的大写;

 

数字函数:

Abs(n)n的绝对值;

Acos();反余弦函数;

Asin();

Atan();

Ceil(n);返回大于或者等于n的最小整数;

Cos();

Cosh();

Exp(n) nn次幂;

Floor(n)返回小于等于n的最大整数;

Lnn返回n的自然对数n必须大于0

Logn1,n2);返回n1,为底n2的对数;

Mod(n1,n2)返回n1除以n2的余数;

Powern1,n2);n1n2次方;

 

日期函数:

Add_months(d,<i>)返回日期d加上i各月;

Last_day(d);返回日期d月份的最后一天;

Months_between(d1,d2);返回d1,d2之间月份的个数;

Sysdate;当前时间和日期;

 

组函数:

Avg[{}])返回平均值;

Max([{}]);最大值;

Min([{}]);最小值;

Stddev([{}]);返回方差的平方根;

Sum();总和;

Count();个数;

Variance();统计方差;

 

Group by:分组:having限制条件

Group by  having  条件;

Union  union all合并;

 

 

Insert into tablename(id,name,…) values(‘1’,’zhangsan’,…);

多表同时插入:

无条件:insert all  into  tablename1 values(…) 

                  Into  tablename2 values(…);

有条件:insert all  where 条件into  tablename1(…)

                                       Where 条件into  tablename2(…);

 

Update tablename set  name=’’  where  id=?;

 

Delete from  tablename  where id=?;

 

Merge;

 

Truncate;

 

PL/SQL语法:

注释:

单行:--  多行:/*…….*/多行注释不能嵌套;

 

数据类型:number char  varchar2  long  nchar  Boolean  date

变量声明:declare;

流程:if-then-else;

Declate

Begin

If

Then

Else

End if

End;

Case: case name

        When  …then….

End case;

Loop:循环:for条件loop操作….end loop;

                    While 条件loop操作…end loop;

Loop

Goto name;

End loop;

 

过程:

Create or  replace  procedure  name

                参数名称 type

                  形参    type

Is|as

Begin

End;

 

函数:create or replace function   name

参数名称 type

                  形参    type

Return {is|as}

Begin

End;

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值