1.在表之间传输数据
1)利用INSERT传输数据
insert into test1 (select name2,age2 from test2);
从上面的操作可以看出,可通过SELECT向一个表中成批地添加数据,但应注意:数据类型要一致,所选择的列数应一致。此语句的语法格式如下:
INSERT INTO table_name ( SELECT statement ) ;
2)基于已有的表建立新表
语法为:
CREATE TABLE new_table_name AS SELECT statement ;
完成以下操作,并比较test1和test2的表结构:
create table test3 as select * from test2;
2.重新命名表
这项工作做起来很容易,语法如下:
RENAME old_table_name TO new_table_name; 完成如下操作: rename test3 to tst3; rename test2 to tst2; rename test1 to tst1;
3.更改表的结构
1)增加列
ALTER TABLE table_name ADD new_column_name datetype[NOT NULL] ;
alter table tst1 add csrq date; alter table tst2 add dz varchar2(20); desc tst1; desc tst2;
2)更改列的数据类型
ALTER TABLE table_name MODIFY column_name new_datatype ; alter table tst1 modify age char(3); desc tst1;
3)更改空值选项
ALTER TABLE table_name MODIFY column_name NOT NULL ;
完成以下操作, 观察表结构列数据类型的变化:
alter table tst1 modify name not null; desc tst1; alter table tst1 modify name null; desc tst1;
4.视图
概念: 定义一个查询,将它存放到Oracle的数据库中,然后允许用户按名字调用,就像是表一样(实际上并不是表)。从用户的观点来看,视图看上去确实像一个表,数据好像是从这个表中检索出来的。其实,数据只是通过这个视图显示出来,它们实际来自一个或多个其他的数据源。视图的一种最常见的应用是连接来自两个或多个表的数据,并以一个便于阅读的列表将它们提供给用户。通过指定记录检索过程使用户不必理解怎样连接表,使大量的人都能够使用这些数据。
CREATE OR REPLACE VIEW view_name AS SELECT statement ; CREATE VIEW view_name AS SELECT statement ;
建立一个视图,查询学员基本情、选修课程和成绩。
create or replace view xyqk_view as select a.xm 姓名 , a.dh 电话, c.kcmc 课程名称, b.cj 成绩 from xyqkb a, xycjb b, xkb c where a.xybh = b.xybh and c.kcbh = b.kcbh ; select * from xyqk_view;
删除视图
DROP VIEW view_name; 如:DROP VIEW xyqk_view;
Oracle不提供更改已有视图的方法,更改视图的唯一办法是删除它,然后重建。
5.TOP N分析
显示查询结果中符合条件的前N行,完成以下操作:
select xh,xm,dh from xyqkb where rownum <= 5
6.其它数据库对象
1)序列(sequence)
序列就是计数器。
a)建立序列
基本语法:CREATE SEQUENCE sequence_name;
带有可选参数的语法:
CREATE SEQUENCE sequence_name [INCREMENT BY increment_quantity] [START WITH starting_value] [MAXCALUE highest_value] [MINVALUE lowest_value] [CYCLE] ;
create sequence test_seq; select test_seq.nextval from dual; select test_seq.nextval from dual; select test_seq.nextval from dual;
b)使用序列
完成以下操作,弄清序列的用法:
create table st( record_id number(6,0), record_text varchar2(10) ); insert into st values(test_seq.nextval,’aaaa’); insert into st values(test_seq.nextval,’bbbb’); insert into st values(test_seq.nextval,’cccc’); insert into st values(test_seq.nextval,’dddd’); select * from st;
c)修改已有序列
ALTER SEQUENCE sequence_name
[选项];
alter sequence test_seq increment by 2; select test_seq.nextval from dual; select test_seq.nextval from dual; insret into st(test_seq.nextval,’eeee’); insret into st(test_seq.nextval,’ffff’); insret into st(test_seq.nextval,’gggg’); insret into st(test_seq.nextval,’hhhh’); select * from st;
d)删除序列
DROP SEQUENCE sequence_name; 完成以下操作: drop sequence test_seq;
2)同义词
通俗地讲,同义词就是为Oracle的对象起一个别名,可以使用这个别名访问该对象。且使用同义词还可以使其它用户通过同义词访问该对象。
a)建立同义词
CREATE [PUBLIC] SYNONYM synonym_name FOR object_name ; 如:create synonym test_syn for test; create public synonym test_syn2 for emp;
注意:创建同义词必须要有相应的权限,没有创建同义词的权限时不能创建同义词。
b)删除同义词
DROP SYNONYM synonym_name; 如:DROP SYNONYM test_syn;
3)Oracle数据字典
现在大家可能认识到Oracle数据库是由许多不同的对象组成的,这些对象有:表、列、视图、关系、约束、序列等。Oracle通过将这些对象的信息存储在其数据字典中来保存它们。
数据字典是一个表和视图的集合,这些表和视图由Oracle维护,以便使它们总是具有关于数据库中每个对象和用户的最新信息。
a)查询数据字典获取用户和数据库信息。
数据字典对象的完整清单可通过查询一个名为:DICT的视图得到。
b)使用不同的数据字典视图
与用户信息有关的数据字典视图,如:user_tables、user_synonyms、user_indexes、user_views等等。