| 查看: 607 | 回复: 1 | |||
[交流]
【转帖】oracle辅导 已有1人参与
|
|
增加约束: alter table 表名 add constraint [约束名] 约束(字段); 只能够增加表级约束。 解除约束:(删除约束) alter table 表名 drop 约束; (对于主键约束可以直接用此方法,因为一张表中只有一个主键约束名, 注意如果主键此时还有其它表引用时删除主键时会出错) alter table father drop primary key cascade; (如果有子表引用主键时,要用此语法来删除主键,这时子表还存在只是子表中的外键约束被及联删除了) alter table 表名 drop constraint 约束名; (怎样取一个约束名: a、人为的违反约束规定根据错误信息获取! b、查询示图获取约束名!) 使约束失效或者生效 alter table 表名 disable from primary key; (相当于把一个表的主键禁用) alter table 表名 enable primary key; (enable 时会自动去检查表的记录是不是符合要求,如果有脏数据时必须要先删除脏数据才可以 enable) 更改表名 rename 旧表名 to 新表名; 删除表: trucate table 表名; (表结构还在,数据全部删除,释放表所占的空间,不支持回退,常用删除大表) 关于oralce中产生序列(sequence) create sequence 序列名; (不带参数时默认为从1 开始每次递增 1,oracle中为了提高产生序列的效率一般一次性产生20个序列放入当前会话的序列池中备用以加快效率,序列会出现不连续的动作回退操作不会影响序列取值) sequence 的参数: increment by n 起始值 start with n 递增量 maxvalue n 最大值 minvalue n 最小值 cycle|no cycle 轮回 cache n 缓存(第一次取时会一次取多少个id存起来) 查看sequence 示图: desc user_sequences ; select sequence_name , cache_size , last_number from user_sequences where sequence_name like 's_'; select 序列名.currval from dual 查看当前的序列数 select 序列名.nextval from dual 查看下一个序列数,它会自动给当前的序列加1 为列:nextval currval (开另一个session时取当前值不成功时,应该先取下一个值,再取当前值) 清空当前会话的内存: alter system flush shared_pool;(执行此命令要有DBA权限,一般用户执行出错) 修改序列:(此命令不常用,只需了解就行不必深究) alter sequence 序列名 修改项; 删除序列sequence drop sequence 序列名; 示图 创建示图: creating views 示图名; 示图就相当于一条select 语句,定义了一个示图就是定义了一个sql语句,示图不占空间,使用view 不会提高性能,但是能简单化sql语句 (扩展知识: oracle 8i 以后的新示图) MV 物化视图(占存储空间,把select 结果存在一个空间,会提高查询视图,增强实时性,但是存在刷新问题,物化示图中的数据存在延迟问题,主要应用在数据仓库中用要用于聚合表) 使用示图的好处:控制数据访问权限。 如何创建一个示图的例子: create or replace views test_vi as select * from test1 where c1=1; or replace的意义,如果view存在就覆盖,不存在才创建。 force|no force ,基表存在是使用,不存在是则创建该表。 此时往表test1(base table 基表)中插入数据时:表中没能变化,示图中的数据发生改变 从示图中插数据时相对应的表会发生改变: 往示图中插数据时,会直接插进基表中,查看示图中的数据时,相当于就是执行创建时的select语句。 限制对数据库的访问,简化查询。 简单示图:来自于单表,且select语句中不能包括函数,能进行DML操作。 复杂示图:来源于多张表,不能执行DML操作。 试图的约束 with read only 示图只读约束(O) with check option 不允许插入与where条件不符的记录,类似于check约束的功能(V) 在select from 后也可以使用子查寻,这个写法也叫做内嵌示图 例: select first_name,salary,avgsal from s_emp e,(select dept_id,avg(salary) avgsal from s_emp group by dept_id) s where e.dept_id=s.dept_id and e.salary>s.avgsal; 删除示图 drop views 示图名; |
» 猜你喜欢
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
假如你的研究生提出不合理要求
已经有6人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
不自信的我
已经有12人回复
所感
已经有4人回复
论文终于录用啦!满足毕业条件了
已经有28人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复

HowToSignUp
银虫 (初入文坛)
- 应助: 0 (幼儿园)
- 金币: 385.6
- 红花: 1
- 帖子: 24
- 在线: 8.4小时
- 虫号: 1486129
- 注册: 2011-11-10
- 专业: 计算机软件
2楼2012-12-09 17:47:31












回复此楼