常用oracle SQL语句

1.建表(复制表结构)

create table dw_emp as
select * from src_emp where emp_id=-1;
1.1添加注释 comment on
comment on table emp is '员工表';  --表注释
comment on column emp.empno is '员工编号';  --列注释

2.复制数据到另一个表(跨数据库test复制)

insert into dw_emp select * from test.src_emp;

3.删除表中数据

truncate table DW_emp;    #整表数据删除
delete * from DW_EMP where 条件;   #按行删除

4.删除表

drop table 表名;

5.显示当前数据库名等信息

select * from v$database;  --sys、system用户使用
select * from v$instance;  --sys、system用户使用
show parameter instance;  --sys、system用户使用
show parameter db;  --sys、system用户使用

6.查看表名

select * from user_tables;  --查询当前用户所有表名;
select * from all_tables where owner='SYS';  --查询某用户的所有表名;

7.查看用户名、密码

select name,password from sys.users$;

8.用户被锁定,解锁方法

  • 1). 用System或sys用户登录sqlplus;
  • 2). ALTER USER username ACCOUNT UNLOCK;

9.日期\字符\数字格式相互转换

例:select to_char(sysdate,'hhmiss'),to_char(current_date,'hhmiss') from dual;

TO_CHAR 是把日期或数字转换为字符串;
TO_DATE 是把字符串转换为数据库中得日期类型转换函数;
TO_NUMBER 将字符转化为数字;

一、TO_CHAR   
TO_CHAR(number, '格式')   --使用TO_CHAR函数处理数字  
TO_CHAR(salary,’$99,999.99’)
TO_CHAR(date,’格式’)   --使用TO_CHAR函数处理日期   
二、TO_NUMBER   
TO_NUMBER(char[, '格式'])   --使用TO_NUMBER函数将字符转换为数字   
三、TO_DATE   
TO_DATE(char[, '格式'])   --使用TO_DATE函数将字符转换为日期   

10.描述tablespace和datafile之间的关系

  • tablespace是逻辑上的概念,datafile则在物理的文件,储存了数据库的种种对象。
  • 一个表空间可包含一个或多个数据文件,一个datafile只能属于一个表空间;表空间利用增加或扩展数据文件扩大表空间,表空间的大小为组成该表空间的数据文件大小的和。
  • 类似城市和土地的关系(假如人是数据):
    城市是逻辑划分的,土地是物理存在的,
    一个城市可以有多快土地,一块土地只能属于一个城市。

11.同时建立多个表

begin
--学生表
execute immediate 'create table S(s# number(8),sn varchar2(10),sd varchar2(30),sa number(2))';
--课程表
execute immediate 'create table C(c# number(10),cn varchar2(30))';
--成绩表
execute immediate 'create table SC(s# number(8),c# number(10),g number(3))';
end;

12.创建表空间

 create tablespace my_space
 logging[或nologging]      --是否记录日志
 datafile 'D:\mydata.dbf'  --物理数据文件位置
 size 200m                 --空间初始大小
 autoextend on next 5m     --自动扩展,每次5M
 maxsize 500m;             --最大空间500M
假设表空间neuspace已用尽500MB空间,现要求增加一个数据文件,存放在e:\appdata目录下,文件名为appneudata,大小为500MB,不自动增长。(5分)
答:alter tablespace neuspace add datafile ‘e:\appdata\appneudata.dbf’ size 500m;

案例:创建class表和student表
class表

属性 类型(长度) 默认值 约束 含义
CLASSNO 数值 (2) 主键 班级编号
CNAME 变长字符 (10) 非空 班级名称

student表

属性 类型(长度) 默认值 约束 含义
STUNO 数值 (8) 主键 学号
SNAME 变长字符 (12) 非空 姓名
SEX 字符 (2) 性别
BIRTHDAY 日期 生日
EMAIL 变长字符 (20) 唯一 电子邮件
SCORE 数值 (5, 2) 检查 成绩
CLASSNO 数值 (2) 外键,关联CLASS
表的CLASSNO主键
班级编号

13.查询特殊字符的ascii码,特殊字符拼接
chr(10) --换行符
chr(13) --回车符
select ascii('&') from dual; --查询&字符的ascii
select 'a'||chr(10)||'b'||chr(13)||'c' from dual; --拼接换行符和回车符

14.伪列rownum(分页查询模板)
主表需要排序order by时,要三层select嵌套:
select * from (select t1.* ,rownum rn from (select * from emp order by sal) t1) where rn>5 and rn<10; --或者where rn between 6 and 9;
select * from (select t1.,rownum rn from (select * from emp order by sal) t1 where rownum<10) where rn>5;
主表不需排序,且查询字段不用
时,两层select即可实现:
select t1.* from (select empno,ename,sal,rownum rn from emp) t1 where rn>5 and rn<10;

15

查看用户和默认表空间的关系。
select username,default_tablespace from dba_users;

1.查看表结构:
desc表名

2.查看当前用户的表:
select table_name from user_tables;

3.查看所有用户的表名(其中包括系统表):
select table_name from all_tables;

4.查看所有的表:
select * from tab;
select * from dba_tables;
select * from dba_objects;
select * from tab cat;

下面介绍[Oracle]查询用户表空间◆oracle

查询用户表空间:
select * from user_all_tables
◆Oracle查询所有函数和储存过程:select * from user_source
◆Oracle查询所有用户:select * from all_users.select * from dba_users
◆Oracle查看当前用户连接:select * from v$Session
◆Oracle查看当前用户权限:select * from session_privs
◆Oracle查看用户表空间使用情况:
select a.file_id "FileNo",a.tablespace_name
"Tablespace_name",
a.bytes "Bytes",a.bytes-sum(nvl(b.bytes,0)) "Used",
sum(nvl(b.bytes,0)) "Free",
sum(nvl(b.bytes,0))/a.bytes*100 "%free"
from dba_data_files a, dba_free_space b
where a.file_id=b.file_id(+)
group by a.tablespace_name ,
a.file_id,a.bytes order by a.tablespace_name;

1.查看所有用户:
select * from dba_user; select * from all_users; select * from user_users;
2.查看用户系统权限:
select * from dba_sys_privs; select * from all_sys_privs; select * from user_sys_privs;
3.查看用户对象权限:
select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs;
4.查看所有角色:
select * from dba_roles;
5.查看用户所拥有的角色:
select * from dba_role_privs; select * from user_role_privs;
6.查看角色所拥有的权限:
select * from role_sys_privs;
select * from role_tab_privs;
7.查看所有系统权限
select * from system_privilege_map;
8.查看所有对象权限
select * from table_privilege_map;
以上是在Oracle中查看用户权限 ,在DB2中为:
select * from syscat.dbauth 或者 get authorizations
查看sidselect * from v$instance

你可能感兴趣的:(常用oracle SQL语句)