A. 数据库中的一个字段的数据大小不定如何设置字段的长度查询最快又节省空间
varchar是可变字符,varchar(2000)即可,不会浪费空间。
楼主为何要将历史记录存在access中呢?若您后台有sql server支持,建议您历史记录也存放在sql中,access的性能及对sql的语言支持都远不如 MSSQL。
【VARCHAR限制了字符串的长度不能超过255个字符?】---哦,忘记了,这个可能access有此限制,sql可以的,最大varchar(8000)。
varchar(100)中的100并不多余,在未存储数据时用于占位,系统会用于预先计划分配空间,但直到真正存储数据时才确实分配存储空间。
个人看法:
1.占用空间上varchar(100)和varchar(2000)没什么区别。
2.但varchar(100)会效率较低,因为按你说的该字段会5-2000,若大于100,则您每次固定写入100会需要多次写操作,众所周知写操作是比较耗时的。
3.查询性能方面,跟您这儿怎么存没太大关系,重要的还是常见的数据库查询优化,如索引、条件等等
对这个问题,我引用一下CSDN上的说法:
一。数据行结构
char(n): 系统分配n个字节给此字段,不管字段实际长度(后边用空格补齐)
varchar(n): 假设表中有M个varchar(或者nvarchar)类型的字段
先分配两个字节(用来表示M)
再分配2*M个字节(表示各变长行的偏移)
此后字段值有多长,就分配多长
二。varchar(n)一定比char(n)节省空间么?
不一定。
我见过这样的设计: varchar(3)
就算此字段为空,也还是比char(3)多用一个字节。
还有这样的设计: user_ip varchar(16).
对于这种数据长度变化不大的字段,用varchar只能浪费空间
结论: varchar适用于数据值长度不太短,且长度变化较大的字段
三。char(n)一定比varchar(n)速度快么?
不一定
计算varchar的偏移是会花去一些cpu时间,但性能瓶颈不在此,在io.
db的io单位是数据页(8192字节)(一页存有多个数据行,数据行不能跨页。当然image,text等例外). 因此一页中行越多,性能越好
另外,关于char和varchar的性能比较,
请参见该实验:
http://www.yuanma.org/data/2006/0730/article_1266.htm
再补充一下:
[转帖]char、nchar、varchar、nvarchar,对比那个好?
数据库定义到char类型的字段时,不知道大家是否会犹豫一下,到底选char、nchar、varchar、nvarchar、
text、ntext中哪一种呢?结果很可能是两种,一种是节俭人士的选择:最好是用定长的,感觉比变长能省些空
间,而且处理起来会快些,无法定长只好选用定长,并且将长度设置尽可能地小;另一种是则是觉得无所谓,
尽量用可变类型的,长度尽量放大些。
鉴于现在硬件像萝卜一样便宜的大好形势,纠缠这样的小问题实在是没多大意义,不过如果不弄清它,
总觉得对不起劳累过度的CPU和硬盘。
下面开始了(以下说明只针对SqlServer有效):
1、当使用非unicode时慎用以下这种查询:
select f from t where f = N'xx'
原因:无法利用到索引,因为数据库会将f先转换到unicode再和N'xx'比较
2、char 和相同长度的varchar处理速度差不多(后面还有说明)
3、varchar的长度不会影响处理速度!!!(看后面解释)
4、索引中列总长度最多支持总为900字节,所以长度大于900的varchar、char和大于450的nvarchar,nchar
将无法创建索引
5、text、ntext上是无法创建索引的
6、O/R Mapping中对应实体的属性类型一般是以string居多,用char[]的非常少,所以如果按mapping的
合理性来说,可变长度的类型更加吻合
7、一般基础资料表中的name在实际查询中基本上全部是使用like '%xx%'这种方式,而这种方式是无法利用
索引的,所以如果对于此种字段,索引建了也白建
8、其它一些像remark的字段则是根本不需要查询的,所以不需要索引
9、varchar的存放和string是一样原理的,即length {block}这种方式,所以varchar的长度和它实际占用
空间是无关的
10、对于固定长度的字段,是需要额外空间来存放NULL标识的,所以如果一个char字段中出现非常多的NULL,
那么很不幸,你的占用空间比没有NULL的大(但这个大并不是大太多,因为NULL标识是用bit存放的,
可是如果你一行中只有你一个NULL需要标识,那么你就白白浪费1byte空间了,罪过罪过!),这时候,
你可以使用特殊标识来存放,如:'NV'
11、同上,所以对于这种NULL查询,索引是无法生效的,假如你使用了NULL标识替代的话,那么恭喜你,
你可以利用到索引了
12、char和varchar的比较成本是一样的,现在关键就看它们的索引查找的成本了,因为查找策略都一样,
因此应该比较谁占用空间小。在存放相同数量的字符情况下,如果数量小,那么char占用长度是小于varchar
的,但如果数量稍大,则varchar完全可能小于char,而且要看实际填充数值的充实度,比如说varchar(3)
和char(3),那么理论上应该是char快了,但如果是char(10)和varchar(10),充实度只有30%的情况下,
理论上就应该是varchar快了。因为varchar需要额外空间存放块长度,所以只要length(1-fillfactor)
大于这个存放空间(好像是2字节),那么它就会比相同长度的char快了。
13、nvarchar比varchar要慢上一些,而且对于非unicode字符它会占用双倍的空间,那么这么一种类型
推出来是为什么呢?对,就是为了国际化,对于unicode类型的数据,排序规则对它们是不起作用的,
而非unicode字符在处理不同语言的数据时,必须指定排序规则才能正常工作,所以n类型就这么一点好处。
总结陈词:
1、如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char
2、能确定长度又不一定是ansi字符或者,那么用nchar;
3、不确定长度,要查询且希望利用索引的话,用nvarchar类型吧,将它们设到400;
4、不查询的话没什么好说的,用nvarchar(4000)
5、性格豪爽的可以只用3和4,偶尔用用1,毕竟这是一种额外说明,等于告诉别人说,我一定需要长度
为X位的数据
B. 把一个boot项目放进pigx项目中怎么获取数据(boot后端数据)
我也遇到过这个问题,我的现象是参数被截断,只剩下字符串最后大约十分之一的长度。
我也设置了max-request-size,没起作用,或许是springboot的bug。
后来换了另一种传输方式
后台controller用@RequestBody接收参数,前台ajax用contentType: "application/json; charset=utf-8"发送参数。
只有form形式的ajax参数才会被tomcat解析并截断,换用json形式就绕过了
C. pigx框架值得购买么
pigx框架值得购买。
程序框架理解为基础或者机械标准件(例如螺丝螺母这些有明确标准的机械部件)更为贴切。
一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。因此构件库的大规模重用也需要框架。
D. 如何成为一个数据分析师需要具备哪些技能
接下来我们分别从每一个部分讲讲具体应该学什么、怎么学。
数据获取:公开数据、Python爬虫
如果接触的只是企业数据库里的数据,不需要要获取外部数据的,这个部分可以忽略。
外部数据的获取方式主要有以下两种。
第一种是获取外部的公开数据集,一些科研机构、企业、政府会开放一些数据,你需要到特定的网站去下载这些数据。这些数据集通常比较完善、质量相对较高。
另一种获取外部数据费的方式就是爬虫。
比如你可以通过爬虫获取招聘网站某一职位的招聘信息,爬取租房网站上某城市的租房信息,爬取豆瓣评分评分最高的电影列表,获取知乎点赞排行、网易云音乐评论排行列表。基于互联网爬取的数据,你可以对某个行业、某种人群进行分析。
在爬虫之前你需要先了解一些 Python 的基础知识:元素(列表、字典、元组等)、变量、循环、函数(链接的菜鸟教程非常好)……以及如何用成熟的 Python 库(urllib、BeautifulSoup、requests、scrapy)实现网页爬虫。如果是初学,建议从 urllib 和 BeautifulSoup 开始。(PS:后续的数据分析也需要 Python 的知识,以后遇到的问题也可以在这个教程查看)
网上的爬虫教程不要太多,爬虫上手推荐豆瓣的网页爬取,一方面是网页结构比较简单,二是豆瓣对爬虫相对比较友好。
掌握基础的爬虫之后,你还需要一些高级技巧,比如正则表达式、模拟用户登录、使用代理、设置爬取频率、使用cookie信息等等,来应对不同网站的反爬虫限制。
除此之外,常用的的电商网站、问答网站、点评网站、二手交易网站、婚恋网站、招聘网站的数据,都是很好的练手方式。这些网站可以获得很有分析意义的数据,最关键的是,有很多成熟的代码,可以参考。
数据存取:SQL语言
你可能有一个疑惑,为什么没有讲到Excel。在应对万以内的数据的时候,Excel对于一般的分析没有问题,一旦数据量大,就会力不从心,数据库就能够很好地解决这个问题。而且大多数的企业,都会以SQL的形式来存储数据,如果你是一个分析师,也需要懂得SQL的操作,能够查询、提取数据。
SQL作为最经典的数据库工具,为海量数据的存储与管理提供可能,并且使数据的提取的效率大大提升。你需要掌握以下技能:
提取特定情况下的数据:企业数据库里的数据一定是大而繁复的,你需要提取你需要的那一部分。比如你可以根据你的需要提取2018年所有的销售数据、提取今年销量最大的50件商品的数据、提取上海、广东地区用户的消费数据……,SQL可以通过简单的命令帮你完成这些工作。
数据库的增、删、查、改:这些是数据库最基本的操作,但只要用简单的命令就能够实现,所以你只需要记住命令就好。
数据的分组聚合、如何建立多个表之间的联系:这个部分是SQL的进阶操作,多个表之间的关联,在你处理多维度、多个数据集的时候非常有用,这也让你可以去处理更复杂的数据。
数据预处理:Python(pandas)
很多时候我们拿到的数据是不干净的,数据的重复、缺失、异常值等等,这时候就需要进行数据的清洗,把这些影响分析的数据处理好,才能获得更加精确地分析结果。
比如空气质量的数据,其中有很多天的数据由于设备的原因是没有监测到的,有一些数据是记录重复的,还有一些数据是设备故障时监测无效的。比如用户行为数据,有很多无效的操作对分析没有意义,就需要进行删除。
那么我们需要用相应的方法去处理,比如残缺数据,我们是直接去掉这条数据,还是用临近的值去补全,这些都是需要考虑的问题。
对于数据预处理,学会 pandas 的用法,应对一般的数据清洗就完全没问题了。需要掌握的知识点如下:
选择:数据访问(标签、特定值、布尔索引等)
缺失值处理:对缺失数据行进行删除或填充
重复值处理:重复值的判断与删除
空格和异常值处理:清楚不必要的空格和极端、异常数据
相关操作:描述性统计、Apply、直方图等
合并:符合各种逻辑关系的合并操作
分组:数据划分、分别执行函数、数据重组
Reshaping:快速生成数据透视表
概率论及统计学知识
数据整体分布是怎样的?什么是总体和样本?中位数、众数、均值、方差等基本的统计量如何应用?如果有时间维度的话随着时间的变化是怎样的?如何在不同的场景中做假设检验?数据分析方法大多源于统计学的概念,所以统计学的知识也是必不可少的。需要掌握的知识点如下:
基本统计量:均值、中位数、众数、百分位数、极值等
其他描述性统计量:偏度、方差、标准差、显着性等
其他统计知识:总体和样本、参数和统计量、ErrorBar
概率分布与假设检验:各种分布、假设检验流程
其他概率论知识:条件概率、贝叶斯等
有了统计学的基本知识,你就可以用这些统计量做基本的分析了。通过可视化的方式来描述数据的指标,其实可以得出很多结论了,比如排名前100的是哪些,平均水平是怎样的,近几年的变化趋势如何……
你可以使用python的包 Seaborn(python包)在做这些可视化的分析,你会轻松地画出各种可视化图形,并得出具有指导意义的结果。了解假设检验之后,可以对样本指标与假设的总体指标之间是否存在差别作出判断,已验证结果是否在可接受的范围。
python数据分析
如果你有一些了解的话,就知道目前市面上其实有很多 Python 数据分析的书籍,但每一本都很厚,学习阻力非常大。但其实真正最有用的那部分信息,只是这些书里很少的一部分。比如用 Python 实现不同案例的假设检验,其实你就可以对数据进行很好的验证。
比如掌握回归分析的方法,通过线性回归和逻辑回归,其实你就可以对大多数的数据进行回归分析,并得出相对精确地结论。比如DataCastle的训练竞赛“房价预测”和“职位预测”,都可以通过回归分析实现。这部分需要掌握的知识点如下:
回归分析:线性回归、逻辑回归
基本的分类算法:决策树、随机森林……
基本的聚类算法:k-means……
特征工程基础:如何用特征选择优化模型
调参方法:如何调节参数优化模型
Python 数据分析包:scipy、numpy、scikit-learn等
在数据分析的这个阶段,重点了解回归分析的方法,大多数的问题可以得以解决,利用描述性的统计分析和回归分析,你完全可以得到一个不错的分析结论。
当然,随着你实践量的增多,可能会遇到一些复杂的问题,你就可能需要去了解一些更高级的算法:分类、聚类,然后你会知道面对不同类型的问题的时候更适合用哪种算法模型,对于模型的优化,你需要去学习如何通过特征提取、参数调节来提升预测的精度。这就有点数据挖掘和机器学习的味道了,其实一个好的数据分析师,应该算是一个初级的数据挖掘工程师了。
系统实战
这个时候,你就已经具备了数据分析的基本能力了。但是还要根据不同的案例、不同的业务场景进行实战。能够独立完成分析任务,那么你就已经打败市面上大部分的数据分析师了。
如何进行实战呢?
上面提到的公开数据集,可以找一些自己感兴趣的方向的数据,尝试从不同的角度来分析,看看能够得到哪些有价值的结论。
另一个角度是,你可以从生活、工作中去发现一些可用于分析的问题,比如上面说到的电商、招聘、社交等平台等方向都有着很多可以挖掘的问题。
开始的时候,你可能考虑的问题不是很周全,但随着你经验的积累,慢慢就会找到分析的方向,有哪些一般分析的维度,比如top榜单、平均水平、区域分布、年龄分布、相关性分析、未来趋势预测等等。随着经验的增加,你会有一些自己对于数据的感觉,这就是我们通常说的数据思维了。
你也可以看看行业的分析报告,看看优秀的分析师看待问题的角度和分析问题的维度,其实这并不是一件困难的事情。
在掌握了初级的分析方法之后,也可以尝试做一些数据分析的竞赛,比如 DataCastle 为数据分析师专门定制的三个竞赛,提交答案即可获取评分和排名:
员工离职预测训练赛
美国King County房价预测训练赛
北京PM2.5浓度分析训练赛
种一棵树最好的时间是十年前,其次是现在。现在就去,找一个数据集开始吧!!
E. 怎么用数据库统计汇总啊
1.用SELECT语句对数据进行统计汇总
2.集合函数(聚合函数,统计函数)
3.为了有效处理查询得到的数据集合,SQL Server提供了一系列统计函数.
4.这些函数可以实现数据集合和汇总:
avg ([ALL|DISTINCT]列名) 求指定数字字段的平均值
sum ([ALL|DISTINCT]列名) 求指定数字字段的总和
max([ALL|DISTINCT]列名) 求指定数字字段中最大值
min ([ALL|DISTINCT]列名) 求指定数字字段中最小值
count([ALL|DISTINCT]列名) 求满足条件记录中指定字段不为空的记录个数
count(*) 求满足条件记录总数
**********************************************************************************************
5.用GROUP BY子句对记录分类统计汇总
格式:
GROUP BY 分组字段名列表[HAVING 条件表达式]
功能:按指定条件对指定字段依次分组进行统计汇总
注:
使用GROUP BY 的语句仍可用ORDER BY子句排序
但必须在GROUP BY之后可以使用别名但不允许对SELECT没指定的列排序
HAVING子句是对分组统计后的查询结果进行筛选.
使用GROUP BY 的select语句仍可用WHERE子句指定条件
**********************************************************************************************
说明:
Select 指定的字段必须包含且只含GROUP BY子句中指定的分组字段(可以为它指定别名),
其他必须是由集合函数组成的一个或多个计算列,统计函数中所使用的列不受限制.
GROUP BY子句中不允许使用字段或计算列的别名,可直接使用表达式.
GROUP BY子句指定表达式时,select指定的字段中可以不包括该表达式.
HAVING子句不允许使用别名
HAVING子句必须和GROUP BY一起使用,且设置的条件必须与GROUP BY 子句指定的分组字段有关
F. 数据库优化怎么做
太复杂了,简单的说两句吧,
比如存储过程优化,选择一个好的数据库引擎,然后使用NTFS磁盘格式,
把数据库临时文件用单独的磁盘保存,要创建适当的索引,
有技术的话单独为数据库创建一个缓存服务器,
有钱的话选择X64的服务器系统和数据库引擎,简直是如虎添翼。。。
G. pig 是数据库吗
Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapRece运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。
H. 如果自己要建立一个小型数据库,你有什么建议用sql,有哪些方面的数据库选择
mysql 或是sql server都可以,虽然没有oracle那么严谨,但从操纵方便性而言还是前者好
I. 大数据需要掌握哪些技能
大数据技术体系庞大,包括的知识较多
1、学习大数据首先要学习Java基础
Java是大数据学习需要的编程语言基础,因为大数据的开发基于常用的高级语言。而且不论是学hadoop,
2、学习大数据必须学习大数据核心知识
Hadoop生态系统;HDFS技术;HBASE技术;Sqoop使用流程;数据仓库工具HIVE;大数据离线分析Spark、Python语言;数据实时分析Storm;消息订阅分发系统Kafka等。
3、学习大数据需要具备的能力
数学知识,数学知识是数据分析师的基础知识。对于数据分析师,了解一些描述统计相关的内容,需要有一定公式计算能力,了解常用统计模型算法。而对于数据挖掘工程师来说,各类算法也需要熟练使用,对数学的要求是最高的。
4、学习大数据可以应用的领域
大数据技术可以应用在各个领域,比如公安大数据、交通大数据、医疗大数据、就业大数据、环境大数据、图像大数据、视频大数据等等,应用范围非常广泛。
J. 如何让数据库的数据与输入的数据进行运算
公式是一样的。如果只是输出结果,直接查询语句即可,假设数据库相应字段名为Fx和Fz:,y是你输入的数据:
select Fx-y*Fz from 你的数据表
不知我的理解是否有偏差?