Oracle创建、修改表和约束

1.创建表

create table 表名(
   列名(字段名) 数据类型 约束 默认值,--约束、默认值都是可以省略的
   列名 数据类型 约束 默认值,
   列名 数据类型 约束 默认值,
   ...
   表级约束              --可选
)tablespace 表空间名;--可省略的,默认表会保存到用户的默认表空间中
--表名、列名、表空间名等都叫做标识符,它一般以字母开头,可以有_、数字等,长度不能超过30个英文字符;
​
--创建person表:
create table person(
   id number(11),
   name varchar2(20),
   age number(3),
   sex number(1),
   birthday date
);
​
drop table 表名;--删除表
create table 表名 as select语句; --经常用作数据备份
create table emp_bak as select * from emp;
create table emp as select * from emp_bak;

2.约束

约束可以分为行级约束和表级约束

行级约束:建表时跟在字段定义后面,约束当前行定义的列的约束叫做行级约束

表级约束:建表时写在所有字段定义之后的约束,它可以约束某个列或者多个列

not null --非空约束,它是唯一个行级约束,不能写成表级约束
列名 数据类型 not null       --行级约束语法
​
unique --唯一约束,表示这个列的值在整个表的数据中,是唯一的不可重复
列名 数据类型 unique       --行级约束语法
constraint 约束名 unique(列名)  --表级约束,在所有列定义之后
​
primary key --主键约束,是not null和unique的结合,表示这个列的值不能为空且不能重复
列名 数据类型  primary key     --行级约束语法
constraint 约束名 primary key(列名[,列名])   --表级约束,在表级约束中,如果有多个列时,表示这几个列为联合主键()
​
foreign key --外键约束,表示这个列的取值,只能在主表的主键列的值中去取
列名 数据类型 references 主表名(主表主键列)    --行级约束语法
​
create table emp_t(
   empno number(7) primary key, --主键约束
   ename varchar2(30) not null,  --非空约束
   job varchar2(30),
   sal number(7,2),
   hiredate date,
   deptno number(7) references dept(deptno) --外键约束
);
constraint 约束名 foreign key(外键列) references 主表名(主表主键列)  --表级约束
​
check --检查约束,表示这个列的取值要满足check后面的约束条件
列名 数据类型 check(约束条件)   --行级约束
create table user_info(
    name varchar2(30) not null,
    age number(3) check(age>0 and age<150),
    sex number(1) default 0,
    pwd varchar2(20),
    constraint ck_pwd check(length(pwd)>8)
);
constraint约束名 check(约束条件)  --表级约束

3.修改表和约束

--给表添加一个列
alter table 表名 add 列名 数据类型 [约束] [default 默认值];
--删除表中的一个列
alter table 表名 drop column 列名;
--修改一个列
alter table 表名 modify 要修改的列名 数据类型 [约束] [default 默认值];
/*修改列时,如果列有数据,不能直接修改列的数据类型,只能把它长度增加,但不能减少。如果要将有数据的列的长度减小,可以在表中增加一个新列和原来的列数据类型和长度完全相同,将要修改的列的数据放入新增加的列里。然后,把要修改的这个列里的数据清空,修改列的数据长度,之后将数据从新增的临时列中更新到修改后的列里,把要修改的列删除,再增加一个同名列,修改列的数据长度,之后将数据从新增的临时列中更新到修改后的列里*/
​
--增加一个约束
alter table 表名 add 表级约束语法;
alter table 表名 add constraint 约束名 unique(列名)
alter table 表名 add constraint 约束名 primary key(列名[,列名])
alter table 表名 add constraint 约束名 foreign key(外键列) references 主表名(主表主键列)
alter table 表名 add constant 约束名 check(约束条件)
--删除一个约束
alter table 表名 drop constraint 约束名;
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

特亿安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值