约束命名规则

如果不指定约束名Oracle server 自动按照SYS_Cn 的格式指定约束名,也可手动指定,

推荐的约束命名是:约束类型_表名_列名。

NN:NOT NULL             非空约束,比如nn_emp_sal

UK:UNIQUE KEY         唯一约束

PK:PRIMARY KEY       主键约束

FK:FOREIGN KEY       外键约束

CK:CHECK                  条件约束

建表时约束定义的基本格式:

字段定义constraint 约束名约否类型(字段名)-->unique,primary key,check

字段定义constraint 约否名foreingn key (字段名)references 表名(字段名)--->foreign

1.定义各种不同的约束

--创建一个用于作外键的表tb_dept

SQL> CREATE TABLE tb_dept

2  (

3      deptno NUMBER(4) PRIMARY KEY,

4      deptname VARCHAR2(20),

5      loc VARCHAR(50)

6  );

--建表时创建约束,没有指定约束名,则系统将自动命名约束名

SQL> CREATE TABLE tb_constraint_1

2  (

3      empno NUMBER PRIMARY KEY,                    --主键约束

4      ename VARCHAR2(20) NOT NULL,                 --非空约束

5      email VARCHAR2(60) UNIQUE,                   --唯一约束

6      sal   NUMBER(5) CHECK(sal>1500),             --核查约束

7      deptno NUMBER(4) REFERENCES tb_dept(deptno)  --外键约束

8  );

--建表时指定了约束名

SQL> CREATE TABLE tb_constraint_2

2  (

3      empno NUMBER CONSTRAINT pk_tb_cons2_empno PRIMARY KEY,

4      ename VARCHAR2(20) CONSTRAINT nn_tb_cons2_empno NOT NULL,

5      email VARCHAR2(60) CONSTRAINT un_tb_cons2_email UNIQUE,

6      sal   NUMBER(5) CONSTRAINT ck_tb_cons2_sal CHECK(sal>1500),

7      deptno NUMBER(4) CONSTRAINT fk_tb_cons2_dept REFERENCES tb_dept(deptno) //外键的类型要和指定表的主键类型一致 且指定表的那个字段也要为主键

8  );

定义符合主键约束

--定义复合主键

SQL> CREATE TABLE tb_constraint_3

2  (

3      empno NUMBER,

4      ename VARCHAR2(20),

5      email VARCHAR2(20) UNIQUE,

6      CONSTRAINT pk_tb_cons3_empno_ename PRIMARY KEY(empno,ename)

7  );

.级联约束

CASCADE CONSTRAINTS子句在DROP COLUMN子句中使用

该子句会删除涉及到在已删除列上定义的主键或唯一关键字的所有引用完整性约束

该子句也将删除在已删除列上定义的所有多列约束

SQL> CREATE TABLE tb_cons3

2  (

3      empno NUMBER PRIMARY KEY,

4      sal   NUMBER ,

5      comm  NUMBER,

6      mgr   NUMBER,

7      CONSTRAINT fk_tb_cons3 FOREIGN KEY(mgr) REFERENCES tb_cons3(empno),

8      CONSTRAINT ck_tb_cons3_sal CHECK(empno > 0 AND sal > 0),

9      CONSTRAINT ck_tb_cons3_comm CHECK(comm > 0)

10  );

------------------------------------------------------------------------sp分割线----------------------------------------------------------------------------

--主键约束

primary key

--非空约束

not null

--检查约束

check()

--唯一约束

unique

--外键约束

foreign key(字段) references 外表命(字段)

--

constraint t_sp_pk primary key(t_id)

constraint t_sp_ck check(t_sex in ('男','女'))

constraint t_sp_uk unique(t_name)

create table t_sp

(

t_id varchar(50),

t_name varchar(50),

t_sex varchar(2),

t_age number(3),

t_bridate date,

s_id varchar(40),

constraint t_id_pk primary key(t_id,t_name),--2个同时做主键

constraint t_sex_ck check (t_sex in ('男','女')),

constraint t_age_ck check (t_age between 1 and 120),

constraint t_name_uk unique(t_name),

constraint t_sp_s_id_fk foreign key(s_id) references ss(s_id)

)

create table t_sp

(

t_id varchar(50) primary key ,

t_name varchar(50) unique ,

t_sex varchar(2) check(t_sex in('男','女')),

t_age number(3) check(t_age between 0 and 120),

t_bridate date,

s_id  varchar(40) references ss(s_id)

)

--

ss是另外一张表

外键使用 注意:

1:在子表中设置的外键字段在父表中必须是主键:

2:删除时 应先删除子表 再删除父表

不管约束强制性删除手段

drop table t_sp cascade constraint 不推荐使用

(今天建表的字段之间有空格 提示无效的字符)原来在oracle不支持空格啊!

修改 添加表 删除表字段 格式:

alter table 表名 add 新列列名 列数据类型    [default 0 not null]   (添加列默认值为0)

alter table 表名 drop 列名   (删除列)

alter table 表名 alter column 列名 新添加的数据类型  (修改列)

imp zhl/password@orcl file=d:\zhl.dmp full=y(直接cmd)

CREATE USER 姓名 IDENTIFIED BY 密码

grant all on 数据库名 to 用户名

drop USER  姓名(删除用户)

oracle建表6大约束,oracle 建表 约束 constraint相关推荐

  1. oracle11g创建表空间大文件,oracle11g创建表空间 sql语法

    --oracle 11g创建有限制大小的永久表空间 --create tablespace test --datafile 'F:\app\shan\product\11.2.0\dbhome_1\o ...

  2. oracle processes修改,修改oracle processes参数过大导致oracle启动不了解决方法

    由于系统偶尔会出现数据库连接异常,页面中已经有了数据库的关连接.后来发现oracle maximum(150) of processes的错误. 后来就将此值加大. 在dos下执行以下命令 C:/Do ...

  3. Oracle 10.2 概念 第一章 Oracle介绍

    Oracle 概念(Oracle 10.2) 1.Oracle介绍 本章提供了针对Oracle数据库服务器的概述,包含以下主题 l Oracle数据库体系结构 l Oracle数据库特点 l Orac ...

  4. oracle sql建表外键约束,Oracle外键约束修改行为(一)

    Oracle的外键用来限制子表中参考的字段的值,必须在主表中存在.而且在主表的记录发生变化导致外键参考唯一约束值发生了变化时,定义了一系列的动作. 在SQL92标准中定义了几种外键改变后,如何处理子表 ...

  5. oracle给表赋清空权限,oracle建表赋权限

    oracle建表赋权限 --创建表空间 create tablespace ya logging datafile 'D:\Oracle\product\10.2.0\oradata\oracle\y ...

  6. PowerDesigner,如何将Mysql数据库建表语句转化成Oracle数据库建表语句。

    在实际工作中,一张表,我们可能需要在Mysql数据库中建表,又要在Oracle数据库中建表.表中每个字段的数据类型.中文注释.是否可为NULL 问题,非常影响我们建表的效率.本篇文章,以Mysql数据 ...

  7. Oracle创建多个(大量)属性表,建表语句如下,案例是创建509个属性的表

    一.生成一个创建509个属性的表的sql语句 为表创建组件,属性的格式A1~A509,属性的的类型使用各种各样数据类型,下面就是sql脚本 CREATE TABLE "SCOTT" ...

  8. oracle自来水boss建表语句,SQL语句(建库、建表、修改语句)

    --创建一个数据库名为'sql_test' create database sql_test go --打开数据库 sql_test use sql_test go --建立学生表 create ta ...

  9. 【数据库1】mysql,DDL/DML,DQL,外键约束,多表/子查询,事务,登陆,连接池,jdbc,redis,crontab,ftp,oracle,数据交换/存储/收集

    文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化) 1.1 服务端:双击mysql-installer-community-5.6.22.0.msi 1.2 客户端:命令行 ...

最新文章

  1. 史上最强 NIO 框架,没有之一!!!
  2. 【NLP】自然语言处理 完整流程
  3. 故障排查:是什么 导致了客户端批量心跳超时掉线
  4. python编程学习做什么-什么样的人要学点python编程?请你对号入座
  5. 编程语言那么多,学哪个能拿高薪?
  6. sql server数据库性能的优化
  7. python编程技术总结_大数据技术学习之Spark技术总结
  8. python的logo图_Turtle绘画Python-logo
  9. mybatis学习笔记(五):mybatis 逆向工程
  10. Netcore 及SDK版本号问题
  11. 制作img镜像文件的5种方法
  12. 中国象棋博弈源代码Android,中国象棋源代码
  13. 【前端——补充学习】解决emos项目报错、路由、组件
  14. 2018年的好书基本都在这了,你一共读过几本?
  15. couch base使用记录
  16. 南卡和OPPO蓝牙耳机哪个更好?高性价比蓝牙耳机评测
  17. 有一个好的身体太重要了
  18. 猫喜欢吃鱼,可猫不会游泳,鱼喜欢吃蚯蚓,可鱼不会上岸;上帝给了你很多诱惑,却不会让你轻易实现!...
  19. 3090人工神经网络工作站配置
  20. 乾隆皇帝大年夜都吃啥?

热门文章

  1. 修改 Docker 的镜像存储位置
  2. elastic search与mysql的数据同步
  3. c语言编程题报文解析,C语言解析pcap文件得到HTTP信息实例
  4. Java多线程学习二十一:ConcurrentHashMap 在 Java7 和 8 有何不同
  5. Java连接MySQL8.0以上版本数据库方式
  6. java jdbc rowset_JDBC RowSet的使用
  7. Jenkins+GitLab+Docker+SpringCloud+Kubernetes实现可持续自动化微服务
  8. Java并发编程-synchronized底层原理
  9. 关于代码控制管理的一些想法
  10. 掌握需求过程阅读笔记六