原因:转换错误导致。解决方法:重新查看内容来解决此问题。
如下参考:
1打开数据库连接客户端NavicatPremium,并创建一个新的表结构,其中age列被故意设置为varchar。
2成功创建表之后,为表创建一些数据,如下所示。
3当有少量数据时,可以使用sum()函数直接求和,因为在SQL中它可以自动识别是字符串类型还是数字类型。
4以上适用于整数、体或小数据,如果数据太大,且精度不高不适用,那么可以考虑使用SQLCAST()和CONVERT()函数。
5接下来,看一下CONVERT()函数,它主要满足精度要求,并通过更改原始数据和将age列更改为带有小数的列来测试它。
楼主看到的-1估计是从syscolumns中获取的列的最大长度,syscolumns中max_length为-1表示这是一个varbinary(max)或varchar(max)或nvarchar(max)或xml类型的列,目前在sql
server中可以存储2gb数据。
(一)数据内容
基础数据库包括系统运行前所采集到的所有支撑数据,数据的具体内容在数据分类与数据源章节中已描述,概括可分为以下几类。
(1)遥感影像数据:包括历史图像数据,以及按照一定监测周期更新的遥感图像数据。
(2)数字线划图数据:矢量数据(现状专题图和历史专题图数据)、栅格数据、元数据等。入库前数据以ArcInfoCoverage格式分幅或整体存储,采用地理坐标系统。
(3)数字栅格图数据:包括1∶5万和1∶10万基础地理图形数据的扫描栅格数据。
(4)数字高程模型数据:塔里木河干流河道1∶1万和“四源一干”区域1∶10万数字高程模型。
(5)多媒体数据:考察照片、录像、录音和虚拟演示成果等多媒体资料。
(6)属性数据:社会经济与水资源数据、水利工程数据、生态环境数据等。
(二)数据存储结构
1栅格数据
栅格数据包括遥感影像、数字栅格图、数字正射影像图、数字高程模型等,这些数据的存储结构基本类似,因此可进行统一设计。遥感图像数据库与普通的图像数据库在存储上有些差别,遥感图像作为传感器对地理、空间环境在不同条件下的测量结果(如光谱辐射特性、微波辐射特性),必须结合同时得到的几个图像才可以认为是对环境在一定的时间条件下的完整的描述,也即是说,可能需要一个图像集合才能构成一个图像的完整的概念,并使之与语义信息产生联系(罗睿等,2000)。因此,遥感图像数据存储结构模型必须能够描述几个图像(波段)之间的逻辑关系。利用ArcSDE进行数据入库时,系统可自动建立各图像(波段)之间的关系,并按一定规则存储在数据库系统中。
对栅格数据在后台将采用Oracle数据库管理系统进行存储。Oracle系统可直接存储影像信息,并具有较强的数据管理能力,可以实现栅格数据信息的快速检索和提取。数据引擎采用ArcSDE,实现各类影像数据的入库。数据存储的关键是建立图幅索引,本系统数据的存储按图幅号、图名、采集时间等内容建立索引。
栅格数据依据图形属性一体化的存储思想,采用大二进制格式直接存储数据,这种方式的存储可实现内容的快速检索查询,按索引表检索出相关项后可直接打开栅格数据,提高栅格数据的管理效率。
2矢量数据
本系统采用图属一体化思想即将空间数据和属性数据合二为一,全部存在一个记录集中的思想存储空间数据,是目前GIS数据非常流行的存储方法。考虑到数据的具体情况,决定采用数据库存储空间数据和属性数据,部分具有少量、定型几何信息的地理要素如水文测站、河流、湖泊等,采用图属一体化思想存储其信息,而与其有关联关系的大量、多边化的属性信息如水文信息,则存储在属性数据表中,利用唯一标识符信息建立两表的关联。
针对本系统空间数据的特点,系统按照“数据库—子库—专题(基础数据)—层—要素—属性”的层次框架来构筑空间数据库,按照统一的地理坐标系统来存储空间数据,以实现对地理实体/专题要素进行分层叠加显示。
3多媒体数据
Oracle系统可直接存储和视频信息,并具有较强的数据管理能力,可以实现多媒体信息的快速检索和提取。多媒体数据存储的关键是建立索引表,本系统多媒体数据的存储按类型、时间、内容等项目建立索引,直接存储于Oracle数据库中。
多媒体数据存储时,可以将多媒体内容与索引表结构合为一体,采用大二进制格式直接存储,这种存储方式可实现内容的快速检索和查询,按索引表检索出相关项后可直接打开多媒体内容,而且多媒体数据库也便于维护管理。
(三)空间索引设计
1矢量空间索引
确定合适的格网级数、单元大小是建立空间格网索引的关键。格网太大,在一个格网内有多个空间实体,查询检索的准确度就低。格网太小,则索引数据量成倍增长和冗余,检索的速度和效率低。每一个数据层可采用不同大小、不同级别的空间索引格网单元,但每层级数最多不能超过三级。索引方式设置遵循以下基本原则:
(1)对于简单要素的数据层,尽可能选择单级索引格网,减少RDBMS搜索格网单元索引的级数,缩短空间索引搜索的过程;
(2)如果数据层中的要素封装边界大小变化比较大,应选择2或3级索引格网;
(3)如果用户经常对图层执行相同的查询,最佳格网的大小应是平均查询范围的15倍;
(4)格网的大小不能小于要素封装边界的平均大小。为了减少每个格网单元有多个要素封装边界的可能性,格网单元的大小应取要素封装边界平均大小的3倍;
(5)格网单元的大小不是一个确定性的问题,需要多次尝试和努力才会得到好的结果。有一些确定格网初始值的原则,用它们可以进一步确定最佳的格网大小。
SDE(Spatial Data Engine,即空间数据引擎),从空间管理的角度看,是一个连续的空间数据模型,可将地理特征的空间数据和属性数据统一集成在关系型数据库管理系统中。关系型数据库系统支持对海量数据的存储,从而也可实现对空间数据的海量存储。空间数据可通过层来进行数据的划分,将具有共同属性的一类要素放到一层中,每个数据库记录对应一层中一个实际要素,这样避免了检索整个数据表,减少了检索的数据记录数量,从而减少磁盘输入/输出的 *** 作,加快了对空间数据查询的速度。
ArcSDE采用格网索引方式,将空间区域划分成合适大小的正方形格网,记录每一个格网内所包含的空间实体(对象),以及每一个实体的封装边界范围,即包围空间实体的左下角和右上角坐标。当用户进行空间查询时,首先计算出用户查询对象所在格网,然后通过格网号,就可以快速检索到所需的空间实体。因此确定合适的格网级数、单元大小是建立空间格网索引的关键,太大或太小均不合适,这就需要进行多次尝试,确定合适的网格大小,以保证各单元能均匀落在网格内。利用ArcSDE的索引表创建功能,记录每一网格单元的实体分布情况,形成图层空间索引表。根据空间索引表,ArcSDE实现了对空间数据的快速查询。
2栅格数据空间索引
栅格数据的空间索引通过建立多级金字塔结构来实现。以高分辨率栅格数据为底层,逐级抽取数据,建立不同分辨率的数据金字塔结构,逐级形成较低分辨率的栅格数据。该方法通常会增加20%左右的存储空间,但却可以提高栅格数据的显示速度。在数据库查询检索时,调用合适级别的栅格数据,可提高浏览和显示速度。
(四)入库数据校验
入库数据的质量关系到系统评价分析结果的准确性。数据在生产中就需要严格进行质量控制。依据数据生产流程,将数据质量控制分成生产过程控制和结果控制。生产过程控制包括数据生产前期的质量控制、数据生产过程中的实时质量控制,结果质量控制为数据生产完成后的质量控制(裴亚波等,2003)。对入库数据的校验主要是进行数据生产完成后的质量控制和检查。
1规范化检查
(1)代码规范化:所有地理代码尽量采用国家标准和行业标准,例如,行政代码采用中华人民共和国行政区划代码国标。
(2)数据格式规范化:所有数据采用标准交换数据格式,例如,矢量数据采用标准输出Coverage格式和E00格式。
(3)属性数据和关系数据字段规范化:所有属性数据和关系数据提前分门别类地设计字段的内容、长短和格式, *** 作过程中严格执行。
(4)坐标系统规范化:本系统所有与空间有关的数据采用统一的空间坐标系统,即地理坐标系统。
(5)精度规范化:所有数据按照数据精度与质量控制中所要求的精度进行采集和处理。
(6)命名规范化:所有数据按照命名要求统一命名,便于系统的查询。
(7)元数据规范化:依照元数据标准要求,进行元数据检查。
2质量控制
数据质量是GIS成败的关键。对于关系型数据库设计,只要能保证表的实体完整性和参照完整性,并使之符合关系数据库的三个范式即可。对于空间数据库设计,则不仅要考虑数据采样、数据处理流程、空间配准、投影变换等问题,还应对数据质量做出定量分析。
数据质量一般可以通过以下几个方面来描述(吴芳华等,2001):
(1)准确度(Accuracy):即测量值与真值之间的接近程度,可用误差来衡量;
(2)精度(Precision):即对现象描述得详细程度;
(3)不确定性(Uncertainty):指某现象不能精确测得,当真值不可测或无法知道时,就无法确定误差,因而用不确定性取代误差;
(4)相容性(Compatibility):指两个来源不同的数据在同一个应用中使用的难易程度;
(5)一致性(Consistency):指对同一现象或同类现象表达的一致程度;
(6)完整性(Completeness):指具有同一准确度和精度的数据在类型上和特定空间范围内完整的程度;
(7)可得性(Accessibility):指获取或使用数据的容易程度;
(8)现势性(Timeliness):指数据反映客观现象目前状况的程度。
塔里木河流域生态环境动态监测系统的所有数据在数据质量评价后,还需要从数据格式、坐标一致性等方面进行入库质量检验,只有通过质量检验的数据才可以入库。
3数据检验
空间数据质量检验包括以下步骤:
(1)数据命名是否规范,是否按设计要求命名;
(2)数据是否能够正常打开;
(3)投影方式是否正确;
(4)坐标系统是否正确;
(5)改错是否完成,拓扑关系是否建立;
(6)属性数据是否正确,包括字段设置是否依据设计进行、是否有空属性记录、是否有属性错误记录等。
关系数据质量检验包括以下步骤:
(1)数据命名是否规范,是否按设计要求命名;
(2)数据是否能够正常打开;
(3)数据字段是否按设计要求设置;
(4)是否有空属性记录;
(5)是否有属性错误记录。
属性数据的校验,主要采用以下三种方式:
(1)两次录入校验:对一些相互之间毫无关联的数据,进行两次的录入,编写程序对两次录入的结果进行比较,找出两次录入结果不一样的数据,查看正确值,进行改正。
(2)折线图检验:对一些相互之间有关联的序列数据,如人口统计数据,对这一类数据,编写程序把数据以折线图的形式显示在显示器上,数据的序列一般都有一定规律,如果出现较大的波动,则需对此点的数据进行检查修改。
(3)计算校验:对一些按一定公式计算后所得结果与其他数据有关联的数据,如某些数据的合计等于另一数据,编写程序对这类数据进行计算,计算结果与有关联的数据进行比较,找出结果不一样的数据,查看正确值,进行改正。
图形数据的校验,主要包括以下步骤(陈俊杰等,2005):
(1)图层校验:图形要素的放置图层是唯一的。对于入库的Coverage数据,系统将根据图层代码进行检查,确保图形要素对层入座。
(2)代码检查:图形要素的代码是唯一的。对于入库的Coverage数据,系统将根据入库要素代码与特征表中的代码进行比较,确保入库数据代码存在,杜绝非法代码入库。
(3)类型检查:对入库的数据,检查该要素的类型与特征表中的类型是否一致,确保图形要素对表入座。如点要素、线要素、面要素仅能赋相应的点、线、面代码,且该代码必须与特征表中的数据类型代码相同。
(4)范围检查:根据入库的数据,确定该类要素的大体范围(如X、Y坐标等),在数据入库前,比较入库数据与范围数据的大小,若入库数据在该范围内,则入库,否则给出提示检查信息。
(五)数据入库
1遥感影像数据
利用空间数据引擎———ArcSDE可实现遥感影像数据在Oracle数据库中的存储和管理,在影像数据进行入库时,应加入相应的索引和影像描述字段。
遥感影像入库步骤:
(1)影像数据预处理:要将塔里木河遥感影像数据库建成一个多分辨率无缝影像数据库系统,客观上要求数据库中的影像数据在几何空间、灰度空间连续一致。因此,在数据采集阶段就需要对影像数据进行预处理,包括图像几何校正、灰度拼接(无缝镶嵌)、正射处理、投影变换等。
几何校正的目的是使校正后的图像重新定位到某种地图投影方式,以适用于各种定位、量测、多源影像的复合及与矢量地图、DTM等的套合显示与处理。几何校正多采用二次多项式算法和图像双线性内插重采样法进行图像校正。将纠正后具有规定地理编码的图像按多边形圈定需要拼接的子区,逐一镶嵌到指定模版,同时进行必要的色彩匹配,使整体图像色调一致,完成图像的几何拼接,再采用金字塔影像数据结构和“从粗到精”的分层控制策略实现逐级拼接。
数字正射影像具有统一的大地坐标系、丰富的信息量和真实的景观表达,易于制作具有“独立于比例尺”的多级金字塔结构影像。可以采用DTM和外方位元素经过数字微分纠正方法,获得数字正射影像,它的基本参数包括原始影像与正射影像的比例尺、采样分辨率等(方涛等,1997)。
投影变换需根据数据库系统定义的标准转换到统一的投影体系下。
(2)影像数据压缩:随着传感器空间分辨率的提高和对遥感信息需求的日益增长,获取的影像数据量成几何级数增大,如此庞大的数据将占用较大的存储空间,给影像的存储和传输带来不便(葛咏等,2000)。目前,系统处理的遥感影像数据已达数百千兆,单个文件的影像数据最大达到了2G,这样的数据量在调用显示时速度很慢,对影像数据进行压缩存储,将大大提高影像访问效率。本系统采用ArcSDE软件提供的无损压缩模式对入库影像进行压缩。
(3)影像导入:遥感影像的入库可通过ArcSDE或入库程序进行导入,并填写相关的索引信息,在入库时对大型的遥感影像数据进行自动分割,分为若干的块(tiles)进行存储。
(4)图像金字塔构建:采用ArcSDE提供的金字塔构建工具在入库时自动生成图像金字塔,用户只需要选择相应的参数设置即可。图像金字塔及其层级图像按分辨率分级存储与管理。最底层的分辨率最高,并且数据量最大,分辨率越低,其数据量越小,这样,不同的分辨率遥感图像形成了塔式结构。采用这种图像金字塔结构建立的遥感影像数据库,便于组织、存储与管理多尺度、多数据源遥感影像数据,实现了跨分辨率的索引与浏览,极大地提高了影像数据的浏览显示速度。
2数字线划图
对纸图数字化、配准、校正、分层及拼接等处理后,生成标准分幅和拼接存储的数字矢量图,就可以进行图形数据入库。
(1)分幅矢量图形数据、图幅接合表:按图形比例尺、图幅号、制作时间、图层等方式,通过入库程序导入到数据库中,同时导入与该地理信息相对应的属性信息,建立空间信息与属性信息的关联。
(2)拼接矢量图形数据:按图形比例尺、制作时间、图层等方式,通过入库程序导入到数据库中,同时导入与该地理信息相对应的属性信息,建立空间信息与属性信息的关联。
3栅格数据
对纸图数字化、配准、校正、分层及拼接等处理后,生成标准分幅和整体存储的数字栅格图,然后进行图形数据入库。
(1)分幅栅格图形数据、图幅接合表:按图形比例尺、图幅号、制作时间等方式,通过入库程序导入到数据库中。
(2)整幅栅格图形数据:按比例尺、制作时间等方式,通过入库程序导入到数据库中。
4数字高程模型
(1)分幅数字高程模型数据、图幅接合表:按图形比例尺、图幅号、制作时间等方式,通过入库程序导入到数据库中。
(2)拼接数字高程模型数据:按比例尺、制作时间等方式通过入库程序导入到数据库中。
5多媒体数据
多媒体数据入库可根据多媒体数据库内容的需要对入库数据进行预处理,包括音频、视频信息录制剪接、文字编辑、色彩选配等。对多媒体信息的加工处理需要使用特定的工具软件进行编辑。由于音频信息和视频信息数据量巨大,因此,对多媒体数据存储时需采用数据压缩技术,现在的许多商用软件已能够直接存储或播放压缩后的多媒体数据文件,这里主要考虑根据数据显示质量要求选择采用不同的存储格式。图4-2为各类多媒体数据的加工处理流程。
图4-2 多媒体数据加工处理流程图
6属性数据
将收集的社会经济、水利工程、生态环境等属性资料,进行分析整理,输入计算机,最后经过程序的计算处理,存储到数据库中,具体流程如图4-3所示。
图4-3 属性数据入库流程图
一、1980西安坐标系下1:25-1:10万DLG数据库转换
依据相应比例尺分幅进行区域划分,不考虑椭球体变换,直接利用对应的比例尺图幅区域的X、Y坐标平移量进行坐标平移;然后按照1954年北京坐标系下DLG数据库转换的b~f对应步骤进行。
二、1980西安坐标系下1:25-1:10万DRG数据库转换
获取图幅对应比例尺图幅图廓角点的X、Y坐标平移量,根据平移量计算图幅定位坐标,修改数据头文件;然后按照1954年北京坐标系到2000国家大地坐标系的1:25-1:10万DRG数据库转换的b~e步骤进行。
转换后数据为2000国家大地坐标系坐标、1980年西安坐标系分幅。
三、1980西安坐标系下1:25-1:10万DEM数据库转换
(1)按照相应比例尺对应图幅分块,在需补充内容的邻接边各增加一个相应比例尺图幅;
(2)依据相应的比例尺图幅的X、Y坐标平移量,进行图幅坐标平移,并参考像素分辨率确定起算坐标完成数据重采样;
(3)d按1954年北京坐标系1:25-1:10万DEM数据库转换的d、e步骤进行。
四、1:25万DLG数据库转换
(1)将1:25万分幅的平面坐标平移量转换为对应的经、纬度平移量或直接获取对应图幅的经、纬度平移量;
(2)根据1:25万分幅的经、纬度平移量,完成1:25万经纬度数据到2000国家大地坐标系经纬度数据的转换(1954年北京坐标系需同时考虑椭球体变化和平移量);
(3)依据2000国家大地坐标系下对应的1:25万标准分幅图廓进行数据裁切,区域边缘图幅中的数据空白区利用相邻图幅数据进行补充;
(4)数据后处理,包括:图廓更改、新格网层添加、数据编辑、数据接边、拓扑重建、数据入库等;
(5)更改元数据文件。
五、1:25万DEM数据库转换
(1)利用2000国家大地坐标系对应的DLG数据层,重新内插生成DEM;
(2)依据新的DEM更改元数据文件。
扩展资料:
点位坐标转换方法:
一、模型选择
全国及省级范围的坐标转换选择二维七参数转换模型;省级以下的坐标转换可选择三维四参数模型或平面四参数模型。对于相对独立的平面坐标系统与2000国家大地坐标系的联系可采用平面四参数模型或多项式回归模型。坐标转换模型详见本指南第六部分。
二、重合点选取
坐标重合点可采用在两个坐标系下均有坐标成果的点。但最终重合点还需根据所确定的转换参数,计算重合点坐标残差,根据其残差值的大小来确定,若残差大于3倍中误差则剔除,重新计算坐标转换参数,直到满足精度要求为止;用于计算转换参数的重合点数量与转换区域的大小有关,但不得少于5个。
三、模型参数计算
用所确定的重合点坐标,根据坐标转换模型利用最小二乘法计算模型参数。
四、精度评估与检核
选择部分重合点作为外部检核点,不参与转换参数计算,用转换参数计算这些点的转换坐标与已知坐标进行比较进行外部检核。应选定至少6个均匀分布的重合点对坐标转换精度进行检核
五、数据库中点位坐标转换模型参数计算的区域选取
对于1980西安坐标系下的数据库,采用全国数据计算的一套模型参数可满足1:5万及1:25万比例尺数据库转换的精度要求;采用全国数据计算的六个分区的模型参数可满足1:1万比例尺数据库转换的精度要求。
对于1954年北京坐标系下的数据库的转换,采用全国数据计算的六个分区的模型参数可满足1:5万及1:25万比例尺数据库转换的精度要求;按(2°×3°)进行分区计算模型参数可满足1:1万比例尺数据库转换的精度要求。
参考资料:
百度百科——2000国家大地坐标系
百度百科——西安80坐标系
特色数据库建设是图书馆数字化资源建设的核心和发展方向,而其价值和生命力的体现则需要通过数据库的质量保障来实现。从校图书馆特色数据库建设的实践出发,特色数据库的质量保障主要包括三个方面的内容:
1、针对建库之初的质量控制;
2、针对系统建设的流程控制;
3、针对具体应用的技术控制。
一、数字类型。
数字类型按照我的分类方法分为三类:整数类、小数类和数字类。我所谓的“数字类”,就是指DECIMAL和NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会“失真”,所以比较适合用于“价格”、“金额”这样对精度要求不高但准确度要求非常高的字段。
小数类,即浮点数类型,根据精度的不同,有FLOAT(单精度)和DOUBLE(双精度)两种。它们的优势是精确度,FLOAT可以表示绝对值非常小、小到约 117E-38 (00000117, 小数点后面有37个零)的小数,而DOUBLE更是可以表示绝对值小到约 222E-308 (00000222, 小数点后面有307个零)的小数。FLOAT类型和DOUBLE类型占用存储空间分别是4字节和8字节。如果需要用到小数的字段,精度要求不高的,当然用FLOAT了!可是说句实在话,我们“民用”的数据,哪有要求精度那么高的呢?这两种类型至今我没有用过——我还没有遇到适合于使用它们的事例。
用的最多的,最值得精打细算的,是整数类型。从只占一个字节存储空间的TINYINT到占8个字节的BIGINT,挑选一个“够用”并且占用存储空间最小的类型是设计数据库时应该考虑的。TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT占用存储空间分别为1字节、2字节、3字节、4字节和8字节,就无符号的整数而言,这些类型能表示的最大整数分别为255、65535、16777215、4294967295和18446744073709551615。如果用来保存用户的年龄(举例来说,数据库中保存年龄是不可取的),用TINYINT就够了;九城的《纵横》里,各项技能值,用SMALLINT也够了;如果要用作一个肯定不会超过16000000行的表的AUTO_INCREMENT的IDENTIFY字段,当然用 MEDIUMINT 不用 INT ,试想,每行节约一个字节,16000000行可以节约10兆多呢!
二、日期时间类型
日期和时间类型比较简单,无非是 DATE、TIME、DATETIME、TIMESTAMP和YEAR等几个类型。只对日期敏感,而对时间没有要求的字段,就用DATE而不用DATETIME是不用说的了;单独使用时间的情况也时有发生——使用TIME;但最多用到的还是用DATETIME。在日期时间类型上没有什么文章可做,这里就不再详述。
三、字符(串)类型
不要以为字符类型就是 CHAR !CHAR和VARCHAR的区别在于CHAR是固定长度,只要你定义一个字段是CHAR(10),那么不论你存储的数据是否达到了10个字节,它都要占去10个字节的空间;而VARVHAR则是可变长度的,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的,VARCHAR 类型的实际长度是它的值的(实际长度+1)。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度呀!从这个“+1”中也应该看到,如果一个字段,它的可能值最长是10个字符,而多数情况下也就是用到了10个字符时,用VARCHAR就不合算了:因为在多数情况下,实际占用空间是11个字节,比用CHAR(10)还多占用一个字节!
举个例子,就是一个存储股票名称和代码的表,股票名称绝大部分是四个字的,即8个字节;股票代码,上海的是六位数字,深圳的是四位数字。这些都是固定长度的,股票名称当然要用 CHAR(8) ;股票代码虽然是不固定长度,但如果使用VARVHAR(6),一个深圳的股票代码实际占用空间是5个字节,而一个上海的股票代码要占用7个字节!考虑到上海的股票数目比深圳的多,那么用VARCHAR(6)就不如CHAR(6)合算了。
虽然一个CHAR或VARVHAR的最大长度可以到255,我认为大于20的CHAR是几乎用不到的——很少有大于20个字节长度的固定长度吧?不是固定长度的就用VARCHAR!大于100的VARCHAR也是几乎用不到的——比这更大的用TEXT就好了。TINYTEXT,最大长度为255,占用空间也是(实际长度+1);TEXT,最大长度65535,占用空间是(实际长度+2);MEDIUMTEXT,最大长度16777215,占用空间是(实际长度+3);LONGTEXT,最大长度4294967295,占用空间是(实际长度+4)。为什么“+1”?“+2”?“+3”?“+4”?你要是还不知道就不应该了。这些可以用在论坛啊、新闻啊,什么的,用来保存文章的正文。根据实际情况的不同,选择从小到大的不同类型。
四、枚举和集合类型
枚举(ENUM)类型,最多可以定义65535种不同的字符串从中做出选择,只能并且必须选择其中一种,占用存储空间是一个或两个字节,由枚举值的数目决定;集合(SET)类型,最多可以有64个成员,可以选择其中的零个到不限定的多个,占用存储空间是一个到八个字节,由集合可能的成员数目决定。
在设计简历字段时,应该选择合适的数据类型,以确保数据存储和管理的准确性和有效性。以下是建议的数据类型和解释:1文本数据类型:对于人名、地址、电子邮件地址等文本字段,可以使用文本数据类型。文本数据类型可以存储从数个字符到数千个字符的文本。2数值数据类型:数值数据类型包括整数、小数、货币等类型。对于身高、体重、薪资等数值型字段,应该使用数值型数据类型。数值型字段可以存储数字,并允许在查询和计算中使用数学运算符。3日期/时间数据类型:为了存储生日、工作经历等字段,可以使用日期/时间数据类型。日期/时间型数据类型是专门用于存储日期和时间数据的数据类型,并包含用于进行处理和查询的内置函数和方法。4布尔型数据类型:对于二进制(是/否)字段,例如拥有驾照的情况,可以使用布尔类型字段。布尔类型的数据类型只有两个值:True和False,通常用于标识简单的“是”或“否”关系。5枚举型数据类型:枚举类型数据主要用于一些固定范围内的枚举值。例如,学历只有“初中”、“高中”、“大学”、“硕士”等固定的选项,不会改变或扩展,可以使用枚举类型数据存储学历信息。延伸扩展:当设计表中的字段时,除了数据类型之外,还应该考虑以下内容:1数据长度:应该根据字段的内容选择合适的数据长度,以避免浪费空间或截断数据。2空值:必须考虑是否允许该字段为空,如果允许,可以设置默认值。3约束:可以通过设置约束来限制数据输入,例如唯一性约束或外键约束,以确保数据的完整性和正确性。4索引:如果需要频繁搜索或过滤特定字段数据,则可以为该字段创建索引,以加快查询速度和提高效率。
数据库的开发对于后台编程程序员来说是必备能力之一了,而今天我们就一起来了解一下,关于数据库开发的设计规范都有哪些类型,昌平镇北大青鸟希望通过对本文的阅读,大家对于数据库开发有更多的了解。
一、数据库命令规范
所有数据库对象名称必须使用小写字母并用下划线分割
所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)
数据库对象的命名要能做到见名识意,并且后不要超过32个字符
临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀
所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)
二、数据库基本设计规范
1、所有表必须使用Innodb存储引擎
没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql55之前默认使用Myisam,56以后默认的为Innodb)Innodb支持事务,支持行级锁,更好的恢复性,高并发下性能更好
2、数据库和表的字符集统一使用UTF8
兼容性更好,统一字符集可以避免由于字符集转换产生的乱码,不同的字符集进行比较前需要进行转换会造成索引失效
3、所有表和字段都需要添加注释
使用comment从句添加表和列的备注从一开始就进行数据字典的维护
4、尽量控制单表数据量的大小,建议控制在500万以内
500万并不是MySQL数据库的限制,过大会造成修改表结构,备份,恢复都会有很大的问题
可以用历史数据归档(应用于日志数据),分库分表(应用于业务数据)等手段来控制数据量大小
5、谨慎使用MySQL分区表
分区表在物理上表现为多个文件,在逻辑上表现为一个表谨慎选择分区键,跨分区查询效率可能更低建议采用物理分表的方式管理大数据
6、尽量做到冷热数据分离,减小表的宽度
MySQL限制每个表多存储4096列,并且每一行数据的大小不能超过65535字节减少磁盘IO,保证热数据的内存缓存命中率(表越宽,把表装载进内存缓冲池时所占用的内存也就越大,也会消耗更多的IO)更有效的利用缓存,避免读入无用的冷数据经常一起使用的列放到一个表中(避免更多的关联 *** 作)
以上就是关于数据库执行后 提示:将数据类型 varchar 转换为 float 时出错。全部的内容,包括:数据库执行后 提示:将数据类型 varchar 转换为 float 时出错。、sql 数据库中 长度和精度指的是什么、基础数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)