首页 > 代码库 > orcal数据库基本操作

orcal数据库基本操作

1、连接

 

SQL*Plus system/manager

 

2、显示当前连接用户

 

SQL> show user

 

3、查看系统拥有哪些用户

 

SQL> select * from all_users;

 

4、新建用户并授权

 

SQL> create user a identified by a;(默认建在SYSTEM表空间下)

 

SQL> grant connect,resource to a;

 

5、连接到新用户

 

SQL> conn a/a

 

6、查询当前用户下所有对象

 

SQL> select * from tab;

 

7、建立第一个表

 

SQL> create table a(a number);

 

8、查询表结构

 

SQL> desc a

 

9、插入新记录

 

SQL> insert into a values(1);

 

10、查询记录

 

SQL> select * from a;

 

11、更改记录

 

SQL> update a set a=2;

 

12、删除记录

 

SQL> delete from a;

 

13、回滚

 

SQL> roll;

 

SQL> rollback;

 

14、提交

 

SQL> commit;

 

用户授权:

 

GRANT ALTER ANY INDEX TO "user_id "

 

GRANT "dba " TO "user_id ";

 

ALTER USER "user_id " DEFAULT ROLE ALL

 

创建用户:

 

CREATE USER "user_id " PROFILE "DEFAULT " IDENTIFIED BY " DEFAULT TABLESPACE "USERS " TEMPORARY TABLESPACE "TEMP " ACCOUNT UNLOCK;

 

GRANT "CONNECT " TO "user_id ";

 

用户密码设定:

 

ALTER USER "CMSDB " IDENTIFIED BY "pass_word "

 

表空间创建:

 

CREATE TABLESPACE "table_space " LOGGING DATAFILE ‘C:\ORACLE\ORADATA\dbs\table_space.ora‘ SIZE 5M

 

------------------------------------------------------------------------

 

1、查看当前所有对象

 

SQL > select * from tab;

 

2、建一个和a表结构一样的空表

 

SQL > create table b as select * from a where 1=2;

 

SQL > create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;

 

3、察看数据库的大小,和空间使用情况

 

SQL > col tablespace format a20

 

SQL > select b.file_id  文件ID,

 

  b.tablespace_name  表空间,

 

  b.file_name     物理文件名,

 

  b.bytes       总字节数,

 

  (b.bytes-sum(nvl(a.bytes,0)))   已使用,

 

  sum(nvl(a.bytes,0))        剩余,

 

  sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比

 

  from dba_free_space a,dba_data_files b

 

  where a.file_id=b.file_id

 

  group by b.tablespace_name,b.file_name,b.file_id,b.bytes

 

  order by b.tablespace_name

 

  /

 

  dba_free_space --表空间剩余空间状况

 

  dba_data_files --数据文件空间占用情况

 

4、查看现有回滚段及其状态

 

SQL > col segment format a30

 

SQL > SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;

 

5、查看数据文件放置的路径

SQL > col file_name format a50

 

SQL > select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;

 

6、显示当前连接用户

 

SQL > show user

 

7、把SQL*Plus当计算器

 

SQL > select 100*20 from dual;

 

8、连接字符串

 

SQL > select 1 | |2 from 1;

 

SQL > select concat(1,2) from 1;

 

9、查询当前日期

 

SQL > select to_char(sysdate,‘yyyy-mm-dd,hh24:mi:ss‘) from dual;

 

10、用户间复制数据

 

SQL > copy from user1 to user2 create table2 using select * from table1;

 

11、视图中不能使用order by,但可用group by代替来达到排序目的

 

SQL > create view a as select b1,b2 from b group by b1,b2;

 

12、通过授权的方式来创建用户

 

SQL > grant connect,resource to test identified by test;

 

SQL > conn test/test

 

13、查出当前用户所有表名。

 

select unique tname from col;

 

-----------------------------------------------------------------------

 

 

 

alter table alist_table add address varchar2(100);

 

 

 

alter table alist_table modify address varchar2(80);

 

 

 

create table alist_table_copy as select ID,NAME,PHONE,EMAIL,

 

QQ as QQ2,

 

ADDRESS from alist_table;

 

drop table alist_table;

 

rename alist_table_copy to alist_table

 

 

 

空值处理

 

有时要求列值不能为空

 

create table dept (deptno number(2) not null, dname char(14), loc char(13));

 

在基表中增加一列

 

alter table dept

 

add (headcnt number(3));

 

修改已有列属性

 

alter table dept

 

modify dname char(20);

 

注:只有当某列所有值都为空时,才能减小其列值宽度。

 

只有当某列所有值都为空时,才能改变其列值类型。

 

只有当某列所有值都为不空时,才能定义该列为not null

 

例:

 

alter table dept modify (loc char(12));

 

alter table dept modify loc char(12);

 

alter table dept modify (dname char(13),loc char(12));

 

查找未断连接

 

select process,osuser,username,machine,logon_time ,sql_text

 

from v$session a,v$sqltext b where a.sql_address=b.address;

 

-----------------------------------------------------------------

 

1.USER_开始的数据字典视图包含当前用户所拥有的信息查询当前用户所拥有的表信息:

 

select * from user_tables;

 

2.ALL_开始的数据字典视图包含ORACLE用户所拥有的信息,

 

查询用户拥有或有权访问的所有表信息:

 

select * from all_tables;

 

3.DBA_开始的视图一般只有ORACLE数据库管理员可以访问:

 

select * from dba_tables;

 

4.查询ORACLE用户:

 

conn sys/change_on_install

 

select * from dba_users;

 

conn system/manager;

 

select * from all_users;

 

5.创建数据库用户:

 

CREATE USER user_name IDENTIFIED BY password;

 

GRANT CONNECT TO user_name;

 

GRANT RESOURCE TO user_name;

 

授权的格式: grant (权限) on tablename to username;

 

删除用户(或表):

 

drop user(table) username(tablename) (cascade);

 

6.向建好的用户导入数据表

 

IMP SYSTEM/MANAGER FROMUSER = FUSER_NAME TOUSER = USER_NAME FILE = C:\EXPDAT.DMP COMMIT = Y

 

7.索引

 

create index [index_name] on [table_name]( "column_name ")