以下纯属个人看书概括的一些oracle知识,方便日后查看
- 数据库主要对象:
- 1、DDL语句包括create/alter/truncate/drop等命令,分别用来创建、修改、截取、删除数据库对象。
- 2、number(p,s):p表示数字的总位数,s表示小数点后的位数。
- 3、date默认显示格式为DD-Mon-RR,timestamp默认显示格式为DD-Mon-RR HH12.MI.SS AM。存储大批量字符用clob、long/longraw,二进制的大数据用blob、bfile。
- 4、Oracle的sql环境下没有布尔类型,只能用char或数字“1”、“-1”代替。
- 5、表的字段名称长度最多为30个字符,且不允许有空格和符号“*”。
- 6、数据字典信息:(1)DBA_**:指整个数据库包含的对象信息;如 DBA_TABLES(数据库中全部数据表)、DBA_OBJECTS(数据库中全部对象)、DBA_DATA_FILES(数据库的数据文件信息)
- (2)ALL_**:指用户可以访问的对象信息;ALL_TABLES(数据库中用户能够访问的数据表)、ALL_INDEXES(数据库中用户能够访问到的索引对象)、ALL_OBJECTS(数据库中用户能够访问到的所有对象)
- (3)USER_**:指用户自己方案的对象信息,USER_TABLES(数据库中用户自己方案下的数据表)、USER_VIEWS(数据库中用户方案下的视图)、USER_OBJECTS(数据库中用户方案下的所有对象)。
- USER_TABLES指登录用户自己方案中的表,ALL_TABLES指用户可访问的表,DBA_TABLES指数据库中全部的表。
- 7、查询数据字典用DICT,如:select table_name,comments from dict where table_name like '%CONSTRAINT%';
- 8、在其他用户下建表用create table 用户名.表名{},但该用户必须具备create any table的权限。
- 表:
- 9、创建表时给某字段指定默认值用default,如:sex char(2) default '女'。
- 10、根据子查询创建表,(1)当数据类型与子查询中的列相同时用"create table 新表名 as select 源字段名 from 源表名";(2)当它们不相同时"create table 新表名(新字段名,……) as select 源字段名 from 源表名"。
- 11、给表增加列用"alter table 表名 add",修改列用"alter table 表名 modify",删除列用"alter table 表名 drop"。
- 12、修改列名用"alter table 表名 rename column 字段名 to 新字段名",修改表名用"rename 表名 to 新表名"。
- 13、truncate table:删除表数据,保留表结构,不可恢复,会清除表中所有数据,这个操作不能撤销;
- delete table:删除表数据,可恢复,每次删除都会在事务日志中记录删除动作,在undo segment中保存删除的信息;drop table:删除表,不可恢复。
- 14、给表加注释:"comment on table 表名 is '某某表'";给列加注释:"comment on column 表名.字段名 is '要写的注释'"。
- 15、数据字典可以查看数据表信息,如查询数据字典USER_OBJECTS:"select object_name from user_objects where object_type = 'TABLE'"。
- 约束:
- 16、约束条件是依附于表,可以在建表时创建,也可以在建表后创建,名字可以由用户指定,oracle系统默认按照SYS_Cn的格式命名,n是一串数字。分为列级约束和表级约束。
- 17、列级约束是跟在列定义后边的约束,非空只能定义在列级,如:name varchar2(30) not null;其他可以定义在列级或表级。
- 18、非空(not null):用于确保字段值不为空;唯一(unique):该列的值不允许重复,但允许是null值;主键(primary key):不允许有空值,也不允许有重复值;外键(foreign key):用于维护表间的
- 关联关系;检查(check):用于强制字段上的值满足所定义的限制条件。
- 19、给表建立主键约束条件:(1)建表同时建列级主键约束(在列名后),系统会自动给该约束命名,如create table 表名(字段名 字段类型 primary key)。
- (2)建表同时建表级主键约束(在建表结构最后一行),自定义约束名,如create table 表名(字段名,……,constraint 表名_字段名_pk primary key(字段名))。
- (3)建表后建表级主键约束(在建表结构的外面一行),自定义约束名,如create table 表(字段名);alter table 表名 add constraint 表名_字段名_pk primary key(字段名)。
- 20、联合主键:多个字段的组合不允许重复且为能为空,如:alter table 表名 add constraint 表名_字段名_pk primary key(first_name,last_name)。。
- 21、外键约束条件的两个数据约束:(1)子表上定义的外键的列值,必须从主表被参照的列值中选取,或者为null;
- (2)当主表参照列的值被子表参照时,主表的该行记录不允许被删除。
- 22、检查(check),如:alter table employees add constraint employees_salary_check check (salary>800)。
- 23、禁用约束条件:批量导入数据时,为了避免约束检查影响导入速度,可以暂时让约束失效,禁用约束,如alter table 表名 disable constraint ……;启用约束,如enable constraint ……。
- 24、修改约束名用"alter table 表名 rename constraint 约束名 to 新约束名",删除约束条件用"alter table 表名 drop constraint ……"。
- 视图
- 25、视图本身并不包含数据,它只是基表数据的逻辑映射。视图作用:如果经常在多个表上执行复杂查询,就可以基于这个复杂查询建立视图,此后查询视图即可。
- 26、ROWNUM用于返回标识行数据顺序的数字;ROWID用于唯一的标识行,间接给出表中记录的物理位置;它们都被称为伪列。
- 27、创建视图:"create view 视图名(列名) as……";修改视图:"create or replace view 视图名";删除视图:"drop view 视图名"。
- 索引
- 28、索引相当于名单列表 ,便于查找某个人。注意DML操作会导致oracle更新索引,相当于增加DML操作的处理时间,所以并不是表上的索引越多越好。
- 29、表中定义了主键约束或者唯一约束,oracle会在相应的约束列上自动创建唯一索引。
- 30、复合索引也叫多列索引,是基于多个列的索引,如"create index 索引名 on 表名(列名1,列名2……)"。
- 31、创建索引:"create index 索引名 on 表名(列名)";重建索引:"alter index 索引名 rebuild";删除索引:"drop index 索引名"。
- 序列
- 32、序列通常按递增或递减顺序来自动产生表的主键值。序列中有两个伪例nextval和currval,分别用来获取序列的下个值和当前值,创建序列后,第一次只能用nextval,以后才能用currval。
- 33、创建序列:"create qequence 序列名 start with 起始数据 increment by 步进";修改序列:"alter sequence 序列名 increment by 步进 maxvalue 最大值";删除序列:"drop sequence 序列名"。
- 同义词
- 34、同义词是为了数据库对象的安全创建别名,作用:(1)简化sql查询;(2)隐藏数据库对象的信息。
- 35、创建公共同义词:"create public synonym 同义词名 for 表名";创建私有同义词:"create synonym 同义词名 for 表名";删除公共同义词:"drop public 同义词名"。
- 36、sql/plus中检查视图的结构和表使用desc。
- 37、数据字典中查看视图,如:"select object_name from user_objects where object_type='view'"。查看索引,如:"select index_name from ind where table_name='表名'。
- 查看序列,如:"select min_value,max_value,increment_by,cache_size from seq where sequence_name='表名'"。查看同义词,如:"select synonym_name,table_owner,table_name from syn"。