当前位置: 首页 > news >正文

SQL Server基本使用示例三

create database Saijie
use Saijie
create table goods1(
商品编号 int primary key identity(1,1),–主键,自增
商品名称 varchar(20) unique, –唯一键
商品价格 decimal(5,1) check(商品价格>0),

);
–drop table member
create table member(
会员编号 int primary key identity(100,1),
会员姓名 varchar(20),
性别 varchar(4) default(‘女’)
);
–drop table orders
create table orders(
订单编号 int primary key identity(0000000,1),
会员编号 int foreign key references member(会员编号),
商品编号 int foreign key references goods1(商品编号),
下单时间 smalldatetime,
数量 int
);

insert into goods1 values(‘棒棒糖’,0.5);
insert into goods1 values(‘奶茶’,1.0);
insert into goods1 values(‘可口可乐’,3.5);
insert into goods1 values(‘雪碧’,3.0);
insert into goods1 values(‘怡宝’,2.0);
insert into goods1 values(‘铅笔’,1.0);
insert into goods1 values(‘酸奶’,3.5);
insert into goods1 values(‘啤酒’,3.0);
insert into goods1 values(‘纸巾(袋装)’,1.0);
insert into goods1 values(‘纸巾(卷)’,3.0);
insert into goods1 values(‘信纸’,2.0);
insert into goods1 values(‘水性笔’,3.5);
insert into goods1 values(‘橡皮擦’,1.0);

select * from goods1

insert into member values(‘文雅’,’女’);
insert into member values(‘李双龙’,’男’);
insert into member values(‘贺志玉’,’女’);
insert into member values(‘黄成’,’男’);
insert into member values(‘蔡文鹏’,’男’);
insert into member values(‘王艳芳’,’女’);

select * from member

insert into orders values (100,1,getdate(),12);
insert into orders values (102,1,getdate()-1,1);
insert into orders values (100,2,getdate()+1,12);
insert into orders values (102,4,getdate()-1,1);
insert into orders values (100,7,getdate(),12);
insert into orders values (101,10,getdate(),4);
insert into orders values (103,9,getdate(),9);
insert into orders values (105,6,getdate()-1,17);

select * from orders ;

–多表查询
–1. 交叉查询:查询原理:将A表,B表中d数据相互交叉组合,一共有M*N种结合结果。
–1.1 隐式交叉查询:
select goods1.商品编号, 商品名称, 商品价格, 数量,下单时间 from goods1,orders where 会员编号=100;

--1.2 显式交叉查询

select goods1.商品编号,商品名称,商品价格,数量,下单时间 from goods1 cross join orders;

–2. 内链接查询:查询原理:将A表,B表中的数据根据某种条件链接起来,
–将符合条件的数据查询显示
–2.1 隐式内链接查询
select 会员编号 ,goods1.商品编号,商品名称,商品价格,数量,下单时间 from goods1,orders where goods1.商品编号=orders.商品编号
and 会员编号=101;
–2.2 显式内链接查询
select goods1.商品编号, 商品名称,商品价格,数量,下单时间 from goods1 inner join orders on goods1.商品编号=orders.商品编号
where 会员编号=102;

–左链接查询:查询原理:以左边的表为主,右边的表为辅,将左表和右边中的数据根据某种条件链接起来,
–将符合条件的数据查询显示。
select goods1.商品编号, 商品名称,商品价格,数量,下单时间 from goods1 left join orders on goods1.商品编号=orders.商品编号 where 会员编号=103;

–查询销售额占前两位的商品编号,名称及销售额
select top 2 goods1.商品编号,商品名称,sum(商品价格*数量) as 消费总额 from goods1 inner join orders on goods1.商品编号=orders.商品编号
group by goods1.商品编号 ,商品名称 order by 消费总额 desc;

–查询会员单次消费的总额
select 会员编号,sum(商品价格*数量) as 消费总额 from goods1 inner join orders on goods1.商品编号=orders.商品编号
group by 商品名称 , 会员编号 ;

–查询会员消费的总额
select 会员编号,sum(商品价格*数量) as 消费总额 from goods1 inner join orders on goods1.商品编号=orders.商品编号
group by 会员编号 ;

–查询最近两天天销售额占前两位的商品编号,名称及销售额
select top 2 goods1.商品编号,商品名称,sum(商品价格*数量) as 消费总额 from goods1 inner join orders
on goods1.商品编号=orders.商品编号 where 下单时间 between GETDATE()-2 and GETDATE()
group by goods1.商品编号,商品名称 order by 消费总额 desc;

–查询如下信息:
/* 1.查询某人的消费总额 */
select sum(商品价格*数量) as 消费总额 from goods1 left join orders
on goods1.商品编号=orders.商品编号 where 会员编号=101;

/* 2.查询每个人的消费总额,按照会员编号排序 */
select 会员编号,sum(商品价格*数量) as 消费总额 from goods1 inner join orders on goods1.商品编号=orders.商品编号
group by 会员编号 ;

/* 3.查询某个时间段的消费总额 */
select 会员编号,sum(商品价格*数量) as 消费总额 from goods1 inner join orders
on goods1.商品编号=orders.商品编号 where 下单时间 between GETDATE()-2 and GETDATE()
group by 会员编号 order by 消费总额 desc;

/* 4.查询某人购买次数最多的商品名称 */
select 商品名称, max(数量) as 数量 from goods1 left join orders
on goods1.商品编号=orders.商品编号 where 会员编号=101 group by 商品名称;

/* 5.查询某个商品的销售额 */
select 商品名称,sum(商品价格*数量) as 销售额 from goods1 left join orders
on goods1.商品编号=orders.商品编号 where goods1.商品编号=10 group by 商品名称;

/* 6.查询每个商品的销售额,按照商品销售额排序,商品编号排序 */
select goods1.商品编号 ,商品名称, sum(商品价格*数量) as 销售额 from goods1 left join orders
on goods1.商品编号=orders.商品编号 group by goods1.商品编号, 商品名称 order by 销售额 desc ,goods1.商品编号 asc ;

相关文章:

  • Oracle12c的安装
  • 编程一
  • Java链接数据库
  • 编程二
  • 设计一个一百亿的计算器
  • Java技术体系和学习纲要
  • Eclipse调优和设置
  • Java语法基础
  • 同步
  • Lock接口
  • StringBuffer和StringBuilder
  • 集合框架
  • Iterator接口
  • List接口
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • JAVA并发编程--1.基础概念
  • Laravel Mix运行时关于es2015报错解决方案
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Netty源码解析1-Buffer
  • Node + FFmpeg 实现Canvas动画导出视频
  • nodejs调试方法
  • React-Native - 收藏集 - 掘金
  • RxJS: 简单入门
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue 重置组件到初始状态
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 技术胖1-4季视频复习— (看视频笔记)
  • 聚簇索引和非聚簇索引
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • zabbix3.2监控linux磁盘IO
  • 容器镜像
  • ​iOS安全加固方法及实现
  • ​Linux·i2c驱动架构​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #13 yum、编译安装与sed命令的使用
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (万字长文)Spring的核心知识尽揽其中
  • (一)80c52学习之旅-起始篇
  • (转)为C# Windows服务添加安装程序
  • .form文件_SSM框架文件上传篇
  • .NET Core 成都线下面基会拉开序幕
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 反射 Reflect
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .Net的DataSet直接与SQL2005交互
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @Autowired @Resource @Qualifier的区别
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)