oracle 创建表中又有表,oracle创建表

一.创建表

商品种类表

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),

cname varchar2(100),

cdesc varchar2(400),

constraint pk_cname_cdesc primary key(cname,cdesc) --表级约束

)

2. 非空约束

not null

create table category(

cid number(4) primary key,

cname varchar2(100),

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,

name varchar2(20),

age number(3),

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,name,age) values(‘2‘,‘赵英龙‘,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,

pname varchar2(50),

pdesc varchar2(500),

cid number(4),

constraint fk_product_cid_category_cid foreign key(cid) references category(cid) on delete cascade

)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值