工业物联网的功能及其优点

为什要需要工业互联网(IIoT):

我们认为“智能的”机器比人类能更好地准确和持续地捕获和通信实时数据。这些数据使公司能够改善提高运行低效率问题, 节省时间和资金, 把业务做得更加智能。在制造业中, IIoT 在质量控制、可持续和绿色发展、供应链溯源和整体供应链效率等方面有着巨大的潜力。在工业环境中, IIoT 是可预测的维护、增强的现场服务、能源管理和资产跟踪等过程的关键。

IIoT 如何工作

IIoT 是通过通信技术连接起来的设备网络, 用来建立监控、收集、交换和分析数据的系统, 提供有价值的数据使工业公司能够更快地做出更精明的业务决策。

工业物联网系统包括:

–智能资产,即应用程序、控制器、传感器和安全组件–能够感知、通信和存储有关自己的信息。

–数据通讯基础设施, 如云服务。

–应用程序,从原始数据生成业务信息并加以分析。

边缘设备(包括传感器, 驱动器和其他端点)和智能资产将信息直接传输到数据通信基础结构。例如, 它被转换为某一机器运行的可操作信息。这些信息随后可用于预测性维护, 以及优化业务流程。

IIoT 的好处

—企业的预测维修。这包括使用从 IIoT 系统生成的实时数据来预测机械缺陷的组织。例如, 在它们出现之前, 使公司能够在部件出现故障或机器失灵之前采取行动解决这些问题。

—改进了现场服务。IIoT 技术可帮助现场服务技术人员在客户设备成为重大问题之前识别潜在问题, 使技术人员能够在客户出真正故障之前解决问题。

—资产跟踪。供应商、制造商和客户可以使用资产管理系统跟踪产品在整个供应链中的位置、状态和状态。如果货物损坏或有损坏的危险, 系统将立即向管理员发出警报, 使他们有机会采取即时或预防性行动来补救。

—提高客户满意度。当产品连接到互联网, 制造商可以捕获和分析有关客户如何使用他们的产品的数据, 使制造商和产品设计师量身定做未来的物联网设备, 并建立更多以客户为中心的产品路线图。

—改善设施管理。由于制造设备易受磨损, 以及工厂内的某些条件, 传感器可以监控振动、温度和其他可能导致操作条件低于最佳状态的因素。

IIoT 与物联网(IOT)

虽然物联网和工业互联网的东西有许多共同的技术, 包括云平台, 传感器, 连通性, 机器到机器的通信和数据分析, 它们用于不同的目的。许多应用程序将设备连接到多个纵向领域, 包括农业、医疗保健、企业、消费者和公用事业, 以及政府和城市。很多设备包括智能电器, 健身带和其他应用程序,这些物联网设备一般的应用场景不是在紧急的情况下告警。

但IIoT是在石油和天然气、公用事业和制造业等行业中连接机器和设备。IIoT需要部署系统故障和停机时间等可能会导致高风险的情况,诸如有生命危险的情况。IIoT 应用程序也更关注提高效率和改善健康或安全, 而不是以用户为中心的大量普通物联网应用程序。

IIoT 应用程序和示例

电力公司ABB正在使用连接传感器, 以监测其机器人的维修需求, 以便在部件失效前进行修复。商用喷气机制造商空客也推出了它称之为 “未来工厂” 的数字制造计划, 以精简运营和提高生产效率。空客已将传感器集成到车间的机器和工具中, 并为员工配备可穿戴的技术, 例如工业智能眼镜, 旨在减少错误和加强工作场所的安全。另一机器人制造商FANUC公司 正在使用其机器人内部的传感器, 以及基于云计算的数据分析, 来预测其机器人中即将失效的组件。这样做可以使工厂的管理者在方便的时间安排维护, 降低成本, 避免可能的停机时间。奥地利汽车制造商Magna Steyr正利用 IIoT 跟踪其资产, 包括工具和车辆部件, 并在必要时自动订购更多的股票。该公司还测试 “智能包装 “, 使用用蓝牙技术在仓库跟踪零件。

ERP项目——SAP实施方法论

项目管理过程中,出于项目管理的规范,软件供应商都会针对本企业软件特点,及客户群特点,制定不同的项目实施方法,今天,我们来了解下SAP的实施方法论,SAP将其项目实施划分为6个阶段:

分别是:项目准备、业务蓝图、项目实现、最终准备、启动和支持、运营。

那么每个阶段的工作内容都是什么呢?

一、项目准备

在这个阶段中,要开始组建项目团队,并开始确定、搜集、开发和管理项目实施所需的各种资源与工具。完成一些里程碑工作:

获得高层管理及相关干系人支持;

明确项目目标;

建立有效的决策流程;

创造有利于变更和重新设计的工作环境;

组织一支合格、有能力的项目团队。

二、业务蓝图

业务蓝图设计阶段,旨在提取实施公司的相关信息,然后把现有机构的业务流程,映射到行业最佳实践中去。设计信息通过一些列调研问卷,挖掘出具体的业务数据。具体工具主要是问答数据库和解决方案管理程序(SolMan)。

三、实现

将业务蓝图变成现实,分别在两个工作包中完成,“基线配置”和“细化配置”,80%工作在“基线配置”,除此之外还进行一些培训、功能测试、集成测试、性能测试、压力测试等工作。

基线配置:由咨询团队配置一个具有基本功能的系统,用作之后细化设计的基础系统。

细化配置:基础系统建立后,由实施团队对系统进行细化,以满足蓝图提出的具体业务流程需求等。

四、最终准备

最终准备阶段包括,启用计算机平台以及SAP应用程序的最终准备和微调工作;把旧系统的数据迁移到新系统;同时,剩余的功能、集成和压力测试都必须在此阶段完成。

最终准备阶段,还需对系统进行功能检查,是否系统最优,符合上线要求,为下一阶做好充足的准备和规划。

五、启用支持

系统启用这个里程碑事件,只是一个时点,只需扣动扳机,用户就可以开始使用新系统了,但是,策划如何顺利的实现启动,实际上与人们的想象大相径庭。需要针对设想的业务功能、流程、部署情况、底层技术、性能等进行监视,监视是否满足业务需求等,同时维护合同、咨询协议等。

六、运营(运行)

运营阶段的目标,是确保系统能够持续良好的运行。可以通过多种工具帮助软件公司,实现可用性高、性能良好的系统,其中最重要的是SAP SolMan。

SAP实施方法论

SAP实施方法论涵盖五大步骤,包括:项目准备、蓝图设计、系统实现、最后准备、上线与支持。如何根据现状调研与需求分析结果做“蓝图设计”是其中比较重要的环节。

1、 业务蓝图设计的原则:

1) 站在客户和流程使用者的角度设计方案。切勿一个流程中涵盖多个业务处理,不易于用户理解和遵循。

2) 每个流程方案的设计,与客户公司岗位分工相结合,要确定具体执行者,必要时配合变革管理。

3) 流程方案设计过程是不断内部自我否定,确保交付给用户的是一个清晰且可以和实际业务操作配合的流程方案,同时要得到流程负责人书面的签署与确认。

4) 各业务流程设计中要考虑关键性的表单和报表做配合,作为流转和分析的依据。

2、 关键业务流程方案设计

1) FI相关的重点设计:FI相对各家公司都比较规范和一致,流程概念较弱。

会计科目表:要根据用户现行的科目体系,配合SAP必要的要求,比如GR/IR、各种差异与调整科目等,设计出符合未来需求的科目体系,并且严格定义每个科目的使用规范和核算范围。

备选科目和合并科目要根据需要进行设计,如果要在本地会计准则之外出具符合其他会计准则的报表,可以通过备选科目并借助特殊用途分类账实现。如果要使用合并报表功能,可以考虑建立合并科目表。另外会计科目是分两个层次维护的(科目表/公司代码),相应分工也要明确,尤其是集团性公司。

应收与应付流程:包括收款与清账流程、付款与清账流程、未走后勤模块而由财务直接处理的零星发票记账流程以及各种对账流程。比如清账是采用部分还是剩余法需要确定,因为可能会影响对账报表的取数规则、应收票据的背书、贴现等特殊处理流程。另外员工作为供应商管理,其借款与报销流程也是重要流程。同时结合SAP的特性,要确定要用到哪些特别总账标志,实现科目统驭管理。

固定资产管理流程:要考虑固定资产主数据维护、资产购置流程(走FI直接购置还是MM采购流程购置)、在建工程资本化流程。资本性支出预算管理(用内部订单还是WBS实现预算管控)以及预算变更与调整流程。固定资产日常交易都是通过业务类型实现的,可结合客户实际单独建立符合其账务处理要求的业务类型。另外折旧方法的设计是最复杂也是最重要的内容,要设计折旧表、折旧范围、折旧码以及定义每种业务处理时总账科目。

2) CO相关的重点设计:CO的设计要考虑公司产品或服务特性以及MES系统实际情况。

利润中心与成本中心:如果管理上需要单独分析某一业务单元盈利情况,可以考虑利润中心分开建立,但不是一定要通过利润中心实现,也可通过其他维度。按利润中心出具损益表是相对比较简单,但要按利润中心出具资产负债表就比较繁琐了。

成本中心设置,如果是管理类的,可以参考公司组织架构进行设计,但如果是生产类的,就要考虑成本核算精细化程度以及SAP每个成本中心只能定义6个作业类型的功能限制以及PP工作中心设计情况综合考虑。

分配与分摊循环:发生的间接费用,是需要按费用性质与受益情况在不同成本中心间进行分配,最后通过成本中心提供作业,由生产订单来吸收承担。需要设计分配顺序以及分配标准等因素。

标准成本制定的流程:对于新产品,其标准成本是如何确定的,要有明确的流程包括BOM与Routing相关量化指标如何提供。产品标准成本准确性直接决定了成本差异大小,从而影响实际成本准确度。

CO月结流程中除了设计标准的操作和步骤,更重要的是确定月结执行前check list,因为CO数据都是来源于后勤与财务,对业务数据检查是重点,而CO本身的操作流程倒不是最重要的。

3) MM相关的重点设计:MM设计要考虑CO与SD PP的相关需求。

物料编码与库位设置:尤其是物料编码是最核心最重要的,要明确定义哪些物资是要库存管理,哪些是直接费用化管理。库存管理的一定要编码建立主数据,费用化的就不需要。

采购处理:采购申请是在系统内还是系统外,如何审批。定义不同业务(原料、资产、外包服务)采用何种采购处理流程和订单类型。采购收货数量容差控制等问题。

库房管理:库房的收货和发货涉及不同类型的处理,除了定义系统流程,更重要的是建立库房管理制度以及相应的流转表单。确保帐实相符是最核心原则。

发票校验流程:确定发票校验的岗位要符合职务不相容原则,确定发票价格与数量的容差控制。

4) SD相关的重点设计:要考虑税务要求、成本与利润分析的相关要求。

客户与信贷管理:客户主数据的分类规则是非常重要的,在设计时首先确定用户对客户有哪些分析维度的要求,然后确定如何规划分类,因为有些维度并不一定要通过客户分类反应,而是可以在主数据中通过特性字段满足的。另外信贷管理,尤其是集团公司,是集中信贷管理还是分散管理,涉及了信用控制范围的设计,以及信贷冻结与释放的流程与审批表单、信用控制点的确定(订单时/发货时)。对于集团企业,客户还要考虑如何避免重复建立的问题。

价格管理:分析现行的价格确定是按客户+产品,还是有其他更灵活的定价维度。以及报价是含税还是不含税报价。对于单价极低的产品考虑按一定批量数作为价格基数,避免价格小数位数不足。尤其是代工服务企业的报价非常灵活,在确定好定价维度后,还要考虑这些维度的信息在订单中如何取得。

订单与发货和开票:销售订单是整个销售业务的源头凭证,决定了客户、产品、数量、价格等重要信息。对于按单生产(MTO)或库存式生产(MTS)企业,其销售订单管理流程也是有差别的。销售开票要符合税务要求,包括与金税的接口逻辑。发票的红冲退回、折让处理对于月末已发货未开票的产品如何处理(虚拟发货取消/寄售方式处理等)等特殊情况是关键。

5) PM相关的重点:设备维护功能要考虑设备与FI固定资产的关联的实现。设备功能位置与维修工作中心设定。预防性维修与日常维修的处理流程,维修申请单记录的内容与状态管理,以及维修订单如何收集各种维修费用,维修订单领料流程等。

spark基础

取值操作(RDD):

take(n):返回n个元素

top(n):返回最大的n个元素

first():返回第一个元素

collect():返回所有元素

元素变换(RDD):

1、map()

map()函数需要一个参数,参数是一个函数,通过这个函数变换之后,返回一个新的RDD,函数一般用lambda

2、flatMap()

对RDD每一个元素执行函数变换,返回一个迭代器,最后展平结果

3、filter()

通过函数对元素进行过滤,只有结果为Ture才返回

4、uunion(): 联合  (两个rdd并集)

intersection(): 交集

subtract(): 差集

cartesian(): 笛卡尔

元素操作(RDD):

1、count(): 返回rdd元素个数

2、reduce():  并行汇总所有rdd元素

3、aggregate():

键值变换(RDD):

1、reduceByKey():在每一个键组内进行汇总变换

2、groupByKey():将值放到相同键内,类似于reduceByKey的汇总,值是一个迭代器

3、sortByKey():得到以键排序的RDD      当条件为Ture或False为正序或倒序

4、mapValues():可以理解为是将键值RDD中的值作为参数传递的map函数

5、combineByKey():

键、值 操作(RDD):

1、countByKey():返回每一键组内的记录数,是一个字典

2、lookup():返回某键下的所有值

3、collectAsMap():返回以map形式的串行结果

sql索引和备份

索引就是用来加速查询的。数据库索引与书籍索引类似:有了索引就不需要翻遍整本书,数据库则可以直接在索引中查找,是的查找速度提高几个数量级,在索引中找到条目之后,就可以直接跳转到目标文档的位置。
db.cs.find({age:100}).explain();//可以打印出查找详情
db.cs.ensureIndex({age:1})//对age创建索引
db.c3.dropIndex({age:1})//删除索引
db.c3.ensureIndex({age:1},{unique:true});//唯一索引,如果在某个key上面创建了唯一索引,就不能重复
MongoDB提供了备份和恢复的功能,分别是MongoDB下载目录下的Mongodump.exe和Mongorestore.exe文件。
备份数据命令:
mongodump -h dbhost -d dbname -o dbdirectory
-h:MongoDB所在的服务器地址
-d:需要备份的数据库实例
-o:备份的数据存放的目录
恢复数据使用下面的命令:
mongorestore -h dbhost -d dbname -directoryperdb dbdurectory
-h:MongoDB所在的服务器地址
-d:需要恢复的数据库实例
-directoryperdb:备份数据所在的位置
数据导入导出:
Mongoexport -h 主机IP:27017 -d 数据库名 -c 集合名 -o 导出数据的文件路径和文件名
可以导到txt,excel,wps等
Mongoimport -h 主机IP:27017 -d 数据库名 -c 集合名  导入数据的文件路径和文件名

sql事务

SQL事务
一、事务概念
    事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。这特别适用于多用户同时操作的数据通信系统。例如:订票、银行、保险公司以及证券交易系统等。
二、事务属性
事务4大属性:
1   原子性(Atomicity):事务是一个完整的操作。
2   一致性(Consistency):当事务完成时,数据必须处于一致状态。
3   隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。
4   持久性(Durability):事务完成后,它对于系统的影响是永久性的。
三、创建事务
T-SQL中管理事务的语句:
1 开始事务: begin transaction
2 提交事务:commit transaction
3 回滚事务: rollback transaction
事务分类:
1 显式事务:用begin transaction明确指定事务的开始。
2 隐性事务:打开隐性事务:set implicit_transactions on,当以隐性事务模式操作时,SQL Servler将在提交或回滚事务后自动启动新事务。无法描述事务的开始,只需要提交或回滚事务。
3 自动提交事务:SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交,否则回滚。
示例:张三转800元到李四帐户上。
use stuDB
go
–创建帐户表bank–
if exists(select* from sysobjects where name=’bank’)
drop table bank
create table bank
(
customerName char(10), –顾客姓名
currentMoney money –当前余额
)
go
/*–添加约束,帐户不能少于元–*/
alter table bank add
constraint CK_currentMoney check(currentMoney>=1)
/*–插入测试数据–*/
insert into bank(customerName,currentMoney)
select ‘张三’,1000 union
select ‘李四’,1

select * from bank
go

/*–使用事务–*/
use stuDB
go
–恢复原来的数据
–update bank set currentMoney=currentMoney-1000 where customerName=’李’
set nocount on –不显示受影响的行数
print ‘查看转帐事务前的余额’
select * from bank
go

/*–开始事务–*/
begin transaction
declare @errorSum int –定义变量,用于累计事务执行过程中的错误
/*–转帐–*/
update bank set currentMoney=currentMoney-800 where customerName=’张三’
set @errorSum=@errorSum+@@error –累计是否有错误
update bank set currentMoney=currentMoney+800 where customerName=’李四’
set @errorSum=@errorSum+@@error –累计是否有错误

print ‘查看转帐事务过程中的余额’
select * from bank

/*–根据是否有错误,确定事务是提交还是回滚–*/
if @errorSum>0
begin
print ‘交易失败,回滚事务.’
rollback transaction
end
else
begin
print ‘交易成功,提交事务,写入硬盘,永久保存!’
commit transaction
end
go

print ‘查看转帐后的余额’
select * from bank
go

sql操作命令

CREATE TABLE `learn`.“( /* 未指定表名 */
`heihei` INT(5) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`heihei`)
);

注:自增和默认值不能同时存在

默认 DEFAULT

DROP learn;
DROP DATABASE learn;     #删除数据库
CREATE DATABASE school;    #创建数据库
USE learn;
`student`

CREATE TABLE student(
id INT(4) PRIMARY KEY AUTO_INCREMENT COMMENT ‘主键,学号’,
pwd VARCHAR(20) DEFAULT ‘123456’ NOT NULL COMMENT ‘密码’,
`name` VARCHAR(30) DEFAULT ‘匿名’ NOT NULL COMMENT ‘姓名’,
sex VARCHAR(2) NOT NULL DEFAULT ‘男’,
birthday DATETIME COMMENT ‘出生日期’,
address VARCHAR(100) COMMENT ‘家庭住址’,
email VARCHAR(50)
)

CREATE TABLE student(
studentNo INT(4) NOT NULL PRIMARY KEY COMMENT ‘学号’,
Pwd VARCHAR(20) NOT NULL COMMENT ‘密码’,
`studentName` VARCHAR(50) NOT NULL COMMENT’姓名’,
`sex` CHAR(2) DEFAULT ‘男’NOT NULL COMMENT’性别’,
`gradeID` INT(4) UNSIGNED COMMENT’年级编号’,
`phone` VARCHAR(50)COMMENT ‘联系电话’,
`address` VARCHAR(255) DEFAULT’地址不详’ COMMENT’地址’,
`bornDate` DATETIME COMMENT ‘出生时间’,
`email` VARCHAR(50) COMMENT ‘邮件账号’,
`identityCard` VARCHAR(18) COMMENT’身份证号’
)

#更改学生姓名为李文才的Email为~~~~~
UPDATE student SET email=’~~~~~’ WHERE studentName=’李文才’
SELECT *

#将学生表中学号为20000的学生的邮箱修改为———密码修改为
UPDATE student SET email=’hahahah’ pwd=’hahha’ WHERE id=’20000′
SELECT student

#将科目表中课时数大于200且年级编号为1的科目的课时减少10
UPDATE kemubiao SET keshi=keshi-10 WHERE keshi>200 AND bianhao=’1′

#将所有年级编号为1的学员姓名、性别、出生日期、手机号码信息保存到新表student_grade1中

#查询2016年2月17日考试前5名学员的学号和分数

#将所有女学生按年龄从大到小排序,从第2条记录开始显示6名女学生的姓名、年龄、出生日期、手机号信息

#查询参加2016年2月17日考试的所有学员的最高分、最低分、平均分

#显示表结构
DESC student;
#查看表定义    也可以查看数据库定义
SHOW CREATE TABLE student;
SHOW CREATE DATABASE learn;

#设置数据库、表、字段的字符集

CREATE DATABASE `learn` /*!40100 DEFAULT CHARACTER SET utf8 */
#                                 数据库默认字符编码

#设置列的字符编码集
CREATE TABLE a(
address CHAR(5) CHARACTER SET gbk
)

CREATE TABLE `student` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT ‘主键,学号’,
`pwd` VARCHAR(20) NOT NULL DEFAULT ‘123456’ COMMENT ‘密码’,
`name` VARCHAR(30) NOT NULL DEFAULT ‘匿名’ COMMENT ‘姓名’,
`sex` VARCHAR(2) NOT NULL DEFAULT ‘男’,
`birthday` DATETIME DEFAULT NULL COMMENT ‘出生日期’,
`address` VARCHAR(100) DEFAULT NULL COMMENT ‘家庭住址’,
`email` VARCHAR(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB                           DEFAULT CHARSET=utf8
#引擎 INNODB(支持增删改查、事务、外键)     默认字符集
# 引擎 NyISAM (偏向查询  支持全文索引 表空间小)

#创建一个测试表格
CREATE TABLE  test(
coll INT(4) ZEROFILL NOT NULL
)

#设置严格检查模式
SET sql_mode=’strict_trans_tables’;

CREATE TABLE  tab1(
id INT(4) AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(20) NOT NULL
)
#自增列默认初始值为1   步长1
#能否改变自增列的初始值? 100
#只影响当前表
CREATE TABLE  tab1(
id INT(4) AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(20) NOT NULL
)AUTO_INCREMENT=100;
#改变自增列的步长
#影响的时所有使用自增列的表
SET @@auto_increment_increment=5;

#同一个列可以被多个属性来修饰的  但是注意属性的顺序
CREATE TABLE `learn`.“( /* 未指定表名 */
`heihei` INT(5) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`heihei`)
);

#查看MySQL所支持的引擎类型(表类型)
SHOW ENGINES;
#查看默认引擎
SHOW VARIABLES LIKE ‘storage_engine’;

#  INNODB
#  C:\ProgramData\MySQL\MySQL Server 5.7\Data\learn
#   *.frm 表结构定义文件
#   数据文件在Data文件夹下的 ‘ibdata1’ 文件

#  NyISAM
#  *.frm  表结构定义文件
#  *.MYD  数据文件
#  *.MYI  索引文件

#修改数据表

#修改表名
ALTER TABLE ‘旧表名’ RENAME AS ‘新表名’
#添加字段
ALTER TABLE ‘表名’ ADD ‘字段名’ ‘列表类型[属性]’
#修改字段
ALTER TABLE ‘表名’ MODIFY ‘字段名’ ‘列表类型[属性]’
ALTER TABLE ‘表名’ CHANGE ‘旧字段名’ ‘新字段名’ ‘列表类型[属性]’  /*修改力度较强 可以修改字段名*/
#删除字段
ALTER TABLE ‘表名’ DROP ‘字段名’

#删除数据表   if exists可选
DROP TABLE IF EXISTS haha

sql主键约束

数据字段属性:

UNSIGNED :无符号的,声明该数据不允许为负数;

ZEROFILL :0填充的,不足位数用0来填充  如  int(3),5      则005;

AUTO_INCREMENT :自动增长的,通常用于设置主键,且为整数类型,可定义起始值和步长;

NULL 、NOT NULL :空    和   非空

DEFAULT :默认的,用于设置默认值

MySQL主键(Primary Key)是唯一标识表中每行的列或一组列。当定义表的主键时,必须遵循以下规则:

  • 主键必须包含唯一值。如果主键由多个列组成,则这些列中的值的组合必须是唯一的。
  • 主键列不能包含NULL值。 这意味着必须使用NOT NULL属性声明主键列。如果没有指定NOT NULL,MySQL将强制为主键列为NOT NULL
  • 一张表只有一个主键。

因为MySQL使用整数工作更快,所以主键列的数据类型应该是整数类型,例如:INTBIGINT。可以选择一个较小的整数类型:TINYINTSMALLINT等。但是,应该确保值的范围的主键的整数类型足以存储表可能所具有最大行数。

主键列通常具有自动生成键的唯一序列的AUTO_INCREMENT属性。下一行的主键值大于前一个行的主键值。

MySQL为表中的主键创建一个名为PRIMARYPRIMARY索引类型。

MySQL

RDBMS即关系数据库管理系统
(Relational Database Management System)
oracle
mysql
sqlserver
db2
postgresql
sqlite
excel

 

数据库(Database)
数据表 table
列 column
行 row
冗余
主键 primary key
外键 foreign key
复合键
索引
参照完整性

MySQL 数据类型

三类:数值、日期/时间和字符串(字符)
数值
TINYINT 1 字节(0,255)
SMALLINT 2 字节(0,65 535)
MEDIUMINT 3 字节
INT或INTEGER 4 字节 BIGINT 8 字节
FLOAT 4 字节 DOUBLE 8 字节 DECIMAL

日期时间
DATE 日期值
TIME 时间值或持续时间
YEAR 年份值
DATETIME 混合日期和时间值
TIMESTAMP 时间戳

字符串
CHAR 0-255字节 、VARCHAR 0-65535 字节
BINARY、VARBINARY、BLOB、TEXT、ENUM和SET

事务是必须满足4个条件(ACID):
Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

1、事务的原子性:一组事务,要么成功;要么撤回。
2、稳定性 : 有非法数据(外键约束之类),事务撤回。
3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。
事务的100%隔离,需要牺牲速度。
4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。
可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。

命令:

> mysql -uroot -p123456 登陆
mysql> grant all on test.* to ‘pengshiyu’@’localhost’
-> identified by ‘123456’; 创建用户
mysql> quit 退出

mysql> show databases; 查看数据库
mysql> create database test; 创建数据库
mysql> create database test charset utf8; 指定字符集支持中文
mysql> show create database test; 查看数据库信息
mysql> drop database test; 删除数据库
mysql> use test; 进入数据库

mysql> create table student(
-> id int auto_increment,
-> name char(32) not null,
-> age int not null,
-> register_data date not null,
-> primary key (id)
-> ); 创建表
mysql> show tables; 查看表
mysql> desc student; 查看表结构
mysql> show columns from student; 查看表结构
mysql> insert into student(name, age, register_data)
-> values(‘tom’, 27, ‘2018-06-25’); 增加记录
mysql> select * from student; 查询数据
mysql> select * from student\G 按行输出
mysql> select * from student limit 3; 限制查询数量
mysql> select * from student limit 3 offset 5; 丢弃前5条数
mysql> select * from student where id > 3; 条件查询
mysql> select * from student where register_data like “2018-06%”; 模糊查询
mysql> update student set name = ‘cxx’ where id = 10; 修改
mysql> delete from student where id = 10; 删除
mysql> select * from student order by age; 排序默认ascend
mysql> select * from student order by age desc; 降序descend
mysql> select age,count(*) as num from student group by age; 分组
mysql> select name, sum(age) from student group by name with rollup; 汇总
mysql> select coalesce(name,’sum’), sum(age) from student
-> group by name with rollup; 汇总取别名

mysql> alter table student add sex enum(‘M’,’F’); 增加字段
mysql> alter table student drop sex; 删除字段
mysql> alter table student modify sex enum(‘M’,’F’) not null; 修改字段类型
mysql> alter table student modify sex
-> enum(‘M’,’F’) not null default ‘M’; 设置默认值
mysql> alter table student change sex gender
-> enum(‘M’,’F’) not null default ‘M’; 修改字段名称

mysql> create table study_record(
-> id int not null primary key auto_increment,
-> day int not null,
-> stu_id int not null,
-> constraint fk_student_key foreign key (stu_id) references student(id)
-> );命名外键约束

创建表
mysql> create table A(a int not null);
mysql> create table B(b int not null);

插入数据
mysql> insert into A(a) values (1);
mysql> insert into A(a) values (2);
mysql> insert into A(a) values (3);
mysql> insert into A(a) values (4);

mysql> insert into B(b) values (3);
mysql> insert into B(b) values (4);
mysql> insert into B(b) values (5);
mysql> insert into B(b) values (6);
mysql> insert into B(b) values (7);

交集 内连接
mysql> select * from A inner join B on A.a = B.b;
mysql> select a.*, b.* from A inner join B on A.a = B.b;
差集
mysql> select * from A left join B on A.a =B.b; 左外连接
mysql> select * from A right join B on A.a =B.b; 右外连接
并集
mysql> select * from a left join b on a.a=b.b union
-> select * from a right join b on a.a = b.b; 全连接

mysql> begin; 开始事务
mysql> rollback; 回滚事务
mysql> commit; 提交事务
mysql> show index from student; 查看索引
mysql> create index name_index on student(name(10)); 创建索引
mysql> drop index name_index on student;删除索引

网络编程

网路变成:实现计算机与计算机间的通信

通信协议:

tcp:可靠,有状态的,长连接的协议,像打电话一样

udp:不可靠,无连接,像发短信一样,发送的包的顺序要有编号

http:基于tcp的协议,无状态的协议

ftp:文件传输协议

pop3邮局协议版本3,是tcp/ip协议族中的一员

smtp:简单邮件传输协议

qq视频,发消息

网络根据地域面积分为三类:

局域网、城域网、广域网

网络传递过程分七层

1、物理层

2、数据链路层

3、网络层

4、传输层

5、会话层

6、表示层

7、应用层        HTTP、

IP地址是由4个8位组成,每一个数字不能大于255,

IP地址由网络地址+本机地址组成

分为五类:

A:1.0.0.0~126.255.255.255      (127.0.0.1是本地回环地址)

B:128.0.0.0~191.255.255.255

C:192.0.0.0~223.255.255.255

D:用于组播

E:用于科研

1、创建socket对象

2、建立链接

3、通信