项目实施流程

1.需求怎么调研

1.业务现状
主要描述公司方面的业务现状

2.组织机构
公司:销售部,财务部,生产部,采购部,人力资源

进行数字摸底:公司人数,日程考勤管理需要处理的信息数量、
薪资处理人数、软件实际使用人数等基本信息。

3.项目范围
1.组织范围:公司下的哪些部门
2.产品范围:客户管理,订单管理,基础报表,销售收款这些
3.项目预算

4.整体需求
1、提高流程化管理效率,降低人工、无纸化办公。
2、建立业务财务一体化平台。
3、各类管理报表能够及时出具、提高时效性、准确性
4. IT应用环境现状与发展趋势需要考虑四个方面
 一:为公司现行软件系统的描述:
希望能明确公司财务系统,其中接口除数据交换及权限统一以外,
是否还有特别需求?
二:对于数据库有没有倾向性要求?
三:是本公司网络系统使用情况统计,
有没有正在全网应用的业务系统?运行情况如何?此单元着重需要公司IT部门配合完成。

5.1具体业务描述
1.客户管理
1)销售在Excel录入客户相关信息,为客户划分区域,发送给销售经理审批;客户信息:姓名、身份证、是否代理商、送货地址等信息。
2)销售经理根据客户信息选择一种体系价格,发送给销售总监审批;价格体系、
经销商价格、代理商价格、普通客户、公司员工。
3)销售总监审核通过后发送给财务进行备案。

5.2价格管理
1)采购部把每次发生的采购原料业务信息录入到Excel发送给销售总监。
2)销售总监根据采购部与销售部提供的信息更改销售价格,发送给总经理审批
3)总监理审批通过后发送给财务部,没有通过返回销售总监。
4)财务部对接受到的销售价格进行备案,备案后发送给销售员,同时需要每月发送月成本给销售总监。

6.管理需求
1.产品情况
2.客户是否欠款
3.各区域人员扩展客户数量
4.掌握仓库产品数量
5.出库自动满足大客户订单

7.其他软件情况
目前手工处理销售业务,财务系统只有总账模块

8.服务器
品牌:IBM	
型号:XSERIES_346
CPU:INTEL(R)  N ™ XRON 2.8GHZ
内存:2096464 KB RAM
硬盘:2000GB
操作系统:Windows2008R2企业版

9.网络
网络连接情况: 
1)光纤
2)网络带宽:300mbps
3)各客户端的IP获得方式:每台客户端指定IP

2.制定实施计划(实施流程,项目前期准备)

1.项目前期准备
编写项目启动会PPT
编写项目实施计划

前期准备阶段面临的问题
项目情况:
项目要达到什么目标?
实施条件是否具备?

客户情况:
客户组织架构是什么?
怎样联系客户?

销售的承若:
销售有没有承诺客户什么要求?
销售有没有遗留问题?

2.总结
2.1前期准备阶段流程
任命项目组,组建项目组,交接资料,准备项目资源,填写出差申请,联系客户

2.2资料
公司交接资料:
合同,销售与实施项目交接单
售前方案,业务方案

给客户的资料
项目启动会PPT

2.3联系客户
确认实施条件是否具备
确认项目地点
通知客户到场时间
与客户确认资料的传送方式
提醒客户查阅资料

联系客户注意事项
资料可以提前发送给客户或者咨询客户发送方式后进行发送
资料通过邮件发送客户,使用其他方式提醒,做到有据可依

前期准备阶段工作流程
在这里插入图片描述

3.项目启动阶段

3.1会议纪要
内容:
时间,地点,参会人员,目的,纪要
来源:实施工程师编写
会议纪要通过邮件发送
收件人为双方项目经理,抄送人为双方项目组成员

3.2总结
项目启动会流程
编写会议通知函,告知参会人员,会议前准备,会议进行中,会议结束,编写会议纪要,发送会议纪要

中高层沟通内容
沟通内容(高层)
项目启动会PPT、项目实施计划
关键用户

沟通内容(中高层)
组建项目组
项目启动会

项目启动会流程图
在这里插入图片描述

ehr:人力资源管理电子信息化
erp:企业资源计划
oa:办公
crm:管理系统

4.业务调研阶段

4.1业务调研方式有几种
实地考察:
现有系统,人员安排,业务处理流程,工作成果)

用户沟通:
快速了解客户的业务,还可以了解到战略信息、业务的具体信息

参考文献:
数据载体,收集客户方业务相关资料及工作成果,
资料:报表、记录表、岗位职责、业务书籍等

专题报告:
以会议的形式讨论具体的问题及解放方案
实施方提出具体问题
客户方准备专题报告

问卷调查:
编制调查表,要求被调查者根据调查表回答问题的方法

4.2业务调研阶段简介
定义:
实施工程师在了解客户业务以及需求的过程中,进行的一系列活动和工作

4.3主要工作:
调研准备
编写调研计划
进行业务调研
编写业务调研报告

4.3业务调研计划主要内容
1.调研的业务范围(财务付款,商品出库)
2.调研的职能范围(财务部,仓储部)
3.调研的方式(实地考察,用户沟通,参考文献)
4.调研的阶段(准备调研提纲,总体调研,业务部门调研,基础数据和参数整理,整理调研时间)
5.具体时间安排(如下图)

4.4业务调研报告
审核人:甲方经理,乙方经理
1.企业简介
2.组织机构(财务部,人力资源,生产部)
3.项目范围(公司)

4.整体需求
1、提高流程化管理效率,降低人工、无纸化办公。

2、建立业务财务一体化平台。

3、各类管理报表能够及时出具、提高时效性、准确性。

4.具体业务描述(价格管理,订单管理)

5.管理需求
1.产品销售情况
2.客户是否欠款
3.各区域销售人员扩展客户数量
4.掌握仓库产品数量
5.出库自动满足大客户订单

4.5工作形式
实施方项目组主导
客户方项目组配合

6.其他软件情况

7.关于服务器及网络

业务调研流程图
在这里插入图片描述
在这里插入图片描述

5.方案设计阶段

5.1编写项目方案
业务方案
1.1.方案概述
1.2.项目实施范围
1.3.项目组织架构

2.数据约定(客户信息约定,基础档案约定)

整体方案
3.发货业务(价格分类,定价单,销售订单)
4.退货业务
5.财务账务
6.信用管理及折扣(信用管理,控制资金风险)
7.报表管理
8.用户权限
9.功能清单(功能清单,功能开发清单)

5.2确认业务方案
定义:实施工程师把业务方案发送给客户方项目组确认

确认流程:内部审核-》外部审核-》签字
确认形式:会议,需要双方项目经理签字以及盖章

5.3收集基础数据
数据分类:
辅助数据:客户分类,出库类型
基础数据:部门数据,人员信息
初始化数据:又称为动态数据,软件系统中的期初数据

数据收集:
Excel模板导入(客户方数据量多):
1.实施工程师培训客户Excel模板规范客户在2.Excel模板中整理数据
3.实施工程师使用Excel模板导入系统

检查数据:数据规范,数据去重,数据有效性

方案设计流程图
在这里插入图片描述
业务方案流程图
在这里插入图片描述
收集基础数据流程图
在这里插入图片描述

6.系统建设阶段

主要工作:
1.软硬件安装部署
2.软件系统配置
3.软件系统测试
4.软件系统初始化

6.1软硬件安装出现问题?
数据库安装:
1.关闭防火墙
2.关闭杀毒软件
3.断开网络
4.设置数据库程序兼容性
5.以管理员的身份运行程序

数据导入:辅助数据、基础数据、初始化数据导入系统
导入方式:Excel模板导入,手工录入系统

Excel模板导入:导入数据时会发生数据导入失败
根据导入失败提示完善数据
手工录入系统:检查数据完整性、有效性

6.2测试系统时出现BUG怎样解决?
bug描述(如图)

6.3系统测试
测试数据在系统中的运行情况
测试系统功能、业务流程、业务数据是否正常

BUG修复:
下载修复文件
测试服务器进行测试
升级正式服务器系统

6.4软件系统初始化
在正式服务器中系统首次使用时,根据客户方业务进行的系统配置,并录入基础数据和初始数据的过程

经验:
1.实施工程师和客户方的关键用户一起完成软件配置、系统测试工作
无需在用户培训阶段培训关键用户
2.在上线支持阶段帮助实施工程师处理问题
初始化数据导入系统

3.初始化数据量大、业务随时发生、会改变初始化3.1数据,要注意导入系统的时间节点
3.2未完成的业务会影响初始化数据
3.3通常实施工程师晚上导入初始化数据

4.分配账号
注意密码的安全性,提醒客户修改密码

5.升级系统
5.1通知用户升级时间,提醒用户升级期间请勿登录系统进行操作
5.2系统升级前,数据进行备份
5.3升级补丁文件进行备份
5.4记录升级系统的相关信息

6数据库自动备份
6.1使用数据库本身的备份工具
6.2第三方备份工具
自动备份后,注意硬盘容量
6.3备份工具中,设置自动删除N天前的备份文件


7.总结
7.1服务器环境
1.Raid、操作系统

7.2数据库安装注意事项
1关闭防火墙、关闭杀毒软件、断开网络、设置程序兼容性、以管理员的身份运行程序
2.实施工程师安装数据库,数据库可能关联实施方其他软件
7.3设备点位表
1.产品名称、数量、安装位置、备注
2.项目安装确认单
3.项目安装简介、项目运行环境、产品(软件)安装情况、产品(硬件)安装情况、遗留问题

服务器简介

物理服务器:提供计算机服务的设备
云服务器:
区别
敏捷性:部署云服务器用时很短,物理服务器用时很长
灵活扩展:云服务器配置可以轻松的进行扩展,物理服务器相反
运维:云服务器比物理服务器运维成本低
可靠性:云服务器可以直接迁移,物理服务器出了问题需要修复

服务器类型
在这里插入图片描述
bug描述
在这里插入图片描述
BUG处理流程图
在这里插入图片描述

7.用户培训阶段

7.1培训资料都有哪些?
必选:岗位操作手册,系统功能说明文档,培训签到表
可选:培训考试题,培训考核记录,笔试题,上机操作题

岗位操作手册:
内容:系统登录方式,密码修改方式,系统布局讲解,岗位负责功能讲解-》单据,单据状态,单据功能,报表等

7.2用户培训方式怎样选择?
远程:远程培训(QQ,微信)
面授:岗位培训,一对一培训,一带一路
讲授法,演示法,练习法

7.3用户培训流程是什么?
如图
组成部分
培训时间
培训地点
培训内容
受训员批次
受训员
说明
签字页

7.4总结:
1.培训类型
远程
面授
岗位培训
一对一培训
一带一路
2.培训对象
决策层(部门领导)
维护层(指定的维护人员)
操作层(部门员工)
3.培训方法
讲授法、演示法、练习法


7.5用户培训计划
如图

7.6用户培训总结
如图
1.培训目的
2.培训组织
3.培训对象
4.培训内容
5.附件:培训签到表

培训方法选择
在这里插入图片描述
用户培训流程图
在这里插入图片描述
培训过程
在这里插入图片描述
用户培训计划
在这里插入图片描述
在这里插入图片描述
用户培训总结:
在这里插入图片描述

8.上线支持阶段

8.1工作内容
1.系统初始化
(数据初始化,初始化数据准备,导入数据,检查数据)
2.系统试运行
(系统上线计划,系统试运行通知,试运行支持,系统试运行总结)
3.试运行支持
4.系统上线
5.上线支持

系统初始化
数据初始化准备:
1.初始化数据准备
01培训客户方相关人员初始化数据模板录入规范
02客户方相关人员提供初始化数据
03实施工程师导入初始化数据

2.导入数据
辅助数据-》基础数据-》初始化数据

3.检查数据


8.2系统上线计划
组成部分
首页,版本信息,目录,文档说明,
系统上线阶,说明,系统上线范围及步骤安排,
数据导入说明 ,上线支持方案,附件


8.3系统试运行通知
组成:试运行目的,试运行时间,试运行范围,运行重点内容,试运行要求,注意事项

8.4系统试运行注意事项
如图

8.5系统试运行前检查事项
用户账号权限-》系统配置-》系统数据

系统试运行步骤
在这里插入图片描述

发送计划、通知流程
在这里插入图片描述
客户需求处理流程图
在这里插入图片描述
系统试运行注意事项
在这里插入图片描述

9.项目验收

9.1验收报告
系统验收确认书:
1.实施主要阶段
2.系统实施历程
3.项目评价
4.已实施模块(如图)
5.验收签字

项目阶段的作用:(如图)

9.2验收会议
1.项目验收方式
1.分模块验收(大型项目)
阶段验收或单个模块验收
2.整体验收

9.3项目验收会参会人员
实施方参会人员
项目经理
销售
实施工程师
客户方参会人员
项目经理
项目组成员
关键用户
客户方项目组邀请的专家(如有)

9.4项目运维交接
1.适用场景
项目验收会后
2.交接人
实施工程师
3.接收人
客户方项目经理或客户方关键用户
4.交接内容
项目验收报告
岗位培训说明书
系统功能说明书
服务器、数据库、软件系统或其他软件的管理员账号、密码

总结:
1.项目验收前准备
项目验收报告
项目验收资料
2.沟通召开项目验收会
3.召开项目验收会
项目验收方式:分模块验收、整体验收
4.项目运维交接方式
实施方公司交接
项目现场交接

在这里插入图片描述
项目阶段的作用
在这里插入图片描述
召开项目验收会流程
在这里插入图片描述
验收前准备
在这里插入图片描述
项目运维交接-参与人员
在这里插入图片描述
项目运维交接-交接内容
在这里插入图片描述

10.项目管理

甘特图:
以图示的方式通过活动列表和时间刻度形象的表示出任何特定的项目的任务顺序和持续时间

在这里插入图片描述
确定项目范围-要明确的内容
在这里插入图片描述
范围案例应对措施
在这里插入图片描述
项目经理与客户方沟通
在这里插入图片描述
在这里插入图片描述
团队管理职能
在这里插入图片描述
控制团队成员的方法包含3个步骤
在这里插入图片描述
指导团队成员的方法包含7个步骤
在这里插入图片描述
九大知识领域
在这里插入图片描述
在这里插入图片描述

11.SQL语句

1.建表

USE 数据库名  选择数据库
CREATE   TABLE    test(
test1  INT ,
test2  INT
);

插数据
插入单条记录(自动增长列,是不需要任何的赋值的操作,根据插入的数据的信息,直接赋值)
INSERT INTO t_student(lodinPWD,studentName,sex,gradeID,phone,address,bornDate,email,ipdentityCard)
VALUES('123','zs','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')

INSERT INTO t_grade VALUES(1.'一年级')
同时插入多条的记录
INSERT INTO t_student(lodinPWD,studentName,sex,gradeID,phone,address,bornDate,email,ipdentityCard)
VALUES
('123','zs','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','l4','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','ww','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','ml','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','sq','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','jb','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','hj','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')
('123','xs','男',1,'梅溪湖','1999-09-09','123456789@qq.com','430922222222002020')

2.删除表,修改表

#删除数据
#删除表数据
DELETE FROM  test2;
#删除指定数据
DELETE FROM t_student WHERE studentName='shz'

#修改表的名称
ALTER   TABLE  test  RENAME test1;
#数据表添加列
ALTER  TABLE  test1 ADD  test3  VARCHAR(200);
#修改列 信息
ALTER  TABLE  test1 CHANGE   test3   test4   DOUBLE;
#删除列
ALTER  TABLE test1 DROP  test4;
#给表添加主键
ALTER   TABLE  test1  ADD CONSTRAINT pk_test1   PRIMARY  KEY test1(test1);

3.函数

#聚合函数  最大    最小  平均  总和  括号里面使用的列的数据类型  必须是数字的 不能够是字符的
#最大  
SELECT  MAX(gradeID)  FROM t_grade;
#最小
SELECT  MIN(gradeID)  FROM t_grade;
#平均
SELECT  AVG(gradeID)  FROM t_grade;
#总和
SELECT  SUM(gradeID)  FROM t_grade;
#数据表中总行数
SELECT  COUNT(gradeID)  FROM t_grade;

#连接字符串
SELECT CONCAT('m','y','s','q','l')
#替换指定位置的字符串
SELECT  INSERT('今天天气和美好',1,4,'abcdef')
#截取字符串
SELECT  SUBSTRING('今天天气和美好',2,10)
#日期
SELECT  CURDATE()
#时间
SELECT  CURTIME();
#时间和日期
SELECT   NOW();

#向上取整
SELECT  CEIL(2.3)
#向下取整
SELECT  FLOOR(2.9)
#四舍五入
SELECT  ROUND(2.923,3)
#随机数
#一段SQL代码
# 1.定义变量进行数据值的接收
# 2.使用长度的函数判断当前位数是否是4位
# 3.如果不满足4位则重新产生
# 4.满足则使用ROUND直接返回4个位
SELECT  RAND()*10000

4.视图

创建视图的语法:
01.CREATE [OR REPLACE] VIEW view_name[(alias[, alias…])]
02.AS subquery ;
创建一个简单视图V_EMP_10,来显示部门10中的员工的编码、姓名和薪水:
CREATE VIEW v_emp_10
AS
SELECT empno, ename, sal, deptno
FROM emp
WHERE deptno = 10;

查看视图结构:
DESC v_emp_10;


## 5.存储过程

```bash
CREATE  PROCEDURE  num_from_employee (IN emp_id INT, OUT count_num INT )  
          READS SQL DATA  
          BEGIN  
              SELECT  COUNT(*)  INTO  count_num  
              FROM  employee  
              WHERE  d_id=emp_id ;  
          END
 上述代码中,存储过程名称为num_from_employee;输入变量为emp_id;输出变量为count_num。SELECT语句从employee表查询d_id值等于emp_id的记录,并用COUNT(*)计算d_id值相同的记录的条数,最后将计算结果存入count_num中。代码的执行结果如下
代码执行完毕后,没有报出任何出错信息就表示存储函数已经创建成功。以后就可以调用这个存储过程,数据库中会执行存储过程中的SQL语句。

  说明:MySQL中默认的语句结束符为分号(;)。存储过程中的SQL语句需要分号来    结束。为了避免冲突,首先用"DELIMITER &&"将MySQL的结束符设置为&&。最后再用"DELIMITER ;"来将结束符恢复成分号。这与创建触发器时是一样的。

6.主外键关系

#给表添加主键
ALTER   TABLE  test1  ADD CONSTRAINT pk_test1   PRIMARY  KEY test1(test1);

#创建外键(创建在你的主表上的)  外键表中的关系的列 是外键表的主键   所以主外键关系
ALTER  TABLE  t_student ADD  CONSTRAINT fk_gradeID
FOREIGN  KEY (gradeID)
REFERENCES t_grade(gradeID);

语法:
主键:ALTER   TABLE  test1  ADD CONSTRAINT 表名 PRIMARY  KEY test表名(主键);

外键:ALTER  TABLE  外键表名 ADD  CONSTRAINT 外键名
FOREIGN  KEY (外键表主键)
REFERENCES 外键表名(外键表主键);

7.函数

#聚合函数  最大    最小  平均  总和  括号里面使用的列的数据类型  必须是数字的 不能够是字符的
#最大  
SELECT  MAX(gradeID)  FROM t_grade;
#最小
SELECT  MIN(gradeID)  FROM t_grade;
#平均
SELECT  AVG(gradeID)  FROM t_grade;
#总和
SELECT  SUM(gradeID)  FROM t_grade;
#数据表中总行数
SELECT  COUNT(gradeID)  FROM t_grade;

#连接字符串
SELECT CONCAT('m','y','s','q','l')
#替换指定位置的字符串
SELECT  INSERT('今天天气和美好',1,4,'abcdef')
#截取字符串
SELECT  SUBSTRING('今天天气和美好',2,10)
#日期
SELECT  CURDATE()
#时间
SELECT  CURTIME();
#时间和日期
SELECT   NOW();

#向上取整
SELECT  CEIL(2.3)
#向下取整
SELECT  FLOOR(2.9)
#四舍五入
SELECT  ROUND(2.923,3)
#随机数
#一段SQL代码
# 1.定义变量进行数据值的接收
# 2.使用长度的函数判断当前位数是否是4位
# 3.如果不满足4位则重新产生
# 4.满足则使用ROUND直接返回4个位
SELECT  RAND()*10000

8.备份表

1.全表结构备份:

   SELECT * INTO new_table_name

   FROM old_tablename;

   示例:备份student表,备份表取名为student_backup

   select * into student_backup

   from student ;
   
2.如果只备份表中的某些列:

SELECT column_name1,column_name2...
INTO new_table_name 
FROM old_tablename
示例:只备份student表中的sno,name列入新表student_backup
  select sno,name into student_backup

   from student ;

3.如果需要将表中满足一定条件的记录进行备份,则可以使用where字句配套使用

    示例:将所有性别为男的学生记录备份到新表student_backup

   select * into student_backup

   from student

   where sex='男';

9.索引

创建索引
这是最基本的索引,它没有任何限制。它有以下几种创建方式:

CREATE INDEX indexName ON mytable(username(length)); 

如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。

修改表结构(添加索引)
ALTER table tableName ADD INDEX indexName(columnName)

创建表的时候直接指定
CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
);  
删除索引的语法
DROP INDEX [indexName] ON mytable; 

唯一索引
它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

创建索引
CREATE UNIQUE INDEX indexName ON mytable(username(length)) 
修改表结构
ALTER table mytable ADD UNIQUE [indexName] (username(length))
创建表的时候直接指定
CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
UNIQUE [indexName] (username(length))  
 
);  

使用ALTER 命令添加和删除索引
有四种方式来添加数据表的索引:

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。


使用 ALTER 命令添加和删除主键
主键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空(NOT NULL)。实例如下:

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
你也可以使用 ALTER 命令删除主键:

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;
删除主键时只需指定PRIMARY KEY,但在删除索引时,你必须知道索引名。

显示索引信息
你可以使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。

尝试以下实例:

mysql> SHOW INDEX FROM table_name; \G

10.三表联查

求三表联合查询的SQL查询语句
table1中id,name,table2_id;
table2中id,name;
table3中id,name,table2_id;
三表是互相关联的,要查所有字段并且排序请问这个语句怎么写?
上面写错了,是下面的
table1中id,name,table2_id,table3_id;
table2中id,name;
table3中id,name,table2_id;

车讯语句:select username,psw from (a1 left join a2 on a1.a1_id=a2.a1_id) left join a3 on a1.a1_id=a3.a1_id

这样写:

SELECT

S.SName AS 姓名, CS.CourseName AS 课程, C.Score AS 成绩

FROM Students AS S

INNER JOIN Score AS C ON (S.SCode = C.StudentID)

INNER JOIN Course AS CS ON (CS.CourseID = C.CourseID

扩展资料:
SQL联合查询的分类

一、内连接查询:只查询左边表有且右边表也有的数据,本质上是依据外键关系,在笛卡尔积查询的基础上过滤出正确的数据。

语句有2种形式:

Select * from dept ,emp where dept.id=emp.dept_id

Select * from dept inner join emp on dept.id =emp.dept_id

二、外连接查询:外连接是用于查询俩边一边有一边没有的数据。

三、左外连接查询:在内连接的基础上增加上左边表有而右边表没有的数据

语句:Select * from dept join emp on dept.id=emp.dept_id

四、右外连接:在内连接的基础上增加上右边表没有的记录

语句:Select * from dept right join emp on dept.id =emp.dept_id

多表联结查询—三表联结
SELECT
S.SName AS 姓名, CS.CourseName AS 课程, C.Score AS 成绩
FROM Students AS S
INNER JOIN Score AS C ON (S.SCode = C.StudentID)
INNER JOIN Course AS CS ON (CS.CourseID = C.CourseID


比如有三张表,student,teacher , project :

第一种方法:select * from student,teacher,project where student.id=teacher.sid and student.id=project.sid;

第二种:select * from student inner join teacher on student.id=teacher.sid inner join project on student.id=project.sid;

11.高级查询

DROP TABLE IF EXISTS temp;

#如果有80分以上的成绩,显示分数排在前5名的同学
SELECT * FROM t_result
#select * from t_result where exists(select * from t_result where studentResult>80)
#表示当前的表中是存在80以上的信息
#mysql中没有top关键字
SELECT * FROM t_result WHERE EXISTS(SELECT * FROM t_result WHERE studentResult>80)
ORDER BY studentResult DESC LIMIT 0,5

#如果全部为通过考试(60分及格),认为本次考试偏难,计算的该次考试平均分加5分
#聚合函数苏产生的列是虚拟的列,并不是实际上存在于数据库中
#他是根据使用的聚合函数进行计算出来的列
#所以聚合函数的列是不能和表中实际上存在的列合并在一起使用的
SELECT AVG(studentResult)+5 FROM t_result
WHERE NOT EXISTS(SELECT * FROM t_result WHERE studentResult>60)

#如果有1的学生,就查询参加学科考试的学员学号,科目编号,考试成绩,考试时间
SELECT * FROM 
(SELECT s.`studentNo`,su.`subjectNo`,r.`subjectNo`,r.`examDate` FROM t_student s
INSERT JOIN t_result r ON r.`studentNo`=s.`studentNo`
INSERT JOIN t_subject su ON su.`subjectNo`=r.`subjectNo`
WHERE s.`gradeID`=2) temp;
WHERE EXISTS(SELECT * FROM t_student WHERE gradeID=1)


#为每个学生制作在校期间每门课程的成绩单
#要求每个学生参加每门课程的最后一次考试作为该生本课程的最终成绩

#得到课程的最后的成绩
SELECT * FROM t_result WHERE examDate=(SELECT MAX(examDate) FROM t_result)
#得到的一共有多少门课
SELECT	subjectNo FROM t_result GROUP BY subjectNo

SELECT * FROM t_result WHERE examDate=(SELECT MAX(examDate) FROM t_result)
AND subjectNo IN(SELECT subjectNo FROM t_result GROUP BY subjectNo)


SELECT * FROM t_result
WHERE examDate IN(SELECT MAX(examDate) FROM t_result
GROUP BY subjectNo)



SELECT * FROM sys_use
(SELECT s.`studentNo`,su.`subjectNo`,r.`subjectNo`,r.`examDate` 
FROM t_student s
INSERT JOIN t_result r ON r.`studentNo`=s.`studentNo`
INSERT JOIN t_subject su ON su.`subjectNo`=r.`subjectNo`
INSERT JOIN t_grade g  ON s.`grafeID`=g.`gradeID`
SELECT * FROM t_result
WHERE examDate IN(SELECT MAX(examDate) FROM t_result
GROUP BY subjectNo) temp
GROUP BY studentNO

#创建租房网的数据表
CREATE TABLE sys_use(
uid   INT       PRIMARY KEY,
uName VARCHAR(200) NOT NULL,
uPassWord VARCHAR(200) NOT NULL
)
  • 16
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值