加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle创建表

发布时间:2020-12-12 13:41:55 所属栏目:百科 来源:网络整理
导读:一.创建表 商品种类表 drop table category create table category( cid number(4) primary key, cname varchar2(100), cdesc varchar2(400) ) 二.常见的字段类型5种 1. varchar2(20) 可变长度字符串 最长为20个字节 如果不够20个字节 例如插入 ‘aaa‘ 只占


一.创建表

商品种类表


drop table category

create table category(
cid number(4) primary key,
cname varchar2(100),
cdesc varchar2(400)

)


二.常见的字段类型5种


1. varchar2(20) 可变长度字符串 最长为20个字节 如果不够20个字节

例如插入 ‘aaa‘ 只占3个字节 解决空间 查询的时候效率低

最长 4k

2. char(20) 定长字符串

如果该字段插入的值 不到20个字节 也会占用20个字节的空间 浪费空间 查询效率高

最长 2k

3. long 变长字符串

2gb

4. number(8,3) 数值类型

5. date 日期类型

?

?

create table 表名(

字段 字段类型 约束
)


6种约束


一. 主键约束

primary key

create table category(
cid number(4) primary key,--字段级约束
cname varchar2(100),
cdesc varchar2(400)

)


特点: 非空且唯一,使用主键来标示唯一的一条记录

每张表都要有一个主键

使用主键是为了保证 实体完整性... 数据应该是完整的


*如何创建组合主键
create table category(
cid number(4),
cdesc varchar2(400),
constraint pk_cname_cdesc primary key(cname,cdesc) --表级约束
)

?

2. 非空约束

not null

create table category(
cid number(4) primary key,
cdesc varchar2(400) not null

)

3. 唯一约束


unique


create table category(
cid number(4) primary key,
cname varchar2(100) unique,
cdesc varchar2(400)

)


4. 检查性约束

check


create table student(

sno varchar2(10) primary key,
name varchar2(20),
age number(3),
constraint check_age check(age>=0 and age<=120)
)


5. 默认约束


默认值 某个字段设置了默认约束以后 不插入任何值 取的是默认值


default


create table student(

sno varchar2(10) primary key,
grade number(1) default 1,
constraint check_age check(age>=0 and age<=120)
)

--grade字段不插入值 默认是1
insert into student(sno,name,age) values(‘2‘,‘赵英龙‘,22)

insert into student(sno,22,null);--插入null就是null

?

6. 外键约束


主键约束是为了保证数据的 实体完整性

外键约束是为了保证数据的 参照完整性


create table product(
pid number(10) primary key,
pname varchar2(50),
pdesc varchar2(500),
cid number(4),
constraint fk_product_cid_category_cid foreign key(cid) references category(cid)

)


(1) 向从表中插入数据的时候 需要先从主表中检查一下 有没有与之对应的记录

如果有 可以插入,如果主表中没有与之对应的记录 无法插入


违反完整性约束条件 未找到父项关键字

(2) 从主表中删除记录的时候,需要先从 从表中查找有没有与之对应的记录 如果有则不能删除。

delete from category where cid=1

违反完整性约束条件 已找到子记录


如果想删除cid为1的商品种类 需要先把从表中(product表) cid为1的记录都删除 才可以删主表的记录


**************************************级联删除***********************************************


--级联删除

create table product(
pid number(10) primary key,
constraint fk_product_cid_category_cid foreign key(cid) references category(cid) on delete cascade

)

?

删除cid=1的商品种类时 会级联把 cid为1的product记录也删除

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读