1:创建一个主键

--创建一个表,有主键 create table studs( id varchar(32) primary key, name varchar(30) ); --主键也是数据库的对象 --在Oracle数据主加中,有很多的字典表,这些字典表中,保存了所有Oracle内部信息 --dba_xxx - 管理员,user_xxx select * from tab; select * from user_tables;

--查询这个用户的约束 select * from user_constraints;[保存了所有用户的约束。]

--知道主键的名称以后,可以删除这个表上的主键 alter table studs drop constraint sys_c006997;

insert into studs(name) values('Jack'); update studs set id ='S001'; --添加主键 时,如果id列有nill值,则添加主键失败 alter table studs add constraint studs_pk primary key(id);

主键同时是索引:user_indexes

希望知道,这个表的主键,在哪一个列:

不能为空 不能重复 同时是索引 一个表上,只能有一个主键,可以使用有一个列上,或是多个列上。

2:唯一约束 关键字:unique 特点: 1:唯一,不重复。 2:可以为null 3:同时是索引。

create table teac( id varchar(32) primary key, name varchar(30) unique, age int );

create table teac( id varchar(32) primary key, name varchar(30), age int, constraint teac_uq unique(name) );

alter table teac add constraint teac_uq unique(name);

insert into teac values('T001','Jack',33); insert into teac values('T003',null,44);

--查询这个约束 select * from user_constraints; --查询这个约束同时是索引 select * from user_indexes; --查询这个约束使用在哪一个列上 select * from user_cons_columns;

--可以禁用唯一约束 alter table teac disable constraint sys_c007003; --启动 alter table teac enable constraint sys_c007003;

--删除这个约束 DDL alter table teac drop constraint sys_c007003;

3:检查约束 check

desc teac;

insert into teac values('T004','Alex',-90);

--添加一个约束,约束年龄的范围 delete from teac; commit;

alter table teac add constraint taec_ck check (age>=1 and age<=100);

--在创建表时创建 create table t1( id int, age int check(age between 1 and 100) );

检查约束不是索引。

非null值约束 Not null;

默认值约束 Default

4:like模糊查询

5:事务 事务是保证数据操作正确的一种技术。

事务是指用户的一次操作,这一次操作来说,要码都成功,都失败。

在Oracle里, 事务的开始是:执行insert,update,delete. 事务的结束: 显式的结束 – commit,提交,生效。 Rollback 撤销,回滚。 隐式的结束 – DDL 默认是提交。 事务对DDL无效。事务只对DML有效。 1:事务的基本的操作

2:事务的保存点

3:事务的四个特性 事务的特性(ACID特性) A:原子性(Atomicity) 事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。 B:一致性(Consistency) 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 C:隔离性(Isolation) 一个事务的执行不能被其他事务干扰。 D:持续性/永久性(Durability) 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

隔离性 (所有数据库内在结构)

级别 isolation 值 脏读 read uncommitted 读取到了没有提交的数据 1 oracle不支持 幻读 read committed 读已提交 2 oracle的默认值 重复读 repeatable read 在同一个事务之内重复的读取前面读取到的数据。 4 oracle不支持 串行化 seri 同步 8 oracle的默认值

Oracle的内存结构: SGA,PGA

代码:安全shiro,spring security,性能,代码量

6:表关系 外键约束 foreign key RDBMS – 关系型数据库管理系统。

表关系是通过主键+外键关联实现的。

表关系: 1对多 一对一 多对多

用图来表示表的关系叫:Enty(表)-R(Relation关系)Mapping

1:一对多

如何创建外键:

create table persons( id varchar(32) primary key, name varchar(30), age int ); --车表-外表 create table cars( id varchar(32) primary key, name varchar(30), price number(10,2), pid varchar(32), constraint cars_fk foreign key(pid) references persons(id) ); E-R:

限制: 1:如果向子表中外表中写入数据,则pid可以为null,,如果不是null值,则这个记录,必须要在persons表中先出现。

2:如果要删除父表,主表中的记录,而子表中已经引用了某个id,则删除不成功

1:查询某个人,有什么车 – 关联查询 insert into persons values('P001','Jack',44); insert into cars values('C001','Audi',40.00,'P001'); insert into cars values('C002','Auto',1.2,'P001');

insert into persons values('P002','Mary',33); insert into cars values('C003','Buick',18,'P002');

insert into persons values('P003','Alex',22);

insert into cars values('C004','BMW',45,null);

--以下的查询用的SQL92标准 select p.name,c.name from persons p,cars c where p.id=c.pid;

使用SQL99的标准:建议使用 innser join 内联接: --SQL99标准 select p.name,c.name from persons p inner join cars c on p.id=c.pid;

2:查询没有车的人 连接的方式: 内联接 左外 – 以左 left [outer] join select p.name,c.name from persons p left join cars c on p.id=c.pid where c.name is null; 右外 --SQL99标准 select p.name,c.name from persons p right outer join cars c on p.id=c.pid;

全外

连接的方式: Inner join Left outer join Right outer join Full outer join

3:查询有N部车的人 --查询pid在cars中出现的次数 select pid from cars group by pid having count(pid)=2;

--子查询 - 以下的子查询叫非相关子查询 - 即子查询可以独立执行的子查询叫非相关的子查询 select * from persons where id in(select pid from cars group by pid having count(pid)=2);

--以下是相关子查询 - 子查询不能独立执行。 select * from persons where (select count(*) from cars where cars.pid=persons.id)=0;

2:多对多

create table students( id varchar(32) primary key, name varchar(30) );

create table course( id varchar(32) primary key, name varchar(30) );

create table sc( studid varchar(32), courseid varchar(32), constraint sc_pk primary key(studid,courseid), constraint sc_fk1 foreign key(studid) REFERENCES students(id), constraint sc_fk2 foreign key(courseid) references course(id) );

写入记录: insert into students values('S001','Jack'); insert into students values('S002','Mary'); insert into students values('S003','Alex');

insert into course values('C001','java'); insert into course values('C002','Oracle'); insert into course values('C003','Math');

insert into sc values('S001','C001'); insert into sc values('S001','C002'); insert into sc values('S002','C001');

1:查询某个选择了某课: select s.name,c.name from students s inner join sc on s.id=sc.studid inner join COURSE c on sc.COURSEID=c.id;

oracle表违反主键约束,主键/约束/事务/表关系 Oracle相关推荐

  1. 数据库元数据数据字典查询_5_列出给定表的主键、外键约束

    列出给定表的主键.外键约束 需求描述 需求:查询出给定的表emp的外键约束信息. 解决方法:通过各个数据库里提供的与外键约束相关的数据字典进行查询. 注: 数据库数据集SQL脚本详见如下链接地址 员工 ...

  2. oracle 其他用户表主键,Oracle中查看所有的表,用户表,列名,主键,外键

    在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 : select table_name from user_ ...

  3. oracle查询一张表的主键,Oracle查询表主键、外键

    Oracle查询表主键.外键 1. 查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,user_indexe ...

  4. Oracle数据库:约束条件:主键约束、唯一约束、检查约束、非空约束、外键约束、默认值填写

    Oracle数据库:约束条件:主键约束.唯一约束.检查约束.非空约束.外键约束.默认值填写 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开 ...

  5. 【2 - 数据库是如何存储数据的】Sql Server - 郝斌(字段、记录、表;图形化界面及sql语句建表;六种约束;一对一、一对多、多对多、数据库关系图;主外键)

    课程地址:数据库 SQLServer 视频教程全集(99P)| 22 小时从入门到精通_哔哩哔哩_bilibili 目录 数据库是如何解决数据存储问题的 1. 表的相关数据 2. create tab ...

  6. oracle主键约束删除,oracle删除主键查看主键约束及创建联合主键

    oracle删除主键查看主键约束及创建联合主键 1,主键的删除 ALTER TABLE TABLENAME DROP PRIMARY_KEY 执行上面的SQL可以删除主键:如果不成功可以用 ALTER ...

  7. oracle 主键约束重名,主键及主键索引的关系及相互影响

    主键的定义:列或多列的集合,用于唯一的标识表中的一行.一个表上只允许有一个主键. 我们在数据库中指定主键时,是通过主键约束来定义的.而创建主键约束时,又是需要有相应的索引来配合实现的.所以,本文的目的 ...

  8. SQL数据库语言基础之SqlServer数据表的六大约束(主键、外键、检查、非空、唯一性、默认值约束)的创建

    文章目录 一.主键约束(primary key) 二.外键约束(foreign key) 三.检查约束(check) 四.非空约束(not null) 五.唯一性约束(unique) 六.默认值约束( ...

  9. 已经建好的表添加唯一性约束、主键、外键约束

    unqiue约束用于强制非主键列的唯一性,允许存在空值(空值可以不唯一存在,空值永远不相等) ALTER TABLE 表明 ADD CONSTRAINT 约束名 UNIQUE(字段名); 约束名随便写 ...

最新文章

  1. 项目开发总结:前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
  2. proguard的简单配置说明
  3. 机器视觉 · 工业镜头
  4. Redis中的可用性保证之Sentinel服务下线
  5. Xcode模拟器和真机生成的日志查看(ios必知必会)
  6. java 模拟电梯_java模拟电梯运行简单实现,swing界面
  7. Python文件操作2
  8. android.os.parcelable,Android中Parcelable如可快速生成
  9. 错误代码1833 Cannot change column used in a foreign
  10. [POJ 1006] 生理周期
  11. DirectX12(D3D12)基础教程(十八)—— PBR基础从物理到艺术(中)
  12. 中州韵输入法 linux 小鹤双拼,‎App Store 上的“iRime输入法-小鹤双拼五笔郑码输入法”...
  13. 你知道哪些中国学生普遍生疏但意境很美的英语词汇?
  14. 阿里云kafka安装
  15. 【转】我们离大排面30元一碗还有多远?
  16. 《机器学习》学习笔记
  17. Cesium--模型(modle)的处理篇
  18. 小米应用闪退解决方法
  19. Java并发编程(一)——并发的基本概念
  20. 表白神器——Python画丘比特之箭穿心

热门文章

  1. html5 数据初始化,使用HTML5中的element.dataset操作自定义data-*数据
  2. 海神祭司被机器人拉出来_全联盟最不怕机器人钩子的四个英雄,最后一个巴不得被钩中...
  3. jdbctemplate无where条件查询_多表查询
  4. c++和c语言的区别_C与C++傻傻分不清楚,有啥区别,咋用,杂学?
  5. java 求最大公因数_求最大公约数的三种算法(java实现)
  6. 交叉编译openwrt php,交叉编译n2n,以openwrt为例子
  7. Modbus​协议​深入​讲解_NI
  8. 基于windows使用fabric将gitlab的文件远程同步到服务器(本地)
  9. 用百度AI的OCR文字识别结合PHP实现了图片的文字识别功能
  10. window.location和window.open的区别