数据库原理实验六:综合应用

实验目的

根据数据库设计步骤完成简单应用的设计和创建,了解数据在前后台的交互。

实验内容

1、建立一个数据库和五张表的表结构。

2、根据表结构使用SQL语句添加相应约束。

(1)/*员工人事表employee */

emp_no

char(5)

Not null

primary key

员工编号

emp_name

char(10)

Not null

 

员工姓名

Sex

char(1)

Not null

 

性别

Dept

char(4)

Not null

 

所属部门

Title

char(6)

Not null

 

职称

date_hired

datetime

Not null

 

到职日

birthday

datetime

Null

 

生日

salary

int

Not null

 

薪水

Addr

char(50)

null

 

住址

Mod­_date

datetime

Default(getdate())

操作者

create table employee
(
emp_no char(5) primary key,
emp_name char(10) not null,
Sex char(1) not null,
Dept char(4) not null,
Title char(6) not null,
data_hired datetime not null,
birthday datetime null,
salary int not null,
Addr char(50) null,
Mod_date datetime default(getdate())
)

(2)/*客户表customer */

cust_id

char(5)

Not null

primary key

客户号

cust_name

char(20)

Not null,

 

客户名称

Addr

char(40)

Not null,

 

客户住址

tel_no

char(10)

Not null,

 

客户电话

Zip

char(6)

null

 

邮政编码

create table customer
(
cust_id char(5) primary key,
cust_name char(20) not null,
Addr char(40) not null,
tel_no char(10) not null,
Zip char(6) null
)

(3)/*销售主表sales */

order_no

int

Not null

primary key

订单编号

cust_id

char(5)

Not null,

 

客户号

sale_id

char(5)

Not null,

 

业务员编号

tot_amt

numeric(9,2)

Not null,

 

订单金额

order_date

datetime

Not null,

 

订货日期

ship_date

datetime

Not null,

 

出货日期

invoice_no

char(10)

Not null

 

发票号码

create table sales
(
order_no int primary key,
cust_id char(5) not null,
sale_id char(5) not null,
tot_amt numeric(9,2) not null,
order_date datetime not null,
ship_date datetime not null,
incoice_no char(10) not null
)

(4)/*销货明细表sale_item */

order_no

int

Not null,

primary key

订单编号

prod_id

char(5)

Not null,

产品编号

Qty

int

Not null

 

销售数量

unit_price

numeric(9,2)

Not null

 

单价

order_date

datetime

null

 

订单日期

create table sale_item
(
order_no int not null,
prod_id char(5) not null,
Qty int not null,
unit_price numeric(9,2) not null,
order_date datetime null
constraint primary_sale primary key(order_no,prod_id)
)

(5)/*产品名称表product */

prod_id

char(5)

Not null

primary key

产品编号

prod_name

char(20)

Not null

 

产品名称

create table product
(
prod_id char(5) not null primary key,
prod_naem char(20) not null
)

3、录入数据并实现实现如下查询

(1)查找定单金额高于20000的客户编号;

select cust_id 
from sales 
where tot_amt>20000

(2)选取销售数量最多的前5条订单订单号、数量;

select top 5 order_no,Qty 
from sale_item 
order by Qty desc

(3)显示sale_item表中每种个别产品的订购金额总和,并且依据销售金额由大到小排

         来显示出每一种产品的排行榜;

select prod_id, sum(Qty*unit_price) '金额' 
from sale_item 
group by prod_id 
order by '金额' desc

(5)计算每一产品每月的销售金额总和,并将结果按销售(月份,产品编号)排序;

select "s2".月份,sum("s2".tot_amt) '销售金额总和',"s1".prod_id '产品编号'
from sale_item "s1"
join (select month(order_date) '月份',order_no,tot_amt from sales) "s2"
on "s1".order_no="s2".order_no
group by "s2".月份,"s1".prod_id
order by "s2".月份,"s1".prod_id

(6)检索单价高于2400元的的产品编号、产品名称、数量、单价及所在订单号;

select s.prod_id, product.prod_name, s.Qty, s.unit_price, s.order_no 
from product,sale_item s
where s.unit_price> 2400 and product.prod_id=s.prod_id

(7)计算每一产品销售数量总和与平均销售单价;

select sum(Qty)'销售数量', avg(unit_price)'平均销售单价'
from sale_item

(8)创建一个视图,该视图只含上海客户信息,即客户号、客户姓名、住址。

create view view_name AS
select cust_id,cust_name,Addr from customer where Addr='上海'

实验总结

1. 设置主键,自动为 not null

2. unique和主键区别:
unique:唯一并且 一张表可设置多个unique 可空 但是只能有一行数据空
主键: 唯一并且 一张表只能有一个主键

3. 主键可通过 constraint 主键名 primary key(列,列)来设置组合键

4. 给表取别名的时候 不能用单引号,要用双引号或者不用引号
而给列取别名的时候可以选择单引号 或者 as 连接词 或者不用引号

5. 视图是为了保存一张表 下次查找该表 可直接 使用 如本实验中:

select * from view_name 

即可查看 视图

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烟敛寒林o

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

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

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

打赏作者

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

抵扣说明:

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

余额充值