Oracle笔记:数据表结构操作

01 使用CREATE TABLE命令创建基本表

CREATE TABLE STU(
SNO VARCHAR2(10) NOT NULL,
SNAME VARCHAR2(10),
SGENTLE VARCHAR2(2),
SBIRTH DATE,
SDEPT VARCHAR2(20));--同一个创建基本表的命令只能成功执行一次,一旦成功执行再执行会错误提示ORA-0955:名称已由现有对象使用--可以先DROP TABLE STU再CREATE TABLE STU...

02 使用ALTER TABLE命令增加新字段

ALTER TABLE STU
ADD SMAJOR VACHAR2(20)
DEFAULT '计算机科学与技术'
NOT NULL;

03 使用ALTER TABLE命令修改字段

ALTER TABLE STU
MODIFY SNAME VARCHAR2(15)
DEFAULT '无'
NOT NULL;

04 使用ALTER TABLE命令删除字段

ALTER TABLE STU
DROP COLUMN SBIRTH;

05 重命名基本表

RENAME STU TO STU1;
--OR
ALTER TABLE STU1
RENAME TO STU;--重命名字段名alter table stu rename column sname to re_sname;

06 复制相同结构表

CREATE TABLE STU1
AS
SELECT * FROM STU WHERE 1 = 2;
--OR
CREATE TABLE STU2
AS
SELECT * FROM STU WHERE ROWNUM < 1;

--不添加where语句则创建相同表结构并复制所有数据
CREATE TABLE STU3
AS 
SELECT * FROM STU;

07 使用DROP TABLE命令删除表

DROP TABLE STU1;
DROP TABLE STU2;
DROP TABLE STU3;

--基于表的索引,触发器等数据对象也同时被删除;但是并没有完全消失,
--而是重命名为一个由系统定义的名称,存在同一个表空间中,可以被恢复。

08 创建主键约束

--建表时创建主键约束
CREATE TABLE STU(
SNO VARCHAR2(10) PRIMARY KEY,--主键约束
SNAME VARCHAR2(10),
SGENTLE VARCHAR2(2),
SAGE NUMBER(2),
SBIRTH DATE,
SDEPT VARCHAR2(20));

--追加主键约束
ALTER TABLE STU
ADD CONSTRAINT PK_STU
PRIMARY KEY(SNO);--ORA-02268:表只能具有一个主键

09 创建唯一约束

--建表时创建唯一约束
CREATE TABLE STU(
SNO VARCHAR2(10) PRIMARY KEY,--主键约束
SNAME VARCHAR2(10) UNIQUE,--唯一约束,
SGENTLE VARCHAR2(2),
SAGE NUMBER(2),
SBIRTH DATE,
SDEPT VARCHAR2(20));

--追加唯一约束
ALTER TABLE STU
ADD CONSTRAINT UN_SDEPT 
UNIQUE(SDEPT);
--参数UNIQUE约束的任何值一起使用时,每个字段只允许一个空值(NULL),即空值必须是该字段值中唯一的

10 创建CHECK约束

--建表时创建唯一约束
CREATE TABLE STU(
SNO VARCHAR2(10) PRIMARY KEY,--主键约束
SNAME VARCHAR2(10),
SGENTLE VARCHAR2(2) CHECK(SGENTLE = '男' OR SGENTLE = '女'),--CHECK约束
SAGE NUMBER(2),
SBIRTH DATE,
SDEPT VARCHAR2(20));

--追加CHECK约束
ALTER TABLE STU
ADD CONSTRAINT CK_STU
CHECK(SNO > = '1000' AND SNO <='9999');

11 创建外键约束

CREATE TABLE CLASS(
CLASSNAME VARCHAR2(20) PRIMARY KEY);

CREATE TABLE STU(
SNO VARCHAR2(20) PRIMARY KEY,
CLASSNAME FOREIGN KEY(CLASSNAME),--外键约束
REFERENCES CLASS(CLASSNAME),--关联
SNAME VARCHAR2(10),
SAGE NUMBER(2),
SBIRTH DATE);

--追加外键约束
ALTER TABLE STU
ADD CONSTRAINT FK_STU
FOREIGN KEY(CLASSNAME) REFERENCES CLASS(CLASSNAME);

--外键约束可以包含空值(NULL),但是如果任何组合外键约束的列包含空值,则将跳过组合外键约束的所有值的验证。

12 删除约束

ALTER TABLE TABLENAME
DROP CONSTRAINT CONSTRAINTNAME;

--删除的约束只能是与其他表无关联的约束,如果该约束同时作为其他表的外键,则不能删除(应该先删除关联表的外键约束)。

13 为字段设置默认值

CREATE TABLE STU(
SNO VARCHAR2(10) NOT NULL,
SNAME VARCHAR2(10),
SGENTLE VARCHAR2(2) DEFAULT '男',
SBIRTH DATE,
SDEPT VARCHAR2(20));

--追加修改默认值
ALTER TABLE STU
MODIFY SMAJOR DEFAULT NULL;

14 添加注释

COMMENT ON TABLE STU IS '';
COMMENT ON COLUMN STU.SNAME IS '';
--删除更行增加都是同一种方式,注释进行覆盖

猜你喜欢

转载自blog.csdn.net/qq_39827640/article/details/106350961