1.确认当前用户是否有建表权限
SQL> select * from user_sys_privs where privilege='CREATE TABLE';
2.确认当前用户有哪些表
SQL> select table_name from user_tables;
3.建立一个emp1表结构与emp表结构一样--不使用子查询
SQL> create table emp1(EMPNO NUMBER(4) NOT NULL,ENAME VARCHAR2(10),JOB
VARCHAR2(9),MGR NUMBER(4),HIREDATE DATE,SAL NUMBER(7,2),COMM
NUMBER(7,2),DEPTNO NUMBER(2));
4.建立一个emp2表结构与emp表结构一样--使用子查询
SQL> create table emp2 as select * from emp where 0=1;
5.给emp1表增加列dname和loc(结构与dept表的dname,loc一致),然后更新emp1表的dname,loc数据
SQL> alter table emp1 add(dename VARCHAR2(14),LOC VARCHAR2(13));
SQL> insert into emp1 select a.* ,b.dname,b.loc from emp a,dept b where
a.deptno=b.deptno;
6.将dept,emp,salgrade表的结构合并为一个新表empnew
SQL> create table empnew as select a.* ,b.loc,b.dname,c.* from emp a,dept
b,salgrade c where 1=0;
create table empnew as select * from emp natural join dept join salgrade
on(sal between losal and hisal);
7.修改empnew的loc列的默认值为成都
SQL> alter table empnew modify (loc VARCHAR2(13) default 'CD');
8.将empnew表的loc列名更改为addr
SQL> alter table empnew rename column loc to addr ;
9.将empnew表的addr列删除
SQL> alter table empnew drop column addr ;
10.将empnew表的dname列标记删除,然后在删除标记的列
SQL> alter table empnew drop (dname) ;
alter table empnew set unused column dname ;
alter tabel empnew drop unused column dname;
11.建立一个dept1表结构与dept表结构和内容一样--使用子查询
SQL> create table dept1 as select * from dept;
12.给emp1表的empno增加主键约束
SQL> alter table emp1 add constraint pk_emp1_no primary key(empno);
alter table emp1 modify(empno primary key);
alter table empa modify(empno number(20),primary key(empno));
13.给emp1表的deptno增加外键约束关联到dept1表的deptno列
SQL> alter table dept1 modify(DEPTNO NUMBER(2) primary key);
SQL> alter table emp1 modify(deptno NUMBER(2) references dept1(deptno));
alter table emp1 modify (deptno number(10),foreign key(deptno) references
dept1(deptno));
14.确保emp1表的sal列值大于0
SQL> alter table emp1 modify(sal NUMBER(7,2) check(sal>0));
15.确保emp1表的mgr值是empno中有的值
???SQL> alter table emp1 modify(mgr NUMBER(4) check(mgr= select empno from
emp1));
SQL> alter table emp1 modify(mgr NUMBER(4) references emp1(empno));
alter table emp1 modify(mgr references emp1(empno));
16.删除emp1表所有约束
alter table emp1 drop constraints ;
17.建立一个视图empv1显示emp表员工名字,职位,月薪,奖金。
SQL> create or replace view empv1 as select ename,job,sal,comm from emp;
18.建立一个视图empv2显示emp表员工名字,职位,总月薪。
SQL> create or replace view empv2 as select ename,job,sal+comm tsal from
emp;
19.建立一个只读视图empv3显示emp表所有内容
SQL> create or replace view empv3 as select * from emp with read only;
20.建立一个视图empv4显示sarah表所有内容,其中sarah表并不存在
SQL> create or replace force view empv4 as select * from sarah;
21.建立一个视图empv5显示只满足部位编号为10的emp表员工名字,职位,月薪
SQL> create or replace view empv5 as select ename,job,sal from emp where
deptno=10;
22.修改视图empv5显示内容为emp表员工名字,领导名字,职位,月薪
SQL> create or replace view empv5 as select ename,sal,job,(select ename from
emp e where e1.mgr=e.empno) as leader from emp e1;
23.修图视图empv4显示员工名字,领导名字,部门名字,薪水,薪水等级
SQL> create or replace view empv4 as select ename,sal,dname,(select ename
from emp e where e1.mgr=e.empno) as leader, grade from emp e1 natural join
dept join salgrade on (sal between losal and hisal);
24.分别对empv1,empv2的每个列进行DML操作,是否能成功,不能成功说明原因
SQL> update empv1 set sal=sal+1;
SQL> update empv2 set job='dancer';
SQL> alter empv1 add select deptno from emp ;
update 操作能够执行成功,但是alter操作执行不成功
25.查询自己建立哪些视图及视图内容
SQL> select view_name from user_views;
SQL> select view_name, text from user_views;
26.删除自己建立的视图
SQL> drop view empv1;
27.检查自己用户有哪些序列,序列下一个值是多少。
SQL> select * from user_sequences;
SQL> select s1.nextval from dual;
28.删除自己建立的所有序列
SQL> drop sequence s1;
29.建立一个表empi1来自emp表结构和数据
SQL> select * from empi1;
create tabel empi1 as select * from emp;
a.给empno列建立唯一索引 索引名字与主键名字相同
SQL> create unique index empno on empi1(empno);
user_constraints //查找主键
b.给sal列建立一个索引 索引名字empi1_sal_i
SQL> create index empil_sal_i on empi1(sal);
c.给deptno和sal列建立一个索引,索引名字empi1_ds_i
SQL> create index empil_ds_i on empi1(deptno,sal);
//重复值少的放前面,重复值多的放后面。因为会影响性能
d.检查自己建立多少索引,索引类型,索引在哪个列上
SQL> select a.index_name,index_type ,column_name from user_indexes a ,
user_ind_columns b where a.index_name=b.index_name and a.table_owner='SCOTT';
e.删除所建立的索引
SQL> drop index EMPIL_DS_I;
SQL> drop index EMPIL_SAL_I;
SQL> drop index empno;
30.程序调用的表名字为sal 表,但数据库里面表名字为salgrade表。在不修改程序与修改表名情况下,请提供解决方法。
SQL> create public synonym sal for SCOTT.salgrade;
31.查看自己建立的同义词有哪些,对哪个对象取别名
SQL> select * from user_synonyms;
32.删除自己建立的同义词
SQL> drop public synonym sal; //只有在sysdba 用户下才能删除