数据库主要对象:
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"。