欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle基础知识

程序员文章站 2022-07-14 21:07:23
...
/**创建school表*/
create table school(
   name varchar2(20),
   schoolId number primary key;
);
desc school;
/**创建classmate表及各种约束*/
create table classmate(
   name varchar2(1),
   age number,
   address long,
   schoolId number,
   id number constraint id_notNull_constraint not null,
   constraint id_primaryKey_constraint primary key (id),
   constraint id_unique_constraint unique(id),
   constraint id_foreignKey_constraint foreign key (id)
   references school(schoolId),
   constraint id_check_constraint check (id > 0)
);

/*修改表,为表增加主键约束*/
alter table classmate
add constraint id_primaryKey_constraintRepet primary key (id);

/**删除某约束*/
alter table classmate
drop constraint id_notNull_constraintRepet;

/**非空约束必须用modify子句增加约束条件*/
alter table classmate
modify (age not null);

/**删除有相关外键约束的主键*/
alter table school
drop primary key cascade;

/**创建索引*/
create index classmate_index
on classmate (id);

create index school_index
on school (schoolId);

/**删除索引*/
drop index school_index;

视图的好处:
1、可以限制对基础表的数据的访问,只允许用户通过视图看到表中的一部分数据
2、可以使复杂的查询变的简单
3、提供了数据的独立性,用户不知道数据来自何处,对用户来说数据是透明的
4、提供了对相同数据的不同显示
/**创建视图*/
create or replace view classmate_view(mateName,mateAdress)
as select name,address from classmate
with read only;

describe classmate_view;

/**查询视图*/
select * from classmate_view;

对视图的DML操作实际上是对基础表的操作,通常不允许对视图进行操作。
/*删除视图,视图是独立的对象,删除视图不会删除基础表**/
drop view classmate_view;

/**topN分析法--使用了rownum这个伪列;在from后边加上子查询;
在子查询中使用了order by进行排序;在主查询中通过where条件中的rownum定义过滤条件,只返回最神秘的前几行数据*/
select name, rownum from (select * from classmate order by id) where rownum < 5;

/**创建同义词:数据库对象的别名*/
create synonym mate for classmate;

/**访问同义词*/
select * from mate;

/**删除同义词*/
drop synonym mate;