(1)命令创建表空间:
create tablespace "TEST" datafile '/dm8/data/DAMENG/TBS01.DBF' size 32 autoextend on next 1 CACHE = NORMAL;
(2)表空间状态变更,脱机和在线:
alter tablespace TEST offline;
alter tablespace TEST online;
(3)表空间修改大小:
alter tablespace "TEST" resize datafile 'TBS01.DBF' to 64;
(4)查看表空间数据文件有多少个
select FILE_NAME,STATUS,TABLESPACE_NAME from dba_data_files;
(5)增加表空间数据文件:
alter tablespace "TEST" add datafile '/dm8/data/DAMENG/TBS02.DBF' size 64;
(6)更换数据文件存储的位置
①:alter tablespace "TEST" offline;
②:select tablespace_name,status from dba_tablespaces;
③:alter tablespace "TEST" rename datafile '/dm8/data/DAMENG/TBS02.DBF' to '/dm8/tbs02.dbf';
④:alter tablespace "TEST" rename datafile '/dm8/data/DAMENG/TBS02.DBF' to '/dm8/tbs01.dbf';
⑤:alter tablespace "TEST" online;
(7)临时表空间
select para_name,para_value from v$dm_ini where para_name like 'TEMP%';
(8)Roll表空间
alter tablespace roll resize datafile '/dm8/data/DAMENG/ROLL.DBF' to 256;
(9)删除表空间:drop tablespace "TEST";
实验:创建一个表空间,初始大小50M,表空间由2 个数据文件组成,分别存储在不同的位置,数据文件自动扩展,每次扩展1M,每个数据文件最大100M。
create tablespace "CESHI" datafile '/dm8/CESHI1.DBF' size 50 autoextend on next 1 maxsize 100, '/dm8/CESHI2.DBF' size 50 autoextend on next 1 maxsize 100 CACHE = NORMAL;
8、用户相关操作
(1)删除用户:级联删除(schema都会删除)drop user test cascade; 只删除账号:drop user test;
(2)查看test用户有哪些权限:select grantee,granted_role from SYS.DBA_ROLE_PRIVS where grantee='TEST';
(3)查看public角色有哪些权限:SELECT GRANTEE,PRIVILEGE FROM SYS.DBA_SYS_PRIVS WHERE GRANTEE='PUBLIC';
实验1:建立用户test,用户可以创建自己的表,有属于自己的表空间,用户密码要求每60 天变更一次。
create user "TEST" identified by "dameng123" limit password_life_time 60 default tablespace "TEST";
grant "PUBLIC","VTI" to "TEST";
grant CREATE TABLE to "TEST";
实验2:规划一个用户test2,用户每60 天变更一次密码,密码尝试连接2 次失败,账号锁定5 分钟,用户能查询dmhr.employee 表
create user "TEST2" identified by "dameng123" limit failed_login_attemps 2, password_life_time 60, password_lock_time 5;
grant "PUBLIC","VTI" to "TEST2";
grant SELECT on "DMHR"."EMPLOYEE" to "TEST2";
实验3:企业招聘一批录入人员,权限固定,只能录入city 表的权限。角色:一组固定权限的集合。
create role "TESTROLE3";
grant REFERENCES ANY TABLE to "TESTROLE3";
grant INSERT on "DMHR"."CITY" to "TESTROLE3";
grant "TESTROLE3" to "TEST2";
9、模式相关操作
(1)创建表:
create table "TEST"."STU"("ID" CHAR(10) not null,"SNAME" VARCHAR(20) not null ,primary key("ID")) storage(initial 1, next 1, minextents 1,fillfactor 0, on "STU");
comment on table "TEST"."STU" is 'STUDENT INFO';
(2)增加列:alter table DMHR.TEST add column(AGE INT); 删除列:alter table DMHR.TEST drop column AGE;
(3)创建模式指定约束(先创建表)
非空约束:create table test.t1(id int); alter table test.t1 modify id int not null;
唯一约束:create table test.t3(id int, name varchar(20) unique);
主键约束:create table test.t4(id int primary key, name varchar(20));
检查约束:create table test.t6(id int check(id>=5));
外健约束(外键一定是其他表的主键):create table test.t9(id int primary key,sid int foreign key references test.t8(sid));
(4)列加备注:comment on column test.t8.sid is '测试';
(5)导入数据
create table test.t10(sid int);
制造数据:vi test.sql,insert into test.t10(sid) values(1);insert into test.t10(sid) values(2);
导入:在SQL模式下:SQL> start /home/dmdba/test.sql
(6)重命名: alter table test.t1 rename to tt;
(7)启用和禁用约束:
select CONSTRAINT_NAME,CONSTRAINT_TYPE,TABLE_NAME,STATUS from dba_constraints where TABLE_NAME='T3';
设置成不可用:alter table test.t3 disable constraint CONS134218845;
设置成可用:alter table test.t3 enable constraint CONS134218845;
(8)删除表:drop table test.tt;
10、视图相关操作:
(1)创建视图:
创建语法:create view test.v1 as select * from dmhr.employee;
修改语法:create or replace view test.v1 as select employee_name from dmhr.employee limit 5;
(2)删除视图:drop view test.v1;
(3)查询视图:DBA_VIEWS;
11、索引相关操作:
(1)查看索引:select table_name,index_name from dba_indexes where table_name='STU';
(2)创建索引:
1、创建索引表空间: create tablespace index1 datafile '/dm8/data/DAMENG/index1_01.dbf' size 32;
2、 创建索引:create index ind_emp on test.emp(employee_id) tablespace index1;
3、查看执行计划:explain select * from test.emp where employee_id<20;
4、收集统计信息:begin dbms_stats.gather_table_stats('TEST','EMP'); END;
5、重建索引:alter index test.ind_emp rebuild;
6、删除索引:drop index test.ind_emp;
12、DML语句:
新增:insert into test.dept values('1106', 'aaaaa', '9002', 9);
删除:delete test.dept where department_id='1106';
MERGE语法:使用merge into 语法可以合并update 和insert 语句
merge into test.t1 using test.t12 on (test.t1.c1=test.t12.c3) when MATCHED THEN update set test.t1.c2=test.t12.C4 when not matched then insert (c1,c2) values (test.t12.c3,t12.c4);