Oracle-----DML&DDL的综合案例(创建数据表、增加测试数据)

上一篇👉:Oracle-----检查约束&外键约束&修改约束


总目录👉震惊!史上最菜的Oracle 11g教程(大佬勿进)


🚴大家好!我是近视的脚踏实地,这篇文章主要是来完成一个DML&DDL的综合案例,这篇主要是数据表的创建以及增加测试数据,后边进行查询实战
     唯有行动  才能解除你所有的不安

1、开发要求

现有一个商店的数据库,记录顾客及其购物情况,由下面三个表组成:
     ●商品product (商品号productid,商品名productname,单价unitprice,商品类别category,供应商provider);
     ●顾客customer (顾客号customerid, 姓名name, 住址location);
     ●购买purcase (顾客号customerid, 商品号productid, 购买数量quantity);
     每个顾客可以购买多件商品,每件商品可以被多个顾客购买。属于多对多的关系。

使用SQL语言完成下列功能:
1、 建表,在定义中要求声明如下约束:
     (1)、每个表的主外键;
     (2)、顾客的姓名和商品名不能为空值:
     (3)、单价必须大于0,购买数量必须在0到20之间;。

2、往表中插入数据:
      商品( M01, 佳洁士,8.00, 牙膏,宝洁;
           M02,高露洁,6.50, 牙膏,高露洁;
           M03,洁诺,5.00, 牙膏,联合利华;
           M04,舒肤佳,3.00, 香皂,宝洁;
           M05,夏士莲,5.00, 香皂,联合利华;
           M06,雕牌,2.50, 洗衣粉,纳爱斯
           M07,中华,3.50, 牙膏,联合利华;
           M08,汰渍,3.00, 洗衣粉,宝洁;
           M09,碧浪,4.00, 洗衣粉,宝洁;)

      顾客( C01, Dennis, 海淀;
           C02,John, 朝阳;
           C03,Tom, 东城;
           C04,Jenny, 东城;
           C05,Rick, 西城;)

      购买(
           C01,M01,3;
           C01, M05,2;
           C01,M08,2;
           C02,M02,5;
           C02,M06,4;
           C03,M01,1;
           C03,M05,1; .
           C03,M06,3;
           C03,M08,1;
           C04,M03,7;
           C04,M04,3;
           C05,M06,2;
           C05,M0I,8;)

3、用SQL语句完成下列查询:
(1)、求购买了供应商"宝洁"产品的所有顾客;
(2)、求购买的商品包含了顾客“Dennis"所购买的所有商品的顾客(姓名);
(3)、求牙膏卖出数量最多的供应商。

4、数据更新

(1)、将所有的牙膏商 品单价增加10%。

(2)、删除从未被购买的商品记录。

2、具体内容

2.1 数据表的创建

对于数据表的创建需要考虑的问题在于数据类型的选择。列的数据类型通过具体的数据来进行推出。

2.1.1 编写数据库的脚本

范例1: 编写数据库的脚本
在这里插入图片描述

-- 删除数据表
drop table purcase purge;
drop table product purge;
drop table customer purge;

-- 创建数据表
create table product(							-- 创建商品表
   productid         varchar2(5),				-- 商品号
   productname       varchar2(20) not null,		-- 商品名
   unitprice         number,					-- 单价
   category          varchar2(20),				-- 商品类别
   provider			 varchar2(50),				-- 供应商
   constraint pk_product primary key(productid),-- 设置主键约束
   constraint ck_unitprice check(unitprice>0)	-- 设置检查约束
);
create table customer(							-- 创建顾客表
   customerid        varchar2(5),				-- 顾客号
   name              varchar2(20) not null,		-- 姓名
   location          varchar2(50),				-- 住址
   constraint pk_customer primary key(customerid) -- 设置主键约束
);
create table purcase(							-- 创建购买表
   customerid        varchar2(5),				-- 顾客号
   productid         varchar2(5),				-- 商品号
   quantity          number,					-- 购买数量
   constraint fk_customerid foreign key(customerid) references customer(customerid)on delete cascade,  -- 设置外建以及级联删除
   constraint fk_product foreign key(productid) references product(productid)on delete cascade, 	   -- 设置外键以及级联删除 
   constraint ck_quantity check(quantity between 0 and 20)											   -- 设置检查约束
);   

整个的创建过程都是按照学习过的语法进行的,特别需要主要是:设置为外键的字段在主表之中必须是主键或者唯一约束。

那么可以直接使用@命令导入,也可以直接复制粘贴到命令行中,我这里是导入(导入方式保存文件时选择ANSI编码,否则会乱码),可以多执行几次确保没问题了👇:
在这里插入图片描述

2.2 测试数据的编写

2.2.1 增加商品信息

范例1: 增加商品信息

insert into product(productid,productname,unitprice,category,provider)values('M01','佳洁士',8.00,'牙膏','宝洁');
insert into product(productid,productname,unitprice,category,provider)values('M02','高露洁',6.50,'牙膏','高露洁');
insert into product(productid,productname,unitprice,category,provider)values('M03','洁诺',5.00,'牙膏','联合利华');
insert into product(productid,productname,unitprice,category,provider)values('M04','舒肤佳',3.00,'香皂','宝洁');
insert into product(productid,productname,unitprice,category,provider)values('M05','夏士莲',5.00,'香皂','联合利华');
insert into product(productid,productname,unitprice,category,provider)values('M06','雕牌',2.50,'洗衣粉','纳爱斯');
insert into product(productid,productname,unitprice,category,provider)values('M07','中华',3.50,'牙膏','联合利华');
insert into product(productid,productname,unitprice,category,provider)values('M08','汰渍',3.00,'洗衣粉','宝洁');
insert into product(productid,productname,unitprice,category,provider)values('M09','碧浪',4.00,'洗衣粉','宝洁');

在这里插入图片描述

2.2.2 增加顾客信息

范例2: 增加顾客信息

-- 插入顾客测试数据
insert into customer(customerid,name,location)values('C01','Dennis','海淀');	   
insert into customer(customerid,name,location)values('C02','John','朝阳');	   
insert into customer(customerid,name,location)values('C03','Tom','东城');	   
insert into customer(customerid,name,location)values('C04','Jenny','东城');	   
insert into customer(customerid,name,location)values('C05','Rick','西城');

在这里插入图片描述

2.2.3 增加购买记录

范例3: 增加购买记录

--插入购买测试数据  
insert into purcase(customerid,productid,quantity)values('C01','M01',3);
insert into purcase(customerid,productid,quantity)values('C01','M05',2);
insert into purcase(customerid,productid,quantity)values('C01','M08',2);
insert into purcase(customerid,productid,quantity)values('C02','M02',5);
insert into purcase(customerid,productid,quantity)values('C02','M06',4);
insert into purcase(customerid,productid,quantity)values('C03','M01',1);
insert into purcase(customerid,productid,quantity)values('C03','M05',1);
insert into purcase(customerid,productid,quantity)values('C03','M06',3);
insert into purcase(customerid,productid,quantity)values('C03','M08',1);
insert into purcase(customerid,productid,quantity)values('C04','M03',7);
insert into purcase(customerid,productid,quantity)values('C04','M04',3);
insert into purcase(customerid,productid,quantity)values('C05','M06',2);
insert into purcase(customerid,productid,quantity)values('C05','M07',8);

在这里插入图片描述
最后一定要提交事务;如果事务不提交,那么session一旦关闭数据就消失了

commit;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
那么数据表和测试数据都准备好了,下一篇就来进行数据的查询实战!

完整的脚本shopping.sql

-- 删除数据表
drop table purcase purge;
drop table product purge;
drop table customer purge;

-- 创建数据表
create table product(							-- 创建商品表
   productid         varchar2(5),				-- 商品号
   productname       varchar2(20) not null,		-- 商品名
   unitprice         number,					-- 单价
   category          varchar2(20),				-- 商品类别
   provider			 varchar2(50),				-- 供应商
   constraint pk_product primary key(productid),-- 设置主键约束
   constraint ck_unitprice check(unitprice>0)	-- 设置检查约束
);
create table customer(							-- 创建顾客表
   customerid        varchar2(5),				-- 顾客号
   name              varchar2(20) not null,		-- 姓名
   location          varchar2(50),				-- 住址
   constraint pk_customer primary key(customerid) -- 设置主键约束
);
create table purcase(							-- 创建购买表
   customerid        varchar2(5),				-- 顾客号
   productid         varchar2(5),				-- 商品号
   quantity          number,					-- 购买数量
   constraint fk_customerid foreign key(customerid) references customer(customerid)on delete cascade,  -- 设置外建以及级联删除
   constraint fk_product foreign key(productid) references product(productid)on delete cascade, 	   -- 设置外键以及级联删除
   constraint ck_quantity check(quantity between 0 and 20)											   -- 设置检查约束
);

-- 插入商品测试数据
insert into product(productid,productname,unitprice,category,provider)values('M01','佳洁士',8.00,'牙膏','宝洁');
insert into product(productid,productname,unitprice,category,provider)values('M02','高露洁',6.50,'牙膏','高露洁');
insert into product(productid,productname,unitprice,category,provider)values('M03','洁诺',5.00,'牙膏','联合利华');
insert into product(productid,productname,unitprice,category,provider)values('M04','舒肤佳',3.00,'香皂','宝洁');
insert into product(productid,productname,unitprice,category,provider)values('M05','夏士莲',5.00,'香皂','联合利华');
insert into product(productid,productname,unitprice,category,provider)values('M06','雕牌',2.50,'洗衣粉','纳爱斯');
insert into product(productid,productname,unitprice,category,provider)values('M07','中华',3.50,'牙膏','联合利华');
insert into product(productid,productname,unitprice,category,provider)values('M08','汰渍',3.00,'洗衣粉','宝洁');
insert into product(productid,productname,unitprice,category,provider)values('M09','碧浪',4.00,'洗衣粉','宝洁');

-- 插入顾客测试数据
insert into customer(customerid,name,location)values('C01','Dennis','海淀');
insert into customer(customerid,name,location)values('C02','John','朝阳');
insert into customer(customerid,name,location)values('C03','Tom','东城');
insert into customer(customerid,name,location)values('C04','Jenny','东城');
insert into customer(customerid,name,location)values('C05','Rick','西城');

--插入购买测试数据
insert into purcase(customerid,productid,quantity)values('C01','M01',3);
insert into purcase(customerid,productid,quantity)values('C01','M05',2);
insert into purcase(customerid,productid,quantity)values('C01','M08',2);
insert into purcase(customerid,productid,quantity)values('C02','M02',5);
insert into purcase(customerid,productid,quantity)values('C02','M06',4);
insert into purcase(customerid,productid,quantity)values('C03','M01',1);
insert into purcase(customerid,productid,quantity)values('C03','M05',1);
insert into purcase(customerid,productid,quantity)values('C03','M06',3);
insert into purcase(customerid,productid,quantity)values('C03','M08',1);
insert into purcase(customerid,productid,quantity)values('C04','M03',7);
insert into purcase(customerid,productid,quantity)values('C04','M04',3);
insert into purcase(customerid,productid,quantity)values('C05','M06',2);
insert into purcase(customerid,productid,quantity)values('C05','M07',8);
		   
-- 提交事务
commit;

下一篇👉Oracle-----DML&DDL的综合案例(数据查询以及数据更新实战)

本篇博客到这就完啦,非常感谢您的阅读🙏,如果对您有帮助,可以帮忙点个赞或者来波关注鼓励一下喔😬 ,嘿嘿👀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值