一 oracle表和对象基础维护笔记

1.1 常见概念

1.2 创建表

1.3 表常见字段

1.4 增加或删除字段

1.5 更新字段

1.6 重命名表

1.7 改变表存储表空间和存储参数

1.8 删除表

1.9 表注释

1.10 分区表的管理

1.11 常用数据字典

二 约束

2.1 非空约束

2.2 主键约束

2.3 唯一性约束

2.4 外键约束

2.5 约束管理

三 索引

3.2 创建索引

3.3 改变索引存储参数

3.4 重建索引

3.5 索引碎片整理

3.6 删除索引

3.7 数据字典

四 视图

4.1 建立视图

4.2 视图授权

4.3 删除视图

五 同义词

5.1 创建同义词

5.2删除同义词

六 序列

6.1 建立序列

6.2 删除序列

1.1 常见概念

表命名规范:不能超过30个字,只能有数字,字母,_,#组成,$

1.2 创建表

create table [schema.]table (column datatype [default expr]);

使用子查询创建表

create table table

[(column,column…)]

as subquery;

---创建表

create table cw1(

name varchar2(25) not null,

id number

)

insert into cw1(name,id) values('cw',1);

create table cw2

as select * from cw1;

1.3 表常见字段

varchar2(size)  最大4000字节

char(size)   最大2000字节

number(p[,s])   p总长度,s小数位

date

long    最大可到2G

CLOB   最大可以到4G

RAW and LONG RAW   二进制数据,最大2000字节,2G

BLOB  二进制数据,最大可达到4G

BFILE   存储外部文件的二进制数据,最大可达到4G

ROWID   行地址

create table cw3(

name varchar2(10),

sex char(4),

deptid number(10),

create_date date,

card_id long,

picture blob,

file_id bfile)

--插入数据

insert into cw2(name,id,age,cardid) values('cw1',3,19,'12345');

insert into cw2(name,id,age,cardid) values('cw1',4,20,'242345');

insert into cw2(name,id,age,cardid) values('cw1',5,21,'123322225');

insert into cw2(name,id,age,cardid) values('cw1',6,22,'1242234545');

insert into cw2(name,id,age,cardid) values('cw1',7,23,'1252342345');

insert into cw2(name,id,age,cardid) values('cw1',8,24,'124234245');

insert into cw2(name,id,age,cardid) values('cw1',9,25,'133223445');

insert into cw2(name,id,age,cardid) values('cw1',10,26,'32123345');

1.4 增加或删除字段

alter table employees add(age number(2));

--添加字段

alter table cw2  add(age number(2));

alter table cw2  add(cardid varchar(10));

--删除字段

alter table cw2 drop(cardid );

1.5 更新字段

alter table table_name modify column_name type;

--更改表字段:

alter table cw2 modify(age char(10));

---如果表里面存在数据,需要修改为其它类型数据,会报错

SQL> alter table cw2 modify(age char(10));

alter table cw2 modify(age char(10))

ORA-01439: column to be modified must be empty to change datatype

SQL>

---更改同类数据类型正常

SQL> alter table cw2 modify(age number(10));

Table altered

SQL>

注意:如果是需要修改数据字段类型,需要先处理表里面数据,然后再更改类型。

1.这种方法能满足需求,因新增字段默认添加到表末尾,有可能发生行迁移,对应用程序会产生影响

2.第二种方法,是增加一个与被修改的列类型一样的列,之后将要修改列的数据复制到新增的列并置空要修改的列,之后修改数据类型,再从新增列将数据拷贝回来,该过程涉及两次数据复制,如果是数据量很多,会比较慢同时也会产生很多undo和redo;优点是数据不会发生行迁移。

1.6 重命名表

alter table  XXX RENAME to  xxxxx;

----重命名表

SQL> alter table cw2 rename to cw4;

Table altered

SQL>

---如果带schema,那么会报错,需要去掉后面的schema

SQL> alter table system.cw4 rename to system.cw2;

alter table system.cw4 rename to system.cw2

ORA-14047: ALTER TABLE|INDEX RENAME may not be combined with other operations

SQL>

---带schema更改如下:

SQL> alter table system.cw4 rename to cw2;

Table altered

SQL>

1.7 改变表存储表空间和存储参数

1.8 删除表

删除表:drop table_name;

SQL> drop table system.cw2;

Table dropped

SQL>

删除表数据:

truncate

delete

区别:1.truncate无法rollback

2.truncate 不能触发任何delete触发器

-----delete删除数据

SQL> select * from cw3;

NAME                     ID AGE   CARDID

-------------------- ------ ----- ----------

cw1                       3 19    12345

cw1                       4 20    242345

cw1                       5 21    123322225

cw1                       6 22    1242234545

cw1                       7 23    1252342345

cw1                       8 24    124234245

cw1                       9 25    133223445

cw1                      10 26    32123345

8 rows selected

SQL> delete from cw3;

8 rows deleted

SQL> select * from cw3;

NAME                     ID AGE   CARDID

-------------------- ------ ----- ----------

SQL> rollback;

Rollback complete

SQL> select * from cw3;

NAME                     ID AGE   CARDID

-------------------- ------ ----- ----------

cw1                       3 19    12345

cw1                       4 20    242345

cw1                       5 21    123322225

cw1                       6 22    1242234545

cw1                       7 23    1252342345

cw1                       8 24    124234245

cw1                       9 25    133223445

cw1                      10 26    32123345

8 rows selected

SQL>

----delete

----truncate删除数据

SQL> truncate table cw3;

Table truncated

SQL> rollback;

Rollback complete

SQL> select * from cw3;

NAME                     ID AGE   CARDID

-------------------- ------ ----- ----------

SQL>

----truncate

1.9 表注释

comment on table employees IS '测试';

---添加表测试记录

SQL> comment on table cw3 is '测试';

Comment added

SQL> desc cw3;

Name   Type         Nullable Default Comments

------ ------------ -------- ------- --------

NAME   VARCHAR2(20) Y

ID     NUMBER(5)    Y

AGE    CHAR(5)      Y

CARDID VARCHAR2(10) Y

SQL> select * from dba_tab_comments where table_name='CW3';

OWNER                          TABLE_NAME                     TABLE_TYPE  COMMENTS

------------------------------ ------------------------------ ----------- --------------------------------------------------------------------------------

SYSTEM                         CW3                            TABLE       测试

SQL>

1.10 分区表的管理

分区表的有点:

分区表的分区方法:

范围分区:

hash分区

列表分区

复合分区(范围+hash)(范围+列表)

create table cw_part1(

name varchar(20),

id number(5),

age char(5),

cardid varchar(10))

partition by range(age)

(partition age_1 values less than (22),

partition age_2 values less than(24),

partition age_3 values less than(26))

as select name,id,age,cardid from cw2;

----分区表

SQL> select * from cw_part partition(age_3);

NAME                     ID AGE   CARDID

-------------------- ------ ----- ----------

SQL> insert into cw_part(name,id,age,cardid) values('cw2',11,25,'232432');

1 row inserted

SQL> select * from cw_part partition(age_3);

NAME                     ID AGE   CARDID

-------------------- ------ ----- ----------

cw2                      11 25    232432

SQL> select * from cw_part partition(age_1);

NAME                     ID AGE   CARDID

-------------------- ------ ----- ----------

cw2                      11 20    232432

SQL> select * from cw_part partition(age_2);

NAME                     ID AGE   CARDID

-------------------- ------ ----- ----------

SQL> select * from cw_part partition(age_3);

NAME                     ID AGE   CARDID

-------------------- ------ ----- ----------

cw2                      11 25    232432

----分区表

1.11 常用数据字典

all_col_comments

user_col_comments

all_tab_comments

user_tab_comments

二 约束

2.1 非空约束

not null

--添加非空

SQL> alter table cw2 add(key varchar(2) not null);

alter table cw2 add(key varchar(2) not null)

ORA-01758: table must be empty to add mandatory (NOT NULL) column

SQL> select * from cw1;

NAME                              ID

------------------------- ----------

cw                                 1

SQL> truncate cw1;

truncate cw1

ORA-03290: Invalid truncate command - missing CLUSTER or TABLE keyword

SQL> truncate table cw1;

Table truncated

---如果表为空,那么可以添加成功

SQL> alter table cw1 add(key varchar(2) not null);

Table altered

SQL>

---

2.2 主键约束

primary key

create table cw(name varchar constraint pk_name primary key,id number);

----添加主键

SQL> alter table cw2 modify(id number(5) primary key);

Table altered

SQL> select * from cw2;

NAME                     ID AGE   CARDID

-------------------- ------ ----- ----------

cw1                       3 19    12345

cw1                       4 20    242345

cw1                       5 21    123322225

cw1                       6 22    1242234545

cw1                       7 23    1252342345

cw1                       8 24    124234245

cw1                       9 25    133223445

cw1                      10 26    32123345

8 rows selected

SQL> insert into cw2(id) values(5);

insert into cw2(id) values(5)

ORA-00001: unique constraint (SYSTEM.SYS_C006975) violated

SQL>

----

2.3 唯一性约束

unique

create table cw(name varchar 2(20),

id number

constraint unique_name unique(name)

);

-----唯一索引

SQL> create unique index unique_age on cw2(age);

Index created

SQL> insert into cw2(id,age) values(11,20);

insert into cw2(id,age) values(11,20)

ORA-00001: unique constraint (SYSTEM.UNIQUE_AGE) violated

SQL>

----

2.4 外键约束

foreign key

create table cw(

id number,

name varchar2(20)

constraint fk_cw foreign key(id) references dept(id)

);

2.5 约束管理

修改

alter table cw drop constraint  unique_name;

alter table cw add constraint  unique_name unique(name);

停止启用

alter table cw disable constraint unique_name;

alter table cw enable constraint constraint_name;

-----约束停止

-----

三 索引

3.1 索引概述

索引的有点:
 加快查询,减少Io操作,消除磁盘排序

索引种类:

唯一索引

位图索引

散列索引

函数索引

3.2 创建索引

创建索引时,需要制定索引参数

create index index_name on table_name(field_name)

  tablespace tablespace_name

  pctfree 5

  initrans 2

  maxtrans 255

  storage

  (

  minextents 1

  maxextents 16382

  pctincrease 0

  );

tablespace 表空间 --指定建立对象的表空间 pctfree 5

--块预留5%空间用于以后数据更新

initrans 2 --初始化事务槽数

maxtrans 255 --最大事务槽数

storage--下面是存储参数

initial 64K --初始化扩展区为64k next 1M

--下次扩展1m

minextents 1 --最小区数为1

maxextents 16382 --最大区数无限制 );

创建唯一索引

create unique index dept_unique_idx on dept(dept_no) tablespace idx_data;

创建位图索引:

create bitmap index idx_bitm on cw(id) tablespace idx_data;

创建函数索引:
create index idx_fun on emp (upper(ename)) tablespace idx_data;

3.3 改变索引存储参数

alter index unique_name

pctfree 30

storage(next 200k pctincrease 20);

3.4 重建索引

alter index unique_name rebuild tablespace indx;

----重建索引---

SQL> alter index unique_age rebuild;

Index altered

SQL>

-----

3.5 索引碎片整理

alter index cw_id_idx coalesce;

---碎片整理

SQL> alter index unique_age coalesce;

Index altered

SQL>

---

3.6 删除索引

drop index hr.deptartments_name_idx;

需要注意,如果有外键,是无法删除的,需要先禁止外键,然后再删除。

drop table cw cascade constraints;

truncate cw stores;

alter table cw disable constraint fk_cw;

------

SQL> drop index unique_age;

Index dropped

SQL>

---

3.7 数据字典

dba_indexes

dba_ind_columns

dba_ind_expressions

v$object_usage

四 视图

4.1 建立视图

create view temp_cw as select * from cw;

可以创建制度

create view temp_cw as select * from cw

with read only;

4.2 视图授权

grante create view to chenwei;

4.3 删除视图

drop view cw;

五 同义词

同义词优点:

简化SQL语句

隐藏对象的名称和所有者

提供对象的公共访问

分为:公有同义词,私有同义词

5.1 创建同义词

create public synonym table_name from chenwei.cw;

5.2删除同义词

drop public synonym chenwei.cw;

六 序列

6.1 建立序列

create sequence seq_cw

increment by 10

start with 10

minvalue 10 nomaxvalue

查询序列:

select seq_cw.nextval from dual;

访问序列:

当前值: CURRVAL

下一个:NEXTVAL

6.2 删除序列

drop  sequence seq_cw

6.3 修改序列

alter sequence cw_seq maxvalue 5000 cycle;

转载于:https://blog.51cto.com/chenwei/1695746

oracle表和对象基础维护笔记相关推荐

  1. Oracle表空间管理和维护

    1 表空间概念 在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成.一个数据库由对 ...

  2. Oracle PL/SQL语句基础学习笔记(上)

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...

  3. 对应oracle生成java对象,Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件...

    [前面的话] 身体慢慢已经快好了,感觉真好,哈哈. 这篇文章要通过Hibernate对数据库进行操作,而Netbeans可以直接通过数据库逆向生成对应的映射文件.基础文章,选择性阅读. [步骤] 1. ...

  4. oracle 表复制 long,【学习笔记】Oracle数据库使用copy实现long类型转移表空间案例 ORA-00997...

    天萃荷净 使用copy实现long类型转移表空间,表空间的数据文件损坏,在转移该表空间相关表时,遇到让人郁闷的long类型.不能使用ctas和move来实现转移,最后通过古老的copy来实现该项工作. ...

  5. java 哈希表和向量_Java基础知识笔记(一:修饰词、向量、哈希表)

    一.Java语言的特点(养成经常查看Java (1)简单性:Java语言是在C和C++计算机语言的基础上进行简化和改进的一种新型计算机语言.它去掉了C和C++最难正确应用的指针和最难理解的多重继承技术 ...

  6. Oracle PL/SQL语句基础学习笔记(下)

    游标 游标: 游标(cursor)可以被看作指向结果集(a set of rows)中一行的指针(pointer).在oracle数据库中可以使用显示或隐式两种游标. 1.隐式游标 在执行一个sql语 ...

  7. oracle删表分区同时维护索引,有关Oracle表分区进行(DML)维护后对索引的影响的分析...

    对索引的几种情况分别进行总结:1.如果删除分区,则会导致该表下所有的索引状态处于不可用状态(除本地前缀索引外):2.如果重命名表,同上3.如果truncate分区数据,同上:4.重命名分区,不会对索引 ...

  8. Oracle 10g sql 入门基础知识 笔记 第一部分

    1.orcale 数据库 DDL 定义语言  create drop  DML 操作语言  insert  delete update DCL 控制语言  grant revoke  commit o ...

  9. Linux基础维护——笔记

    X window与命令模式(终端界面)的切换: 系统中以F1~F6命名为tty1~tty6的操作界面,使用ctrl+shift+F1~6来登录 ctrl+shift+F7 进入图形界面桌面 查看系统的 ...

最新文章

  1. Verilog初级教程(20)Verilog中的`ifdef 条件编译语句
  2. 微信 php post json,微信企业号:如何POST JSON数据发送消息给企业号成员
  3. 牛客网-斐波那契数列
  4. Web前端好不好学?Web前端要学些什么呢?
  5. MSSQL 如何实现 MySQL 的 limit 查询方式【转存】
  6. risc系统服务器,精简的高端 解析四大RISC服务器处理器
  7. 通过负载均衡器+域名实现容灾切换-(8)基于DNS解析的GSLB在BS架构中应用实践(转)(2)...
  8. 技术领导者携力为数据中心和其它市场带来开放的加速架构
  9. cocos2dx标准容器_cocos2dx基础篇(5)——浅析几个重要类
  10. 51单片机led灯闪烁程序C语言,51单片机控制led灯闪烁程序
  11. 有道云笔记语音速记功能体验:让你在移动办公中解放双手
  12. React-Native 相关
  13. 【海洋女神原创】关于installshield“完美卸载”的改进方法
  14. Angular2.x
  15. DTU是什么 DTU种类及应用领域分析
  16. Linux显示以log结尾的日志文件
  17. u盘内容无故消失了怎么恢复 u盘恢复数据怎么操作
  18. 用telnet+openocd+jtag_dpi+vcs仿真调试RISCV的cpu
  19. node.js毕业设计安卓电子阅读器APP(程序+APP+LW)
  20. 网络设置巨形帧_NAS的巨型帧(Jumbo_Frame)设置对其传输速度的影响的评测与分析...

热门文章

  1. iar atof 问题
  2. ping命令 仿源码实现 以及几个 命令的 使用
  3. java工作笔记017---java8新特性_使用lamda表达式进行List分组_排序_去重_随时更新
  4. Android异常总结---type Status report message HTTP method GET is not supported by this URL
  5. 关于bn层的进一步认识
  6. vc 2010 下打包dll 的问题
  7. 杭电1799循环多少次?
  8. JAVA中文件指针复位到文件开头
  9. vc下禁止按钮连续点击的方法
  10. 嵌入式电路设计(51单片机电路设计)