Oracle 数据库表和约束条件的增删改查

简介: Oracle 数据库表和约束条件的增删改查

7、默认约束 DEFAULT CONSTRAINT

7.1 概念

指定字段为空值的时候,系统自动为该字段赋值


7.2 语法如下

字段名 数据类型 DEFAULT 默认值

示例15

CREATE TABLE TB_EMP10 (

   ID NUMBER(11),

   NAME VARCHAR2(25),

   GENDER VARCHAR2(2) DEFAULT '男',

   AGE NUMBER(2),

   PRIMARY KEY(ID)

 );

INSERT INTO TB_EMP10 (ID,NAME,AGE) VALUES(1,'1',1);

INSERT INTO TB_EMP10 VALUES(2,'1',NULL,1);--NULL也属于赋值

SELECT * FROM TB_EMP10;

ALTER TABLE TB_EMP10 MODIFY  GENDER DEFAULT '女';

7.3 在修改表数据时添加和删除默认约束,语法如下

ALTER TABLE <表名> MODIFY <字段名> DEFAULT 默认值

ALTER TABLE <表名> MODIFY <字段名> DEFAULT NULL*/

示例16

--删除默认约束

ALTER TABLE TB_EMP10 MODIFY GENDER DEFAULT NULL;

INSERT INTO TB_EMP10 (ID,NAME,AGE) VALUES(3,'1',1);

SELECT * FROM TB_EMP10;

--添加修改默认约束

ALTER TABLE TB_EMP10 MODIFY  GENDER DEFAULT '男';

INSERT INTO TB_EMP10 (ID,NAME,AGE) VALUES(4,'1',1);

SELECT * FROM TB_EMP10;


8、主键自增约束 GENERATED BY DEFAULT AS IDENTITY

8.1 概念

默认为1,每次插入数据+1


一个数据表中只能有一个字段使用主键自增约束,


8.2 语法如下

备注


cycle 循环 循环的次数必须大于缓存次数

order 排序

字段名 数据类型 <GENERATED BY DEFAULT AS IDENTITY |  GENERATED ALWAYS AS IDENTITY >

   [(

   [START WITH 开始值] [increment by 每次增加] [maxvalue 最大值] [minvalue 最小值] [cycle] [cache 缓存值] [order]

   )]

GENERATED ALWAYS AS IDENTITY  尝试插入或更新 GENERATED ALWAYS AS IDENTITY 列,操作会报错。

GENERATED BY DEFAULT AS IDENTITY  允许你对标识列插入或更新

示例16

CREATE TABLE TB_EMP11 (

   ID NUMBER(11) NOT NULL,

   NAME VARCHAR2(25),

   GENDER VARCHAR2(2) DEFAULT '男',

   id2 NUMBER(2) generated by default as identity (Start with 1 increment by 1 maxvalue 3 minvalue 1 cycle cache 10 order)

 );--ORA-04013:CACSE 值必须少于CYCLE值,此条创建语句明显可以判断出循环3次,缓存10次

CREATE TABLE TB_EMP11 (

   ID NUMBER(11) NOT NULL,

   NAME VARCHAR2(25),

   GENDER VARCHAR2(2) DEFAULT '男',

   id2 NUMBER(2) generated by default as identity (Start with 1 increment by 1 maxvalue 3 minvalue 1 cycle cache 2 order)

 );

INSERT INTO TB_EMP11(id)values('1');--执行9次后查询结果

select * from TB_EMP11;

INSERT INTO TB_EMP11(id,id2)values(4,1);

select * from TB_EMP11;

INSERT INTO TB_EMP11(id)values('1');

select * from TB_EMP11; --明确可以看出id2进行循环并且排序

8.2 修改主键自增约束

语法如下


ALTER TABLE <表名> modify <字段名> <generated as identity | GENERATED ALWAYS AS IDENTITY >

[(

   [START WITH 开始值] [increment by 每次增加] [maxvalue 最大值] [minvalue 最小值] [cycle] [cache 缓存值] [order]

)]

示例17

ALTER TABLE TB_EMP11 MODIFY ID2 GENERATED AS IDENTITY (Start with 1 increment by 1 maxvalue 3 minvalue 1 cycle cache 2 );

ALTER TABLE TB_EMP11 MODIFY ID2 GENERATED ALWAYS AS IDENTITY (Start with 1 increment by 1 maxvalue 3 minvalue 1 cycle cache 2 );

INSERT INTO TB_EMP11(id,id2)values(4,1);--ORA-32795:无法插入到 '始终生成' 身份列,可以更改主键自增的类型

总结:

GENERATED ALWAYS AS IDENTITY 可以不指定该列进行插入


GENERATED ALWAYS AS IDENTITY 不能在该列中插入NULL值


GENERATED ALWAYS AS IDENTITY 不能指定具体值插入


GENERATED ALWAYS AS IDENTITY 不能使用update更新该列


GENERATED BY DEFAULT AS IDENTITY 可以不指定该列进行插入


GENERATED BY DEFAULT AS IDENTITY 可以指定具体值插入


GENERATED BY DEFAULT AS IDENTITY 不能在该列中插入null值


GENERATED BY DEFAULT AS IDENTITY 可以使用update更新该列,但不能更新为NUL


8.3 在修改表数据时添加和删除自增约束

语法如下(不能在创建好的字段上进行修改,oracle不允许)


ALTER TABLE <表名> ADD <字段名> (数据类型) <generated as identity | GENERATED ALWAYS AS IDENTITY >

[(

   [START WITH 开始值] [increment by 每次增加] [maxvalue 最大值] [minvalue 最小值] [cycle] [cache 缓存值] [order]

)]

ALTER TABLE <表名> MODIFY <字段名> DROP identity

示例18

alter table TB_EMP11 add id3 NUMBER(2)

       generated by default as identity

       (start with 11 increment by 2 maxvalue 100000 minvalue 10);--ORA-30669:表名只有一个身份列

--删除

alter table TB_EMP11 modify id2 drop identity;

--增加

alter table TB_EMP11 add id3 NUMBER(2)

       generated by default as identity

       (start with 11 increment by 2 maxvalue 100000 minvalue 10);

--数据迁移

update TB_EMP11 set id3=id2;

--删除原有字段

alter table TB_EMP11 drop column id2;

--修改字段名称

alter table TB_EMP11 rename column id3 to ID2


掌握知识

7种约束 主键 外键 唯一 检查 非空 默认 自增 熟练掌握增删改查的操作 DDL数据定义语言


9、查询数据表结构,

9.1 语法如下

DESCRIBE <表名> 或者简写 DESC <表名>

示例19

DESCRIBE TB_EMP11;

DESC TB_EMP11;


10、修改表名,

10. 1 语法如下

ALTER TABLE <旧表名> RENAME TO <新表明>

示例20

ALTER TABLE TB_DEPT3 RENAME TO TB_DEPTMENT3;


11、修改字段类型

11.1 语法如下

ALTER TABLE <表名> MODIFY <字段名> <数据类型>

示例21

ALTER TABLE TB_DEPT MODIFY NAME VARCHAR2(255);

ALTER TABLE TB_DEPT MODIFY NAME VARCHAR2(25);


12、修改字段名称

12.1 语法如下

ALTER TABLE <表名> rename column <旧字段名> TO <新字段名>

示例22

ALTER TABLE TB_DEPT RENAME column LOCATION TO LOC;


13、添加字段

13.1 语法如下

ALTER TABLE <表名> ADD <字段名> <数据类型> [列级别约束条件]

示例23

ALTER TABLE TB_DEPT ADD ID3 NUMBER generated by default as identity (start with 11 increment by 2 maxvalue 100000 minvalue 10);


14、删除字段

14.1 语法如下

ALTER TABLE <表名> DROP column  <字段> cascade cibstraints: 将该字段相关的约束一并删除*/

示例24

ALTER TABLE TB_DEPT DROP COLUMN ID3 ;


15、删除数据表

15.1 删除没有被关联的数据表,语法如下

DROP TABLE <表名>

示例25

DROP TABLE TB_DEPT;

15.2 删除被其他表关联的主表

示例26

CREATE TABLE TB_DEPT(

      ID NUMBER(11) PRIMARY KEY,

      NAME VARCHAR2(55),

      loc varchar2(255)

);

CREATE TABLE TB_EMP (

      ID NUMBER(11),

      NAME VARCHAR2(55),

      DEPTID NUMBER(11),

      salary NUMBER(10,2),

      constraint fk_emp_dept FOREIGN KEY (DEPTID) REFERENCES TB_DEPT(ID)

);

DROP TABLE TB_DEPT;--ORA-02449:标准的唯一/主键被外键使用

--移除从表的外键约束

ALTER table TB_EMP DROP constraints fk_emp_dept;


目录
相关文章
|
2天前
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
25 13
|
22天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
71 11
|
2月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
2月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
27天前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
57 7
|
2月前
|
存储 SQL Oracle
[Oracle]面试官:你简单说说常用的4种约束
本文介绍了数据库表中的几种常见约束,包括主键、唯一键、外键、检查和非空约束。详细说明了每种约束的创建、删除及启用/禁用方法,特别强调了外键约束的级联操作和检查约束的正则表达式应用。建议多练习手写SQL命令以加深理解。
41 2
|
2月前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
36 5
|
3月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
209 64

推荐镜像

更多