频道栏目
首页 > 数据库 > 其他综合 > 正文
oracle约束详解
2018-09-30 09:50:02      个评论      
收藏   我要投稿

一: SQL:

DDL: DML : DCL

table:

1:创建表:

create table tableName(

colname datatype [constraints],

colname datatype [constraints]

)

SELECT * FROM student;

2:约束:

(1)主键约束: primary key 唯一确定某条记录。

特点: a:主键字段不允许为null。

b: 值唯一,且默认在主键字段创建索引。

行级约束:主键在行的最后添加:

create table student01(

sid varchar2(18) primary key,--行级约束。

sname varchar2(20)

)

表级别的约束: 约束加在表的最后:

create table student02(

sid varchar2(18) ,

sname varchar2(20),

sex varchar2(3),

constraints PK_001 primary key (sid)

)

解释:表级别的约束,放在表的最后。

语法: constraints 约束的名称(自定义) 约束的具体类型 (column);

多个列联合做主键约束:

create table student03(

sid varchar2(18) ,

sname varchar2(20),

sex varchar2(3),

constraints PK_002 primary key (sid,sname)

)

(2)唯一值约束: unique 唯一值的列,数据库会默认创建索引。

作用: 列的值不允许重复。

create table student04(

sid varchar2(18) ,

sname varchar2(20) unique ,

sex varchar2(3),

constraints PK_003 primary key (sid)

)

表级约束:

create table student05(

sid varchar2(18) ,

sname varchar2(20) ,

sex varchar2(3),

constraints PK_004 primary key (sid),

constraints Un_001 unique (sname)

)

(3)check约束: 能够约束某个列的值在某个范围之内:

和check约束经常连用的运算符: in ,,not in

between and , not between and , like

--行级:

create table student06(

sid varchar2(18) ,

sname varchar2(20) ,

sex varchar2(3),

address varchar2(100) check ( address in ('北京','燕郊','大厂')),--行级别

constraints PK_005 primary key (sid)

)

--表级:

create table student07(

sid varchar2(18) ,

sname varchar2(20) ,

sex varchar2(3),

address varchar2(100) ,--行级别

constraints PK_006 primary key (sid) ,

constraints check_001 check ( address in ('北京','燕郊','大厂'))

)

(4)非空约束: not null 只有行级约束。 没有表级约束。

作用: 约束某个列的值不允许为空。

create table student08(

sid varchar2(18) ,

sname varchar2(20) not null,

age varchar2(3) not null ,

address varchar2(100) check ( address in ('北京','燕郊','大厂')),--行级别

constraints PK_008 primary key (sid)

)

---案例:

创建一个学生表, 主页字段,必须是https://开头。

学生的学号: 主键主键

学生的姓名: unique

学生的年龄: not null

学生的地址必须是北京,上海, 深圳。

学生的入学日期 毕业日期。

要去《 入学日期必须小于毕业日期。

create table student09(

sid varchar2(18) primary key ,--行级

sname varchar2(20) unique,

age varchar2(3) not null ,

address varchar2(100) check ( address in ('北京','上海','深圳')),--行级别

-- constraints PK_008 primary key (sid)

inschool date,

outschool date,

homepage varchar2(100),

--check约束:

constraints ch_002 check ( inschool < outschool ) ,

constraints ch_003 check ( homepage like 'https://%' )

)

(5)外键约束: 只能通过表级约束进行添加:

主键: 唯一确定某个记录:

主键表: 如果一个表当中存在主键字段,这样的表就是一个主键表。

外键表: 如果一个表的主键字段出现在了另外一个表当中,另外一个表就称之为外键表。

外键表当中应该定义外键约束。

作用: 描述表和表之间的关系:

语法:

constraints 外键的名称 foreign key (colname) references tableName(colname);

创建表:

主键表和外键表的创建顺序:

先创建主键表,再创建外键表。 外键表引用了主键表的主键字段。

删除:

先删除外键表,然后删除主键表。

--主键表:

create table dept01(

deptno number(2) primary key,

dname varchar2(10)

)

--外键表:

create table emp2(

empno number(2) primary key,

ename varchar2(10),

deptno number(2),--deptno字段做了外键: 引用了其他表的主键。 字段的名称可以不同。 但是字段的类型和大小必须相同

constraints FK_0011 foreign key (deptno) references dept01(deptno)

)

--表和表之间的关系: (重点)

一对一关系: stu id 设置一个表:

表设计的原则: 粗粒度。 表尽可能的少。

类的设计原则: 细粒度 。 实体类尽可能的多。

一对多的关系: user orders

外键约束:维护表和表之间的关系:

--创建主键表:

create table user01(

userid varchar2(10) primary key,

username varchar2(10)

)

--创建外键表:

create table orders01(

oid varchar2(10) primary key,

oname varchar2(10) not null,

--创建了一个外键字段: 引用了user01主键表当中的字段。

uuid varchar2(10) ,--定义了一个字段,充当外键。

--外键约束:

constraints FK_0012 foreign key (uuid) references user01(userid)

)

多对多的关系: student score

--创建一个student

create table student10(

stuid varchar2(10) primary key,

stuname varchar2(10)

)

--创建一个score:

create table score10(

scid varchar2(10) primary key,

scname varchar2(10)

)

---多对多 :创建第三张表来维护两个表之间的关系:

create table stu_score(

stuid varchar2(10),

scid varchar2(10),

constraints PK_0013 primary key (stuid, scid),

constraints FK_0013 foreign key (stuid) references student10(stuid),

constraints FK_0014 foreign key (scid) references score10(scid),

)

3: 表的修改:表的修改 是对表结构的修改,而不是表记录的修改。

表的修改: 包括列的添加, 列的删除, 列数据类型的修改,

约束的添加,约束的删除。

表的重命名操作。

语法: alter table tableName DDL(alter , create , drop ,modify )

(1)添加的添加:添加的列只能在表的最后追加。不能在中间插入。

create table stu(

sid varchar(10)

)

SELECT * FROM stu;

语法:

alter table tablename

add colname datatype;

--案例: 添加一个sname的字段:

alter table stu

add sname varchar2(10);

(2)列的删除:

alter table tablename

drop column colname;

--案例: 删除sname

alter table stu

drop column sname;

(3)列数据类型的修改。

数据类型进行修改的时候: 注意:

a: 修改的数据类型应该相兼容。

b: 修改数据类型的时候,数据类型的长度尽可能的不要索引。 容易引发错误。

alter table stu

modify colname datatype;

alter table stu

modify sid varchar2(20);

(4)添加约束:非null约束除外:

alter table tableName

add constraints 约束的名称 约束的具体的类型 (colname);

--给sid添加一个主键约束;

alter table stu

add constraints PK_1001 primary key (sid);

--添加其他的约束一样。 非null约束除外。

(5)添加非null约束:

alter table stu

modify sname varchar2(20) not null;

(6)删除约束: (not null除外)

alter table stu

drop constraints 约束的名称;

alter table stu

drop constraints PK_1001

(7)表的重新命名:

rename oldName to newName;

rename stu to student1;

SELECT * FROM stu;

student --->java的实体类: student 、、、

colume ---》java实体类当中的属性; sid sname

记录 ---->实例对象

点击复制链接 与好友分享!回本站首页
相关TAG标签 oracle 约束 详解
上一篇:EF操作mysql数据库记录
下一篇:mysql存储过程解析
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站