oralce 经典习题系列-数据库创建

oralce 经典习题系列

数据库表创建

The problem

1.创建数据表customers,customers表结构如表3-5所示,按要求进行操作。表3-5 customers表结构

字段名数据类型主键外键非空唯一自增
c_numnumber(10)turefalsenot nulltruetrue
c_namevarchar(50)falsefalsenot nullfalsefalse
c_contactvarchar(50)falsefalsenot nullfalsefalse
c_cityvarchar(50)falsefalsenot nullfalsefalse
c_brithdaydatefalsefalsenot nullfalsefalse

1.1 创建数据表customers,在c_num字段上添加主键约束和自增约束,在c_birth字段上添加非空约束。(2)将c_name字段数据类型改为VARCHAR2(70)。(3)将c_contact字段改名为c_phone。(4)增加c_gender字段,数据类型为VARCHAR2(1)。(5)将表名修改为customers_info。(6)删除c_city 字段

2.创建数据表orders,orders表结构如表3-6所示,按要求进行操作

字段名数据类型主键外键非空唯一自增
o_numnuber(11)truefalsenot nulltruetrue
o_datedatefalsefalsefalsefalsefalse
c_idvarchar(20)falsetruefalsefalsefalse

1)创建数据表orders,在o_num字段上添加自增约束,在c_id字段上添加外键约束,关联customers_info表中的主键c_num。(2)删除orders表的外键约束,然后删除表customers_info。

The answer

1.1 基本语句格式create table customers( c_num number(10) GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, c_name varchar(50) not null, c_contact varchar(50) not null, c_city varchar(50) not null, c_brithday date );
get: 自增:oracle 12c 的 自增字段通过为表主键添加GENERATED BY DEFAULT AS IDENTITY关键字来实现,实际还是产生一个序列squence,通过序列的 序列.nexval取值是实现,只是由系统来创建这个序列。
1.2 实现代码alter table customers modify c_brithday not null;非空约束和其他约束后期修改语句不同,通过alter table tbname modify colname not null;
1.3 修改字段名 alter table customers rename columu c_contact to c_phone;
如果是改表明 alter table tbname rename tbname to tbname2 ,不要 column 关键字。
1.4 增加字段 alter table customers add c_gender varchar(1);
1.5 更改表名alter table customers rename to customers_info;
1.6 删除c_city 字段alter table customers_info drop column c_city;


2.1 自增约束通过建立表的时候生成create table orders ( o_id number(11) GENERATED BY DEFAULT AS IDENTITY primary key , o_date date, c_id varchar(20) );
2.2 外键约束可以后期加上,这里面的外键约束,首先要保证外键的数据类型和主表字段数据类型一样
将orders 表 c_id字段修改城和 customers_info 的c_num一致。
alter table orders modify c_id number(10)
alter table orders add constraint fk_cid foreign key(c_id) references
custormers_info(c_num) on delete cascade;
2.3 实现代码alter table orders drop constraint fk_cid;
drop table customers_info;
因为有外键约束,主表customers_info 不能直接删除。所以要先删除从表orders 的约束,再删除主表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qiaoqiao_teashop

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

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

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

打赏作者

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

抵扣说明:

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

余额充值