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;


目录
相关文章
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
45 7
|
1月前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
28 6
|
1月前
|
存储 SQL Oracle
[Oracle]面试官:你简单说说常用的4种约束
本文介绍了数据库表中的几种常见约束,包括主键、唯一键、外键、检查和非空约束。详细说明了每种约束的创建、删除及启用/禁用方法,特别强调了外键约束的级联操作和检查约束的正则表达式应用。建议多练习手写SQL命令以加深理解。
35 2
|
1月前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
26 5
|
2月前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
2月前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
35 1
|
26天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
29天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
39 4
|
1月前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
193 1
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
100 2

推荐镜像

更多