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 | 日期 | 无 | 无 | 生日 |
变长字符 (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