设为首页 收藏本站
查看: 1684|回复: 0

[经验分享] oracle简单笔记学习3

[复制链接]

尚未签到

发表于 2016-7-18 07:08:18 | 显示全部楼层 |阅读模式
外键
被参照的表是主表

create table major_sun(--(主表,父表)被参照的表
mid number(2) primary key,
manmevarchar2(30)
);
insert  into major_sun values(1,'computer');
insert  into major_sun values(2,'music');
insert  into major_sun values(3,'movie');
create table student_sun(--(从表,子表)参照其他表的表
idnumber(5)primary key,
namevarchar2(20),
midnumber(2),
constraintstudent_mid_sun_fk foreign key(mid)
references major_sun(mid)
);

insert into student_sun values(101,'peter',1);
insert into student_sun values(102,'sun',3);
insert into student_sun values(103,'king',2);

select s.name,m.manme//外连接
from student_sun s join major_sun m on s.mid=m.mid
and s.name='sun';
试图增加一个学生记录,指定一个不存在的学生编码
insert into student_sun values(110,'adsd',10);
-----报错,没有找到父项关键字
-------表示在父表中没有编码为10的 专业
ORA-02291: integrity constraint (OPENLAB.STUDENT_MID_SUN_FK) violated - parent key not found
完整性约束openlan.这个外键被违反--父键没有找到

delete from major_sun where mid=1;--试图删除1专业
这样会导致数据不完整的,这样的删除是不允许的
ORA-02292: integrity constraint (OPENLAB.STUDENT_MID_SUN_FK) violated - child record found
子记录已经找到

--建立子表时,外键约束增加设定条件--(从表,子表)参照其他表的表
create table student_sun(
idnumber(5)primary key,
namevarchar2(20),
midnumber(2),
constraintstudent_mid_sun_fk foreign key(mid)
references major_sun(mid)
ondelete  cascade
);
cascade  是级联的意思,就是在删除外键的时候会把子表中的相关的元素也删掉
create table student_sun(
idnumber(5)primary key,
namevarchar2(20),
midnumber(2),
constraintstudent_mid_sun_fk foreign key(mid)
references major_sun(mid)
on delete set null
);
删除后把相关的元素设置成null数值
insert/delete/update
create   tablemydept_sun(
idnumber(2)primary key,
namevarchar2(20),
locactionvarchar2(20)
)
insert into mydept_sun
select  deptno,dname,loc from dept;
create table emp_sun(
id number(4)primary key,
namevarchar2(20),
deptnonumber(20)
)
insert into emp_sun values(1234,'perter',10);
insert into emp_sun(id,name,deptno)
select empno,ename,deptnofrom   emp where deptno=10;
-------完整复制一个表
create table emp_bak
as
select * from emp;
-----复制表结构,不复制数据
create table emp_bak   as
select * from emp
where 1=0;
-----update
update emp_sun set sal=1000
where empno=7369;---更改多个字段,set后使用,
update emp_sun set sal=1200,deptno=20,job='salesman'
where empno=7369
------delete
delete from emp_sun where deptno=30;
------------->事务dml与事务相关,,ddl操作会隐式的提交事务
开始于第一条dml语句
下一个事务的开始就是上一个事务的结束
显示的终止一个事务commit ,rollback   
事务特性,*原子性*一致性*隔离性*持久性
事务语句commit/rollback/savepoint
create table temp_sun(id numeber primary key)
insert into temp_sun values(1);
savepoint A;
insert into temp_sun values(2);
savepoint B;
insert into temp_sun values(3);
savepoint C;
insert into temp_sun values(4)
savepoint D;
rollback--->全没有了rollback to B还剩下两条1,2,之后的信息都没有了
----------数据库的主要对象
表table
视图view
索引index
序列sequence
约束条件
同义词
---------------视图
create  or  replace  view    v_emp_sun     as    select   ename,sal, deptno   from emp_sun;
--创建视图createviewv_emp_sun  as   select ename,sal, comm from emp_sun;
select * from v_emp_sun;
--->删除视图drop view v_emp_sun;
desc v_emp_sun;
-----数据字典
user_tables
user_viewsuser_constraints
desc user_tables;
select  table_name from user_table;
row num<20
select * from user_table
where table_name='EMP';----查emp表的信息
-----------看看视图的结构user_views
desc user_views
select textfrom user_views
where view_name='V_EMP_SUN';
---------->>>数据字典
user_tables:当前用户名下所有的表
all_tables:当前用户能访问的所有的表自己的表加上其他用户允许自己访问的表
dba_tables:数据库下所有的表
user_objects:对象
select distinct object_type from user_objects//table,index,sequence.....
select  count(*) from user_objects;user_tablesall_objectsall_tables;
---------视图的列名字不能用()
---------创建复杂视图
where view_name='V_EMP_SUN'
create or replace view emp_sum_sun
as
select deptno,sum(sal) sum_sal
from emp
group by deptno;

--------->索引
user_index 用户名下的索引
rowid是该条目所对 对应的oracleserver物理地址
当创建唯一约束的时候,索引自动创建
select constraint_name  from user_constraints
where table_name='asd';------查询索引名字

create index emp_sun_idx on
emp(ename);--在emp表上ename这个字段上建立索引叫做emp_sun_idx
单行函数这些是导致索引不可用的
表达式
隐式数据类型
like
not
isnull

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-245462-1-1.html 上篇帖子: oracle简单笔记学习2 下篇帖子: oracle查看死锁的会话
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表