Oracle创建表和约束、修改表

本文详细介绍了SQL中创建、修改和删除表的方法,包括不同类型的约束应用,如非空、唯一、检查、主键和外键约束。通过具体实例展示了如何在列级和表级设置约束,并提供了对约束的操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建表

第一种方式,语法如下:

--column_name:列名
--type:数据类型
--注意:多个列名之间用逗号分隔,最后一列不要加逗号
create table table_name(
column_name type,
column_name type
)

第二种方式,语法如下:

--这种方式会自动导入数据,如不想要数据,可以加条件where 1=2,当然也可以导入你想要的数据,就看你加的什么条件了
create table table_name
as
select * from departments
--where 1=2

修改表

语法如下:

-- table_name:表名,column_name:列名,type:数据类型

-- 表重命名
-- old_tablename:原表名,new_tablename:想更改的表名
rename old_tablename to new_tablename

-- 新增列
alter table table_name add(column_name type);

-- 修改列
-- 方括号里为可选,not null:不能为空,default:默认值
alter table table_name modify(column[not null][default exp] type)

-- 列重命名
alter table table_name rename column old_column to new_column

-- 删除列
alter table table_name drop column column_name

-- 设置列不可用
alter table table_name set unused column column_name

-- 删除不可用列
alter table table_name drop unused column

-- 清空表,无法回滚
truncate table table_name

-- 删除表里所有数据,可以回滚
delete from table_name

--在数据库中删除整个表
drop tabel table_name

创建约束

约束有下面五种:
1、非空约束:NOT NULL
2、唯一约束:UNIQUE
3、检查约束:CHECK
4、主键约束:PRIMARY KEY
5、外键约束:FOREIGN KEY

作用范围:

  • 列级约束只能作用在一个列上
  • 表级约束可以作用在多个列上(当然表级约束也可以作用在一个列上)

注意:

  • NOT NULL只能使用到列级约束,其他约束两种方式皆可
  • 创建主键约束相当于创建了NOT NULL、和UNIQUE两个约束,一个表只能有一个主键

语法:

--con_name:约束名,这个约束名起不起都无所谓,只是到时候查看约束以及对约束进行操作的时候的方便,见名知意
--列级约束在定义列的时候跟在列后面
--表级约束定义完列以后单独在下面定义

constraint con_name Check(约束条件)
constraint con_name foreign key(外键名) references 主键表(主键)

--这两个是在定义外键的时候可以加的
on delete cascade --级联删除
on delete set null --级联置空

下面举个例子:

create table employees(
    employee_id number(8),

    --列级约束
    hire_date date not null,
    dept_id number(8),
    email varchar2(8) constraint UQ_email unique,
    first_name varchar2(8),

    --表级约束
    constraint PK_emp_id primary key(employee_id),
    constraint UQ_first_name unique(first_name),
    constraint FK_dept_id foreign key(dept_id) references departments(department_id) ON DELETE CASCADE
)

对约束的一些操作:

--table_name:表名,con_name:约束名

--无效化约束,也就是相当于禁用,一个意思
alter table table_name disable constraint con_name

--激活约束,有禁用就有启用,相当于启用
alter table table_name enable constraint con_name

--删除约束
alter table table_name drop constraint con_name

-- 这个表是用户下的一些约束信息,可以看一看,注意表名要大写
select constraint_name,constraint_type,search_condition from user_constraints where table_name='TABLE_NAME'

-- 查看表的列上有哪些约束,同样的表名要注意大写
select constraint_name ,column_name from user_cons_columns where table_name='TABLE_NAME'

最后说一下,语法翻译过来就很容易懂了,举个例子:

这是删除表的约束,把单词翻译过来

alter table table_name drop constraint con_name

修改 表 表名 删除 约束 约束名

就是你要干什么,我要修改表(alter table),哪个表(table_name),要干什么,删除约束(drop constraint),要删除哪个约束(con_name),这样一看是不是很大不同,很容易就理解了,其他的也差不多。

觉得不错点个赞呗!

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值