Oracle基础 --常用SQL语句

1.创建表
CREATE TABLE  table_name ( column1  datatype,
                                              column2  datatype,
                                              ....);

VARCHAR2(N)  可变长度字符串,最大长度可达4000KB.
CHAR(N)           固定长度字符串,最大长度可达2000KB.
NUMBER           浮点类型的数据
NUMBER(M,N)   可表示整数和小数,m和n分别表示精度和小数位数
DATE    日期型数据
LONG  可变长的字符串,最大长度可达2GKB

2.快速创建表
CREATE TABLE table1  as select column1, column2...... from table2;
如果新表的列名要自己取的话则:
CREATE TABLE  column_new1, column_new2 as select column1, column2...... from table2;


3.增加列
ALTER TABLE table_name ADD (column1  datatype,
                                                  column2  datatype,
                                                 ......);

4.修改列
ALTER TABLE table_name  MODIFY (column1 new_datatype NULL (NOT NULL),
                                                        column2 new_datatype NULL (NOT NULL),
                                                        ......);

5.重命名表
ALTER TABLE table_name  RENAME TO table_name_new;

6.约束
约束可以是列级约束,也可以是表级约束,但是NOT NULL 只能是列级约束
创建约束
eg: CREATE TABLE student (
sno number(8),
sname  char(8) constraint nn_sname NOT NULL,
gender char(2),
CONSTRAINT pk_sno PRIMARY KEY(sno),
CONSTRAINT gen_check CHECK ( gender in ('男‘,’女‘))
);

外键约束定义形式比较复杂:
列级约束,放到 emp表deptno 列后  :CONSTRAINT fk_deptno REFERENCES dep(deptno)

表级别约束:CONSTRAINT fk_deptno  FOREIGN KEY (depto) REFERENCES dep(deptno)

还可以在创建表之后创建约束
ALTER TABLE emp ADD (CONSTRAINT k_deptno  FOREIGN KEY (depto) REFERENCES dep(deptno));

但是NOT NULL 只能通过Modiy来完成
ALTER TABLE student  MODIFY (sname CONSTRAINT nn_sname NOT NULL);

查看约束(与约束有关的两个数据字典:user_constraints, user_cons_columns
eg. SELECT ucc.constraint_name, ucc.table_name, ucc.column_name, uc.search_condition,uc.status
FROM user_cons_columns ucc,user_constraints  uc
WHERE  ucc.constraint_name = uc.constraint_name 
AND ucc.column_name ='CALL_TYPE_LEVEL3'
AND ucc.table_name='CALL_TYPE_LEVEL3';

删除约束:
ALTER TABLE student DROP CONSTRAINT nn_sname;

如果要删除主键约束,首先要考虑这个主键是否已经被另一个表的外键关联,如果没有关联,那么主键约束可以直接删除,否则不能直接删除。要删除主键约束,必须使用CASCADE关键字,连同与之关联的外键约束一起删除。
eg: ALTER TABEL dept  DROP CONSTRAINT pk_dept CASCADE;

使一个约束无效:
ALTER TABLE student DISABLE CONSTRAINT nn_sname;
ALTER TABLE student ENABLE CONSTRAINT nn_sname;

7.index
CREATE INDEX  index_name on Table_name ( column1, column2....);

创建唯一索引:
CREATE UNIQUE INDEX index on emp(ename, deptno);

与索引有关的两个数据字典:user_indexes 和user_ind_columns
查询索引基于的表和列:
SELECT index_type,table_name, uniqueness,status FROM user_indexes;
select table_name,column_name from user_ind_columns where index_name='INX_1';

8.view
create or replace view  as select ename, sal from emp where deptno=30 and sal > 2000;

9.序列 sequence
语法格式  CREATE SEQUENCE 序列码 INCREMENT BY n
                START WITH n
                MAXVALUE n | NOMAXVALUE
                MINVALUE  n | NOMINVALUE
                CYCLE | NOCYCLE
                CACHE n | NOCACHE

eg : CREATE SEQUENCE seq2
         START WITH 10
         INCREMENT BY 2
         MAXVALUE  10000
         NOCACHE;

序列的信息可以从数据字典user_sequences中获得。
eg: SELECT min_value,max_value,increment_by,last_number,cycle_flag FROM user_sequences 
        WHERE sequence_name = 'SEQ2';

序列的使用: SELECT seq2.nextval  from dual;

10.同义词 (synonym)
同义词本身不包含原有对象的数据或代码,它的作用只相当于指针。
ORACLE支持两种类型的同义词:私有同义词和公共同义词。
公共同义词一般有DBA创建,可以由所有用户使用。
例如:程序包DBMS_OUTPUT是属于特权用户SYS的,但是任何一个用户都可以直接使用,不用指定它所在的模式。

CREATE SYNONYM  同义词  for 用户名。对象
eg:CREATE SYNONYM sy_dept for scott.dept;

DROP SYNONYM  同义词;

select deptno,deptname from sy_dept;

同义词信息的查询:user_synonyms ,dba_synonyms, all_synonyms

user_synonyms 记录了当前用户的同义词,这个表的个列定义其意义如下:
SYNONYM_NAME
TABLE_OWNER
TABLE_NAME
DB_LINK

我们发现这有 一列db_link,这个主要是为跨数据库用的。
如果要创建远程数据库一张表的同义词,就需要先创建数据库连接来扩展访问然后创建同义词
create or replace synonym user1.table_name for user2.table_name@link

同义词使用的好处
 节省数据库表空间,对不同用户的操作同一张表没有多少差别,扩展的数据库使用范围,能够在不同的数据库之间实现无缝交互

那如何创建dblink,请参考我的另外一篇博客: http://blog.csdn.net/huluedeai/article/details/41985029

同义词和dblink的联系:如果要创建远程数据库一张表的同义词,就需要先创建数据库连接来扩展访问然后创建同义词
访问上有点区别。例如 select * from A@dblink ,select * from A (同义词可以直接访问)
是dblink一般是服务器级别的。 是服务器和服务器之间的关系。
同义词一般是表 ,视图等。

本篇是对 《oracle 11g数据库管理员指南》一书第一章的笔记。





你可能感兴趣的:(oracle)