上一篇👉: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,'牙膏','高露洁')