oracle-建表-增加数据
来源:互联网 发布:文献查重软件 编辑:程序博客网 时间:2024/05/20 18:03
1.建表:
a.每个表的主外键
b.顾客的姓名和商品名不能为空
c.单价必须大于0,购买数量必须0到20之间
-----------------------------------------------------------------2.表的意义
-------------------------------------
顾客表--customer
customerid 【顾客号】name 【姓名】
loaction 【地址】
商品表--product
productid 【商品编号】productname【商品名称】
unitprice 【商品价格】
category 【商品种类】
provider 【供应商】
购买记录表 -- purcasecustomerid 【顾客号】
productid 【商品号】
quantity 【购买的数量】
------------------------------------------
删除数据表
-------------------------------------------------
DROE TABLE purcase PURGE;DROE TABLE product PURGE;
DROE TABLE customer PURGE;
-----------------------------------------
创建数据表
----------------------------------------
--1.创建顾客表;
----------------------------------------------------------
CREATE TABLE customer(customerid VARCHAR2(3), 【顾客号】
name VARCHAR2(20) NOT NULL,【姓名】
loaction VARCHAR2(50), 【地址】
CONSTRAINT pk_customerid PRIMARY KEY(customerid)
);
---------------------------------------
--2.创建商品表;
--------------------------------------
CREATE TABLE product(productid VARCHAR2(3),
productname VARCHAR2(20) NOT NULL,
unitprice NUMBER,
category VARCHAR2(20),
provider VARCHAR2(20),
CONSTRAINT pk_productid PRIMARY KEY(productid),
CONSTRAINT ck_unitprice CHECK (unitprice>0)
);
----------------------------------------------------------------------------------------
--3.创建购买记录表
customerid VARCHAR(3),【顾客号】
productid VARCHAR(20), 【商品号】
quantity NUMBER, 【购买的数量】
CONSTRAINT fk_customerid FOREIGN KEY (customerid) REFERENCES customer(customerid) ON DELETE CASCADE,
CONSTRAINT fk_productid FOREIGN KEY (productid) REFERENCES product (productid) ON DELETE CASCADE,
CONSTRAINT ck_quantity CHECK(quantity BETWEEN 0 AND 20)
);
---------------------------------------------------------------------------------------------------------------------
测试数据
--------------------------------------------------------------------------------------------------------
1.增加商品数据
------------------------------------------------------------------------------------------------------------
INSERT INTO product(productid,productname,unitprice,category,provider)VALUES('MO1','佳洁士',8.00,'牙膏','宝洁');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('MO2','高露洁',6.50,'牙膏','高露洁');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('MO3','洁诺',5.00,'牙膏','联合利华');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('MO4','舒肤佳',3.00,'香皂','宝洁');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('MO5','夏士莲',5.00,'香皂','联合利华');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('MO6','雕牌',3.00,'洗衣粉','纳爱斯');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('MO7','中华',3.50,'牙膏','联合利华');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('MO8','汰渍',3.00,'洗衣粉','宝洁');
INSERT INTO product(productid,productname,unitprice,category,provider)
VALUES('MO9','碧浪',4.00,'洗衣粉','宝洁');
-----------------------------------------------------------------------------------------------------------------
2.增加顾客表
------------------------------------------------------------------------------------------------------------------
INSERT INTO customer(customerid,name,loaction)VALUES('CO1','Dennis','海淀');
INSERT INTO customer(customerid,name,loaction)
VALUES('CO2','John','朝阳');
INSERT INTO customer(customerid,name,loaction)
VALUES('CO3','Tom','东城');
INSERT INTO customer(customerid,name,loaction)
VALUES('CO4','Jenny','东城');
INSERT INTO customer(customerid,name,loaction)
VALUES('CO5','Rick','西城');
-------------------------------------------------------------------------------
3.增加购买记录表
---------------------------------------------------------------------------------------
INSERT INTO purcase(customerid,productid,quantity)VALUES('CO1','M01',3);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO1','M05',2);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO1','M08',2);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO2','M02',5);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO2','M06',4);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO3','M01',1);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO3','M05',1);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO3','M06',3);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO3','M08',1);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO4','M03',7);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO4','M04',3);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO5','M06',2);
INSERT INTO purcase(customerid,productid,quantity)
VALUES('CO5','M07',8);
---------------
-----事务提交
COMMIT;-------------------------------------------------------------
3.用SQL语句完成查询:
1.求购买了供应商“宝洁”产品的所有顾客
·确定要使用的数据表|— customer表:顾客信息
|— product表:供应商的信息:
|— purcase表:需要连接商品和顾客信息
第一步:找的供应商“宝洁”提供的商品编号
SELECT productidFROM product
WHERE provider = '宝洁';
第二步:根据商品编号查询顾客信息
SELECT customeridFROM purcase
WHERE productid IN(
SELECT productid
FROM product
WHERE provider = '宝洁');
第三步 根据顾客编号 查询顾客信息(最终结果)
=========================================
DISTINCT 除去重复的数据
=========================================
SELECT DISTINCT *
FROM customer
WHERE customerid IN(
SELECT customerid
FROM purcase
WHERE productid IN(
SELECT productid
FROM product
WHERE provider = '宝洁')
);
-------------------------------------------------------------
2.求牙膏卖出数量最多的供应商:
·确定要使用的数据表
|-product;找到牙膏类型的商品编号|-purcase 找到所有的购买记录
·确定已知的关联字段
|-product.productid = purcase.productid
第一步 将商品表与购买表记录做多表查询
SELECT pro.provider,p.quantityFROM purcase p, product pro
WHERE p.productid = pro.productid
AND pro.category ='牙膏';
第二步 统计每个供应商的销售总量
SELECT pro1.provider,p1.quantity,SUM(p1.quantity) sumFROM purcase p, product pro1
WHERE p1.productid = pro1.productid
AND pro1.category ='牙膏'
GROUP BY pro1.provider
第三步:
SELECT pro1.provider,SUM(p1.quantity) sumFROM purcase p1, product pro1
WHERE p1.productid = pro1.productid
AND pro1.category ='牙膏'
GROUP BY pro1.provider
HAVING SUM(p1.quantity) =(
SELECT MAX(SUM(p1.quantity))
FROM purcase p1,product pro1
WHERE p.productid = pro1.productid
AND pro1.category ='牙膏'
GROUP BY pro1.provider);
-----------------------------------------------------------------------------------------
4.将所有的牙膏商品单价增加10%
UPDATE product SET unitprice = unitprice * 1.1WHERE category = '牙膏';
--------------------------------------------------------------------------------------
5.删除从来没有购买过得商品记录
DELETE FROM product WHERE productid NOT IN(SELECT productid FROM purcase
);
- oracle-建表-增加数据
- oracle数据快速增加
- Oracle批量增加数据
- oracle增加表空间数据文件大小
- oracle增加表空间数据文件大小
- oracle学习笔记(增加和修改数据)
- 如何给Oracle已有数据的表增加字段
- oracle参数化保存数据,并提示是否继续增加
- oracle中给用户增加导入数据权限的操作
- oracle给原有数据依次增加ID的值
- ORACLE增加表空间
- ORACLE增加表空间
- ORACLE增加表空间
- 增加 oracle 数据库连接数
- Oracle增加删除主键
- oracle序列 自动增加
- Oracle 分区表增加分区
- oracle增加表空间
- 机器学习资料发布(2017年7月29日第一次)
- Docker实战系列——第三话--docker 监控(三)-- how could we monitoring(2)?
- 实现一个双向链表
- 文件查找
- matlab中setfield函数的使用
- oracle-建表-增加数据
- 设计模式(14)--命令模式
- 玲珑杯 Round 19 1152
- NYOJ 106 背包问题
- 如何将excel文件转换为csv格式
- 面向对象
- 改良版的顺序表(动态)
- 数论倒数-逆元
- [第五季]6.HTML表格标签