三、删除表

truncate table 表名   //删除表中的所有数据,速度比delete快很多,截断表

delete from table 条件   // 删除表中的数据

drop table 表名        //删除表

四、Oracle中约束条件

每个标题都默认表先drop table后create table

1.not null 非空约束

create table person( pid number, name varchar2(20) not null);

insert into person(pid,name) values(1,'zhangsan');

--成功插入

insert into person(pid,name) values(1,'');

--错误的数据,name为null的数据会收到约束限制,无法插入。

2.primary key 主键约束

create table person( pid number primary key, name varchar2(20));

insert into person(pid,name) values(1,'zhangsan');

--成功插入

insert into person(pid,name) values(1,'lisi');

--主键重复了,插入失败

3.unique 唯一约束,值不能重复(空值除外)

电话不重复

create table person( pid number primary key, name varchar2(20), tel varchar2(20) unique);

insert into person(pid,name,tel) values(1,'zhangsan','1234567890');

--成功插入

insert into person(pid,name,tel) values(2,'lisi','1234567890');

--电话重复,操作失败

4.check 条件约束,插入的数据必须满足某些条件

例如限制年龄的输入

create table person( pid number primary key, name varchar2(20), tel varchar2(20) not null unique, age number check(age between 0 and 150));

insert into person(pid,name,tel) values(1,'zhangsan','1234567890',30);

--成功插入

insert into person(pid,name,tel) values(2,'lisi','1111111',160);

--年龄输入错误

5.foreign key 外键

例如:有以下一种情况:一个人有很多本书

create table book(bid number primary key not null,name varchar2(30),pid number);

如果使用了以上的表直接创建,则插入下面的记录有效:

insert into book(bid,name,pid) values(1001,'oracle',15);

以上的代码没有任何错误但是没有意思,因为一本书应该只属于一个人,所以在此处的pid应该对应person表中的记录。

此时就需要外键,修改book表结构

create table book( bid number primary key not null, name varchar2(30),  pid number references person(pid)) on delete cascade

--on delete cascade级联删除

--建立约束:book_pid_fk,与person表中pid为主-外键关系

--constraint book_pid_fk foreign key(pid) references person(pid));

insert into book(bid,name,pid) values(1001,'oracle',15);

6.级联删除

接上面5的案例,如果一个人的人员信息没有了,那么此人所拥有的书还应该存在么?

正常来说,如果person中的一条信息没有了,则对应的book中的数据也应该同时消失。

在之前的结构上执行delete语句,删除person表中一条记录:

delete from person where pid=12;

提示删除失败:因为book中存在此项的关联,如果person表中的一条数据删除了,则一定会影响到book表中数据的完成性,

所以不让删除。

如果非要删除,则应该删除book表中的对应数据,之后再删除person表中对应的数据。

此时如果想完成删除person表的数据同时删除book表中的数据,则必须使用级联删除。

在建立外建的时候必须指定级联删除(on delete cascade)

create table book( bid number primary key not null, name varchar2(50),  pid number CONSTRAINT book_pid_fk FOREIGN KEY(pid) REFERENCES person(pid) on delete cascade);

为新表添加约束条件

--person

create table person( pid number, name varchar2(30), tel varchar2(50), age number);

--book

create table book( bid number, name varchar2(30), pid number);

以上两张表中没有任何约束,下面通过alter命令为表添加约束

1.为两个表添加主键

person表pid为主键

alter table person add constraint person_pid_pk primary key(pid);

book表bid为主键

alter table book add constraint book_bid_pk primary key(bid);

2.为person表中的tel添加唯一约束

alter table person add constraint person_tel_uk unique(tel);

3.为person表中的age添加检查约束

alter table person add constraint person_age_ck check(age between 0 and 150);

4.为book表中的pid添加与person的主--外键约束,要求带级联删除

alter table book add constraint person_book_pid_fk foreign key(pid) references person(pid) on delete cascade;

7.删除约束

alter table person drop constraint unique(tel);

alter table book drop constraint person_book_pid_fk;

8.启用约束

alter table book enable constraint person_book_pid_fk;

9.禁用约束

alter table book disable constraint person_book_pid_fk;

练习作业:

1.创建一张表student

id number

name varchar2(20)

age number(5)

tel varchar2(15)

给id字段添加主键约束

给name字段添加非空约束

给age字段添加check约束(18-35)

给tel添加唯一非空约束

create table student( id number primary key, name varchar2(20) not null, age number(5) check(age between 18 and 35), tel varchar2(15) unique not null);

2.创建一张学员兴趣表hobby

id number(10)

hobby_name varchar2(20)

sid number --学生id

给sid字段添加外键约束,并且要带级联删除

create table hobby( id number(10), hobby_name varchar2(20), sid number references student(id) on delete cascade);

3.删除掉student表中tel字段的唯一约束(先写出查看该表约束的sql)

select constraint_name,constraint_type from all_constraints where user_table=upper('student');alter table student drop constraint unique(tel);

4.手动添加student表中tel字段的唯一约束(约束名为:my_constraint_1)

alter table student add constraint my_constraint_1 unique(tel);

5.禁用约束my_constraint_1

alter table student disable constraint my_constraint_1;

6.启用约束 my_constraint_1

alter table student enable constraint my_constraint_1;

-

oracle修改表字段约束条件,Oracle创建表、修改表、删除表、约束条件语法相关推荐

  1. oracle 建表字段设置,Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结...

    关于Oracle创建表.删除表.修改表(添加字段.修改字段.删除字段)语句的简短总结. Oracle创建表: create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字 ...

  2. oracle修改表字段名备注_oracle 增加修改删除表字段,添加修改表、以及表中字段的备注...

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); 修改字段的语法:alter ...

  3. 修改表字段属性_使用postman修改SAP Marketing Cloud contact主数据

    Marketing Cloud里的contact主数据,创建成功后也不是所有字段都能够被修改.在Personal data区域的字段是可以被修改的. 比如我在"客户属性"字段里维护 ...

  4. Oracle应用之修改表字段类型

    Mysql对于有数据和没数据的表字段类型都可以随意修改,不过oracle就不一样. 假如表A有个字段a,本来为number类型,然后我们想修改为varchar2类型. (1)字段a没数据的情况,改为v ...

  5. oracle 测试数据类型,oracle修改表字段的数据类型测试

    oracle修改表字段的数据类型的测试 思路 将要更改类型的字段名改名新字段以备份: 根据需求,添加一个与要更改类型的字段名同名的字段(原字段已经改名), 然后更新数据, 最后删除改名备份的字段 脚本 ...

  6. oracle修改字段的默认,oracle系统默认的账号ORACLE修改表字段的数据类型

    ORACLE修改表字段的数据类型 项目需求变更,需要用到备用字段,开始以为是这样改表的: alter table tablename alter column colname newDataType ...

  7. oracle重新创建表空间,oracle 创建表空间,修改表空间,删除表空间

    //创建数据表空间 create tablespace test(表空间名字) logging --datafile 'D:\oracle\product\10.2.0\oradata\mzjx\mz ...

  8. oracle中定义表类型数据,oracle 定义表字段域的数据类型

    /****************************************************************************/ >oracle定义表字段域的数据类型 ...

  9. 修改mysql表的字段名_mysql中修改表字段名/字段长度/字段类型详解

    在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...

  10. 修改表字段类型长度_PG修改字段

    今天又遇到一个需求,要把PG中的字段类型修改一下.本来以为是个很简单的事情,毕竟Oracle就是一条指令就行了.但是在PG中改字段真的真的太难了. 当你修改表字段的时候,会报ERROR: cannot ...

最新文章

  1. sentry日志管理系统安装以及使用教程
  2. DPDK uio驱动实现(二十)
  3. 目前的计算机还没有实现真正的智能
  4. postgre管理员 无法访问表_postgresql – 授予用户对所有表的访问权限
  5. 容器编排技术 -- Kubernetes设计架构
  6. 用python计算1~100的阶乘之和_在Python中递归函数调用举例and匿名函数lambda求1~100的和及计算阶乘举例...
  7. 结构型模式-装饰模式(扩展系统功能)
  8. 孙鑫MFC笔记之十六--Active控件
  9. JavaScript 高级教程
  10. 九型人格:四、The TRAGIC ROMANTIC 悲情浪漫者 - 我若不是独特的,就没有人会爱我
  11. python创建空字典什么意思_Python3基础 dict 创建字典 空字典
  12. Android 使用讯飞语音SDK
  13. 隐马尔科夫模型 python 实现简单拼音输入法
  14. frp内网穿透SSH
  15. 我想把生活折腾成自己想要的样子
  16. ArkID 一账通:企业级开源IDaaS/IAM平台系统
  17. 互联网从此没有 BAT,该来的还是来了!
  18. 堆漏洞挖掘:19---_lib_malloc函数源码详解
  19. spring配置AOP
  20. 基于JSP的酒店登记预定系统的设计与实现

热门文章

  1. Android开发技术周报 Issue#70++
  2. 一种用javascript实现的比较兼容的回到顶部demo + 阻止事件冒泡
  3. QT中循环显示图片和简单的显示图片
  4. Poj 3281 Regional Chengdu Food(Dicnic)
  5. 中国AI人才缺口500万,10本硬核技术书带你上车
  6. 酒驾、超速、加塞、路怒、拒载?来吧,我们专治各种不服
  7. 腾讯三面:40亿个QQ号码如何去重?
  8. 2021 年 6 月程序员工资统计,反作弊算法工程师太可怕了。。
  9. ​Redis的各种“坑”,你知道多少?
  10. 原创 | 我说我了解集合类,面试官竟然问我为啥HashMap的负载因子不设置成1!?...