实验室3 sql server 产品销售数据库
某公司的产品销售数据库company,company数据库中存在人事表employee、客户表customer、销售表sales、销售明细表sale_item、产品表product。各表的结构如下:
员工人事表employee
emp_no |
char(5) |
Not null |
primary key |
员工编号 |
---|---|---|---|---|
emp_name |
varchar(10) |
Not null |
员工姓名 |
|
sex |
char(2) |
Not null |
性别 |
|
dept |
varchar(10) |
Not null |
所属部门 |
|
title |
varchar(10) |
Not null |
职称 |
|
date_hired |
datetime |
Not null |
雇佣日 |
|
birthday |
datetime |
Null |
生日 |
|
salary |
int |
Not null |
薪水 |
|
telephone |
varchar(20) |
Null |
电话 |
|
addr |
varchar(50) |
null |
住址 |
客户表customer
cust_id |
char(5) |
Not null |
primary key |
客户号 |
---|---|---|---|---|
cust_name |
varchar(20) |
Not null |
客户名称 |
|
addr |
varchar(40) |
Not null |
客户住址 |
|
tel_no |
varchar(20) |
Not null |
客户电话 |
|
zip |
char(6) |
null |
邮政编码 |
销售主表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 |
订货日期 |
销货明细表sale_item
order_no |
int |
Not null |
订单编号 |
|
---|---|---|---|---|
prod_id |
char(5) |
Not null |
产品编号 |
|
qty |
int |
Not null |
销售数量 |
|
unit_price |
numeric(7,2) |
Not null |
单价 |
|
order_date |
datetime |
null |
订单日期 |
产品名称表product
prod_id |
char(5) |
Not null |
primary key |
产品编号 |
---|---|---|---|---|
prod_name |
varchar(20) |
Not null |
产品名称 |
分别在SQL SERVER 2000企业管理器和在查询分析分析器中使用T—SQL语句完成以下操作:
1.在数据库company中创建以上五张表,并设置各表的主键。
操作步骤:
/*员工人事表*/
create table employee (
emp_no char(5) Not null primary key,
emp_name varchar(10) Not null,
sex char(2) Not null,
dept varchar(10) Not null,
title varchar(10) Not null,
date_hired datetime Not null,
birthday datetime Null,
salary int Not null,
telephone varchar(20) Null,
addr varchar(50) null
)
/*客户表*/
create table customer(
cust_id char(5) Not null primary key,
cust_name varchar(20) Not null,
addr varchar(40) Not null,
tel_no varchar(20) Not null,
zip char(6) null
)
/*销售主表*/
create table 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
)
/*销货明细表*/
create table sale_item(
order_no int Not null,
prod_id char(5) Not null,
qty int Not null,
unit_price numeric(7,2) Not null,
order_date datetime null,
)
/*产品名称表*/
create table product(
prod_id char(5) Not null primary key,
prod_name varchar(20) Not null,
)
/*人事表(employee)数据:*/
insert employeevalues('E0001','王大华','男','业务','经理','1976-10-13','1951-08-01',8000,'0218120440','上海市')
insert employeevalues('E0003','陈自强','男','会计','科长','1986-09-15','1963-06-09',4800,'0255344441','南京市')
insert employeevalues('E0014','周小梅','女','业务','职员','1996-03-01','1970-03-28',3200,'0218128079','上海市')
insert employeevalues('E0009','陈建国','男','管理','科长','1987-04-15','1967-09-01',4500,'0224507863','天津市')
insert employeevalues('E0017','林光华','男','业务','职员','1995-10-13','1973-08-17',3000,'0218344560','上海市')
insert employeevalues('E0006','李珠珠','女','管理','经理','1988-01-01','1961-07-12',6000,'0106750321','北京市')
insert employeevalues('E0002','李庄敬','男','人事','科长','1980-09-15','1958-05-13',8000,'0207180787','广州市')
insert employeevalues('E0010','王成功','男','信息','职员','1993-02-15','1969-04-15',4500,'0106543475','北京市')
insert employeevalues('E0013','陈中华','男','业务','职员','1993-02-15','1966-07-01',4300,'0224506541','天津市')
insert employeevalues('E0008','刘 刚','男','业务','职员','1994-11-01','1968-08-01',4000,'0218128727','上海市')
insert employeevalues('E0005','李珊珊','女','会计','职员','1990-03-20','1967-04-25',3800,'0218344787','上海市')
insert employeevalues('E0011','李小蓉','女','人事','职员','1994-11-01','1970-11-18',3000,'0811545412','重庆市')
insert employeevalues('E0012','蔡文钦','男','制造','厂长','1984-08-15','1960-07-21',5000,'0218120636','上海市')
insert employeevalues('E0015','张大山','男','制造','职员','1993-12-15','1968-09-23',3500,'0218344472','上海市')
insert employeevalues('E0007','吴铁雄','男','信息','科长','1989-10-01','1965-04-18',5000,'0277758521','武汉市')
insert employeevalues('E0016','方美美','女','业务','职员','1992-05-20','1966-06-23',4000,'0218507470','上海市')
insert employeevalues('E0004','刘中兴','男','制造','经理','1984-05-01','1960-05-23',6000,'0218506110','上海市')
insert employeevalues('E0019','王仁华','男','信息','经理','1985-09-15','1959-03-24',6000,'0218128091','上海市')
insert employeevalues('E0020','陈火旺','男','业务','职员','1992-08-01','1964-05-12',4000,'0224120477','天津市')
insert employeevalues('E0018','林中正','男','管理','总经理','1974-10-01','1953-05-04',10000,'0218120564','上海市')
/* 客户(customer)表数据:*/
insert customervalues('C0001','ABC股份有限公司','上海市','电话甲','100')
insert customervalues('C0002','客户乙','天津市','电话乙','400')
insert customervalues('C0003','客户丙','北京市','电话丙','800')
insert customervalues('C0004','客户丁','上海市','电话丁','104')
insert customervalues('C0005','客户戊','北京市','电话戊','803')
insert customervalues('C0006','客户己','上海市','电话己','103')
insert customervalues('C0007','客户庚','上海市','电话庚','102')
/*销售(sales)主表数据:*/
insertsales values (10002,'C0002','E0013',22700.00,'1996-11-10','I000000002')
insertsales values(10003,'C0003','E0014',13960.00,'1996-10-15','I000000003')
insertsales values(10004,'C0003','E0014',33000.00,'1996-11-10','I000000004')
insertsales values (10001,'C0001','E0008',60000.00,'1996-11-10','I000000001')
insertsales values (10007,'C0007','E0008',20000.00,'1996-11-10','I000000008')
/*产品名称(product)表数据:*/
insertproduct values ('P0001','16M DRAM')
insertproduct values ('P0002','14寸显示器')
insertproduct values ('P0003','1.2GB硬盘')
insertproduct values ('P0004','3.5寸软驱')
insertproduct values ('P0005','键盘')
insertproduct values ('P0006','VGA显示卡')
insertproduct values ('P0007','网卡')
insertproduct values ('P0008','Pentium100CPU')
insertproduct values ('P0009','激光打印机')
insertproduct values ('P0010','8倍速光驱')
insertproduct values ('P0011','计算机字典')
insertproduct values('P0012','9600bits-s调制解调器')
insertproduct values('P0013','Pentium主板')
/*销售明细表(sale_item)数据:*/
insertsale_item values (10001,'P0001',5 , 2500.00,'1996-10-22')
insertsale_item values (10001,'P0002',3 , 6500.00,'1996-10-22')
insertsale_item values (10001,'P0003',2 , 5300.00,'1996-10-22')
insertsale_item values (10001,'P0004',2 , 1600.00,'1996-10-22')
insertsale_item values (10002,'P0001',3 , 2600.00,'1996-11-10')
insertsale_item values (10002,'P0003',1 , 5300.00,'1996-11-10')
insertsale_item values (10002,'P0008',2 , 4800.00,'1996-11-10')
insertsale_item values (10003,'P0001',4 , 2700.00,'1996-10-15')
insertsale_item values (10003,'P0004',2 , 1580.00,'1996-10-15')
2.在销售主表sales中添加字段“发票号码” invoice_no,char(10),NOT NULL。
alter table sales add invoice_no char(10) NOT NULL;
3.添加外键约束:
a) 在销售主表sales的业务员编号字段sale_id上添加外键约束,参照字段为员工表employee中的字段员工编号emp_no,约束名为FK_sale_id。
alter table sales add foreign key (sale_id) references employee(emp_no);
b) 在销售主表sales的客户号字段cust_id上添加外键约束,参照字段为客户表customer中的字段客户号cust_id,约束名为FK_cust_id。
alter table sales add foreign key (cust_id) references customer(cust_id);
c) 在销售明细表sale_item的订单编号字段order_no上添加外键约束,参照字段为销售主表sales中的字段订单编号order_no,约束名为FK_order_no。
alter table sale_item add constraint FK_order_no foreign key(order_no) references sales(order_no)
d) 在销售明细表sale_item的产品编号字段prod_id上添加外键约束,参照字段为产品名称表product中的产品编号字段prod_id,约束名为FK_prod_id。
alter table sale_item add constraint FK_order_no foreign key(prod_id) references product(prod_id)
4.添加核查约束:
a) 将员工表employee中的薪水字段salary的值限定在1000至10000间,约束名为CK_salary。
alter table employee add constraint CK_salary check(salary between 1000 and 10000);
b) 将员工表employee中的员工编号字段emp_no设定为以“E”字母开头, 后面跟4位数的编号,约束名为CK_emp_no。
alter table employee add constraint CK_emp_no check(emp_nolike'E____')
c) 将员工表employee中的性别字段设定这取值只能是“男”和“女”。约束名为CK_sex。
alter table employee add constraint CK_sex check(sexin('男','女'))
d) 将销售主表sales中的发票号码字段invoice_no设定为以“I”字母开头,后面跟9位数的编号,约束名为CK_inno。
alter table sales add constraintCK_innocheck(invoice_nolike'I_________')
5.为销售主表sales中的字段发票号码invoice_no设置为唯一约束,约束名为UN_inno。
alter table sales add constraint UN_inno unique(invoice_no)
- 带你零基础入门express
- 动态控制C4C UI元素的显示和隐藏
- 深度学习(deep learning)发展史
- 遗传算法简述
- Spark详解03Job 物理执行图Job 物理执行图
- 干货|Kotlin入门第一课:从对比Java开始
- Spark详解04Shuffle 过程Shuffle 过程
- Spark详解02Job 逻辑执行图Job 逻辑执行图
- Spark详解01概览|Spark部署|执行原理概览Job 例子
- Spark详解05架构Architecture架构
- SQL Server常用命令(平时不用别忘了)
- Spark详解06容错机制Cache 和 Checkpoint Cache 和 Checkpoint
- SQL Server 学习笔记
- Collaborative Filtering(协同过滤)算法详解
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- JavaScript 设计模式学习总结与感悟(开发&面试必备)
- 3分钟短文 | PHP多维数组搜索值,就只能for循环?这样写更高效
- 如何获得tomcat管理员账号
- ant target间的dependency
- 如何用ant将JSP项目打成war包
- 3分钟短文 | MySQL备份和迁移sql文件,这个指令基础又关键
- 如何用ant给Java项目生成文档
- ant build里如何指定classpath
- Tomcat服务器java.lang.IllegalArgumentException异常
- 动态控制SAP CRM附件的可编辑性
- 关于node.js:ExpressJS、Websocket中的session会话共享
- 【STM32F429开发板用户手册】第23章 STM32F429的USART串口基础知识和HAL库API
- 【STM32F407开发板用户手册】第23章 STM32F407的USART串口基础知识和HAL库API
- 小姐姐提灯给你讲讲动态规划(万字长文)
- 解决fedora启动时显示cannot open font file true的办法 By HKL,