SQL数据库字段类型说明
SQL基础T-SQL数据类型
SQL基础:T-SQL数据类型主要学习T-SQL的数据类型:数值型数据类型,字符型数据类型,临时数据类型,混合型数据类型,附带有VARDECIMAL的DECIMAL存储类型。
1、数值数据类型数值数据类型用于代表数据。
具体看下表:2、字符型数据类型字符型数据类型用两种普通形式。
它们可以是单字节的字符串,还可以使Unicode字符串。
此外,字符串有固定或可变长度。
具体看下表:注:VARCHAR数据类型和CHAR数据类型基本一样,只有一点不同,如果一个CHAR(n)字符串比n个字符要短,那么其余的字符串就会用空格来填充。
VARCHAR数据类型经常用数据长度存储。
3、临时数据类型T-SQL支持的临时数据类型有:DATETIME、SMALLDATETIME、DATE、TIME、DATETIME2和DETETINEOFFSET。
DATETIME和SMALLDATETIME数据类型指定日期和时间,每个值都为整数并分别用4个字节或2个字节保存。
DATETIME和SMALLDATETIME的值是作为两个单独的数值保存的。
DATETIME日期值的范围为01/01/1900至12/31/9999。
SMALLDATETIME相应的值为01/01/1900至06/06/2079。
时间部分能够再用4个字节或2个字节保存。
它表示午夜过后的一秒的三百分之一(DATETIME)或分钟(SMALLDATETIME)。
如果只想保存日期或时间部分,那么使用DATETIME和SMALLDATETIME非常不方便。
SQL SERVER 2008新增新的数据类型:DATE和TIME,这两种数据类型只能分别保存DATATIME数据的DATA或TIME部分。
DATE数据类型用3个字节的保存并且范围为01/01/0001至12/31/9999。
TIME数据类型用3-5个字节保存,且精确到100ns。
DATETIME2数据类型也是一种新的数据类型,用于保存精度度很高的日期和时间数据。
SQL常见数据类型分析
五种字段类型整型:TINYINT(tinyint):小的整数型,正整数0-255字段长度,非常小的整数型。
SMALLINT (smallint): 比小型(tinyint)大一点。
0-65535INT(int):比smallint大,最常用的。
0-4294967295BIGINT(bigint):大的整数型。
0-18446744073709551615小数: M表示这个小数类型的长度,D表示小数位有多长,比如M是10,D是3,那么整数的长度就是7。
FLOAT(float)(M,D)DOUBLE(double0DECIMAL(decimal)字符型:CHAR(char):最大长度为255个字符且有固定长度的字符串类型VARCHAR(varchar):最大长度为255个字符但是变长的字符串类型,最大255个字符。
日期型:DATETIME(datetime):日期时间,YYMMDD HH:MM:SS格式的日期/时间类型DATE(date):日期,TIME(time):时间,YEAR(year):年TIMESTAMP(timestamp):默认是YYMMDD HH:MM:SS,结尾加“+0”可以转换成一串数字。
默认不能为空,如果写入空,默认就是当前时间。
备注型:TINYTEXT(tinytext):TEXT(text):LONGTEXT(text):mysql表类型MyISAM:默认的类型,比较成熟稳定。
InnoDB:功能比较强大,支持外键约束,事务(支持事务可以回滚),崩溃恢复等一些新功能。
查看是否支持innodb:shwo variables like 'have_innodb';开启innodb:编辑mysql.ini文件,找到skip-innodb把它注释掉。
HEAP:内存表,表的数据是存在内存中的,一般用作临时表。
优点,速度快比如做排序,缺点,断链数据就丢失。
一、数据库1.登陆mysql匿名:# mysql -u root有密码:# mysql -u root -p2.查看数据库mysql命令:# /usr/local/mysql/bin/mysqlshow -u root -psql命令:show databases;3.创建数据库create database db_test; //创建一个名字为db_test的数据库4.删除数据库drop database db_test; //删除db_test数据库5.备份数据库1)--all-databases :备份所有数据库# /usr/local/mysql/bin/mysqldump -u root -p--all-databases >/home/db_bak2)--databases 数据库名字:备份选择数据库# /usr/local/mysql/bin/mysqldump -u root -p --databasesdb_test >/home/db_bak3)--opt:备份大数据库时用,加速数据库的导入和导出,并且锁定所有的表,防止有人更新正在备份的数据库。
五:SQL语句中的数据类型
五:SQL语句中的数据类型⼀:MySQL数据类型 MySQL中定义数据字段的类型对你数据库的优化是⾮常重要的 MySQL⽀持多种数据类型,⼤致可以分为三类:数值⽇期/时间和字符串⼆、数值类型(12) 2.1、整数类型(6) ⼀张图就能解释清楚了: INTEGER同INT。
2.2、定点数(2) DECIMAL和NUMERIC类型在MySQL中视为相同的类型。
它们⽤于保存必须为确切精度的值。
使⽤⽅式如下:1. salary DECIMAL(5,2) 下⾯的介绍将基于上⾯这个例⼦。
我们看到其中有两个参数,即DECIMAL(M,D),其中M表⽰⼗进制数字总的个数,D表⽰⼩数点后⾯数字的位数,上例中的取值范围为-999.99~999.99。
如果存储时,整数部分超出了范围(如上⾯的例⼦中,添加数值为1000.01),MySql就会报错,不允许存这样的值。
如果存储时,⼩数点部分若超出范围,就分以下情况:若四舍五⼊后,整数部分没有超出范围,则只警告,但能成功操作并四舍五⼊删除多余的⼩数位后保存。
如999.994实际被保存为999.99。
若四舍五⼊后,整数部分超出范围,则MySql报错,并拒绝处理。
如999.995和-999.995都会报错。
M的默认取值为10,D默认取值为0。
如果创建表时,某字段定义为decimal类型不带任何参数,等同于decimal(10,0)。
带⼀个参数时,D取默认值。
M的取值范围为1~65,取0时会被设为默认值,超出范围会报错。
D的取值范围为0~30,⽽且必须<=M,超出范围会报错。
所以,很显然,当M=65,D=0时,可以取得最⼤和最⼩值。
已经解释很详细了,如还不清楚,请回复。
2.3、浮点数(3) 浮点数是⽤来表⽰实数的⼀种⽅法,它⽤ M(尾数) * B( 基数)的E(指数)次⽅来表⽰实数,相对于定点数来说,在长度⼀定的情况下,具有表⽰数据范围⼤的特点。
但同时也存在误差问题。
SQL数据库的数据类型详细解释
SQL数据库的数据类型详细解释(1)二进制数据类型二进制数据包括 Binary、Varbinary 和 ImageBinary 数据类型既可以是固定长度的(Binary),也可以是变长度的。
Binary[(n)] 是 n 位固定的二进制数据。
其中,n 的取值范围是从 1 到 8000。
其存储窨的大小是 n + 4 个字节。
Varbinary[(n)] 是 n 位变长度的二进制数据。
其中,n 的取值范围是从 1 到 8000。
其存储窨的大小是 n + 4个字节,不是n 个字节。
在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应用程序来解释。
例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。
(2)字符数据类型字符数据的类型包括 Char,Varchar 和 Text字符数据是由任何字母、符号和数字任意组合而成的数据。
Varchar 是变长字符数据,其长度不超过 8KB。
Char 是定长字符数据,其长度最多为 8KB。
超过 8KB 的ASCII 数据可以使用Text数据类型存储。
例如,因为 Html 文档全部都是 ASCII 字符,并且在一般情况下长度超过 8KB,所以这些文档可以 Text 数据类型存储在SQL Server 中。
(3)Unicode 数据类型Unicode 数据类型包括 Nchar,Nvarchar 和Ntext在 Microsoft SQL Server 中,传统的非 Unicode 数据类型允许使用由特定字符集定义的字符。
在 SQL Server安装过程中,允许选择一种字符集。
使用 Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。
在 Unicode 标准中,包括了以各种字符集定义的全部字符。
使用Unicode数据类型,所战胜的窨是使用非Unicode 数据类型所占用的窨大小的两倍。
SQL数据库中各种字段类型的说明
SQL数据库中各种字段类型的说明char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,⽽varchar是变长字符数据。
所谓定长就是长度固定的,当输⼊的数据长度没有达到指定的长度时将⾃动以英⽂空格在其后⾯填充,使长度达到相应的长度;⽽变长字符数据则不会以空格填充。
text存储可变长度的⾮Unicode数据,最⼤长度为2^31-1(2,147,483,647)个字符。
后⾯三种数据类型和前⾯的相⽐,从名称上看只是多了个字母"n",它表⽰存储的是Unicode数据类型的字符。
写过程序的朋友对Unicode 应该很了解。
字符中,英⽂字符只需要⼀个字节存储就⾜够了,但汉字众多,需要两个字节存储,英⽂与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题⽽产⽣的,它所有的字符都⽤两个字节表⽰,即英⽂字符也是⽤两个字节表⽰。
nchar、nvarchar的长度是在1到4000之间。
和char、varchar⽐较:nchar、nvarchar则最多存储4000个字符,不论是英⽂还是汉字;⽽char、varchar最多能存储8000个英⽂,4000个汉字。
可以看出使⽤nchar、nvarchar数据类型时不⽤担⼼输⼊的字符是英⽂还是汉字,较为⽅便,但在存储英⽂时数量上有些损失。
datetime:从1753年1⽉1⽇到9999年12⽉31⽇的⽇期和时间数据,精确到百分之三秒。
smalldatetime:从1900年1⽉1⽇到2079年6⽉6⽇的⽇期和时间数据,精确到分钟。
bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。
int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。
smallint:从-2^15(-32,768)到2^15-1(32,767)的整数数据。
SQL字段类型
SQL字段类型⼀、整数数据类型整数数据类型是最常⽤的数据类型之⼀。
1、INT (INTEGER)INT (或INTEGER)数据类型存储从-2的31次⽅(-2 ,147 ,483 ,648)到2的31次⽅-1 (2 ,147 ,483,647)之间的所有正负整数。
每个INT 类型的数据按4 个字节存储,其中1 位表⽰整数值的正负号,其它31 位表⽰整数值的长度和⼤⼩。
2、SMALLINTSMALLINT 数据类型存储从-2的15次⽅(-32,768)到2的15次⽅-1(32 ,767 )之间的所有正负整数。
每个SMALLINT 类型的数据占⽤2 个字节的存储空间,其中1 位表⽰整数值的正负号,其它15 位表⽰整数值的长度和⼤⼩。
3、TINYINTTINYINT数据类型存储从0 到255 之间的所有正整数。
每个TINYINT类型的数据占⽤1 个字节的存储空间。
4、BIGINTBIGINT 数据类型存储从-2^63 (-9 ,223,372,036,854,775,807)到2^63-1(9,223,372,036 ,854,775,807)之间的所有正负整数。
每个BIGINT 类型的数据占⽤8个字节的存储空间。
⼆、浮点数据类型浮点数据类型⽤于存储⼗进制⼩数。
浮点数值的数据在SQLServer中采⽤上舍⼊(Round up 或称为只⼊不舍)⽅式进⾏存储。
所谓上舍⼊是指,当(且仅当)要舍⼊的数是⼀个⾮零数时,对其保留数字部分的最低有效位上的数值加1 ,并进⾏必要的进位。
若⼀个数是上舍⼊数,其绝对值不会减少。
如:对3.14159265358979 分别进⾏2 位和12位舍⼊,结果为3.15 和3.141592653590。
1、REAL 数据类型REAL数据类型可精确到第7 位⼩数,其范围为从-3.40E -38 到3.40E +38。
每个REAL 类型的数据占⽤4 个字节的存储空间。
2、FLOATFLOAT数据类型可精确到第15 位⼩数,其范围为从-1.79E -308 到1.79E +308。
SQL数据库字段数据类型说明Word版
SQL数据库字段数据类型说明Word版在SQL数据库中,字段数据类型是指存储在表中的某个字段上的数据的类型。
这些数据类型定义了可以在字段中存储的数据的种类,它们确定了字段可以存储的最大值和最小值。
以下是几种常见的SQL数据库字段数据类型:1. 字符型数据类型:这些类型用于存储字符和字符串。
它们包括CHAR、VARCHAR和TEXT等类型。
其中,CHAR类型用于存储固定长度的字符和字符串,而VARCHAR类型用于存储可变长度的字符和字符串。
TEXT类型用于存储较长的字符串。
2. 数值型数据类型:这些类型用于存储数值。
它们包括整型、浮点型和精度型等类型。
其中,整型包括INT、BIGINT和TINYINT等类型,而浮点型包括FLOAT和DOUBLE等类型。
精度型包括DECIMAL和NUMERIC等类型。
3. 日期/时间型数据类型:这些类型用于存储日期和时间。
它们包括DATE、TIME、DATETIME和TIMESTAMP等类型。
其中,DATE类型用于存储日期,TIME类型用于存储时间,DATETIME类型用于存储日期和时间,而TIMESTAMP类型用于存储日期和时间,与时区相关。
4. 二进制数据类型:这些类型用于存储二进制数据,如图像和音频。
它们包括BINARY和VARBINARY等类型。
5. 布尔型数据类型:这些类型用于存储布尔值(真或假)。
它们包括BOOLEAN和BOOL 等类型。
还有其他多种类型,如GEOMETRY、POINT、BLOB等类型,具体的使用取决于具体应用。
总的来说,选择数据类型时需要考虑存储数据的实际需求,以及表的设计和查询性能。
选择合适的数据类型可以提高表的性能和数据的存储效率。
SQL数据库字段类型说明
SQL有如下字段类型:一、文本类型char用法:char(length)char类型最大长度是255个字符。
当插入到表中的字符串的长度小于length时候,将给字段右边不够的部分用空格填补。
varchar用法:varchar(length)varchar的最大长度是255个字符。
varchar和char几乎一样,区别在于varchar 是变长的类型,不会填补空格。
tinytext用法:tinytexttinytext最大长度是255字符。
text用法:texttext最大长度是65535(2的17次方)字符。
mediumtext用法:mediumtextmediumtext最大长度是16777215个字符。
longtext用法:longtextlongtext最大长度是4294976259个字符。
(tinytext,text,mediumtext,longtext这四种类型,都是可变长字段类型,与varchar 一样,只是最大长度不同而已)enum用法:enum('value1','value2','value3',....)[default 'value']使用enum的时候,可以限制插入的值只能是括号里包含的值列表中的一个,同时也可以用可选的default 'value'指定缺省情况下的值。
set用法:set('value1','value2','value3',...)[default 'value']使用set的时候,可以限制插入的值只能是括号里包含的值列表中的一个或多个,同时也可以用可选的default 'value'指定缺省情况下的值。
二、数字类型int/integer用法:int(display size)[unsigned][zerofill]tinyint用法:tinyint(display size)[unsigned][zerofill]mediumint用法:mediumint(display size)[unsigned][zerofill]bigint用法:bigint(display size)[unsigned][zerofill]float用法:float()[zerofill] ; float[(m,d)][zerofill]表示一个小的浮点数(单精度),不能是无符号数。
Sql数据库字段类型
SQL Server数据库的数据类型详细介绍SQLServer 提供了25 种数据类型:Binary [(n)],Varbinary [(n)],Char[(n)],Varchar[(n)],Nchar[(n)],Nvarchar[(n)],Datetime,SmalldatetimeDecimal[(p[,s])],Numeric[(p[,s])],Float[(n)],Real,Int,Smallint,Tinyint,Money,Smallmoney,Bit,CursorSysname,Timestamp,Uniqueidentifier,Text,Image,Ntext。
下面来分别介绍这些数据类型:(1)二进制数据类型二进制数据包括Binary、Varbinary 和ImageBinary[(n)]和Varbinary[(n)] :n 的取值范围是从1 到8000。
其存储窨的大小是n + 4 个字节。
Image 数据类型中存储的数据是以位字符串存储的,不是由SQL Server 解释的,必须由应用程序来解释。
例如,应用程序可以使用BMP、TIEF、GIF 和JPEG 格式把数据存储在Image 数据类型中。
(2)字符数据类型字符数据的类型包括Char,Varchar 和Text字符数据是由任何字母、符号和数字任意组合而成的数据。
Char和Varchar:长度不超过8KB。
超过8KB 的ASCII 数据可以使用Text数据类型存储。
例如,因为Html 文档全部都是ASCII 字符,并且在一般情况下长度超过8KB,所以这些文档可以Text 数据类型存储在SQL Server 中。
(3)Unicode 数据类型Unicode 数据类型包括Nchar,Nvarchar 和Ntext(4)日期和时间数据类型日期和时间数据类型包括Datetime, Smalldatetime, Date, TimeStamp日期和时间数据类型由有效的日期和时间组成。
sql2012 字段类型
sql2012 字段类型
SQL Server 2012支持多种字段类型,这些字段类型可以满足
各种不同的数据存储需求。
以下是SQL Server 2012中常见的字段
类型:
1. 整型数据类型,包括int(整数)、smallint(小整数)、bigint(大整数)等,用于存储整数数据。
2. 浮点型数据类型,包括float(浮点数)、real(实数)等,用于存储浮点数数据。
3. 字符型数据类型,包括char(固定长度字符)、varchar
(可变长度字符)、text(大型文本数据)等,用于存储字符数据。
4. 日期和时间类型,包括datetime(日期和时间)、date
(日期)、time(时间)等,用于存储日期和时间数据。
5. 二进制数据类型,包括binary(固定长度二进制数据)、varbinary(可变长度二进制数据)、image(大型二进制数据)等,用于存储二进制数据。
此外,SQL Server 2012还支持其他一些特殊的数据类型,如XML、JSON、地理空间数据类型等,用于存储特定类型的数据。
每种数据类型都有其特定的用途和限制,开发人员需要根据实际需求选择合适的数据类型来存储数据,以确保数据的完整性和性能。
在设计数据库表结构时,合理选择字段类型是非常重要的,可以提高数据库的效率和可靠性。
sql 查询表字段说明
sql 查询表字段说明SQL 查询表字段说明在进行数据库操作时,经常需要了解表的结构,包括字段名、数据类型、约束等信息。
在SQL中,使用查询语句可以方便地获取表字段的说明。
下面是关于SQL查询表字段说明的一些常用方法:1. DESC命令DESC命令是MySQL数据库中用于查询表结构的命令。
通过DESC 命令可以获取表中各个字段的名称、类型、长度、是否允许为空以及默认值等信息。
下面是使用DESC命令查询表字段说明的基本语法:DESC 表名;例如,下面是查询表”employee”的字段说明:DESC employee;结果会显示出表”employee”中每个字段的名称、数据类型、是否允许为空、键类型等信息。
2. SHOW COLUMNS命令SHOW COLUMNS命令也是用于查询表结构的命令,它可以获取表中各个字段的详细信息,包括字段名、数据类型、是否允许为空、键类型、默认值、额外信息等。
下面是使用SHOW COLUMNS命令查询表字段说明的基本语法:SHOW COLUMNS FROM 表名;例如,下面是查询表”employee”的字段说明:SHOW COLUMNS FROM employee;结果会显示出表”employee”中每个字段的详细信息,包括字段名、数据类型、是否允许为空、键类型、默认值、额外信息等。
3. INFORMATION_SCHEMA数据库在MySQL中,INFORMATION_SCHEMA是一个包含了数据库元数据的数据库,我们可以通过查询INFORMATION_SCHEMA来获取表的字段说明信息。
下面是使用INFORMATION_SCHEMA查询表字段说明的基本语法:SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_ DEFAULTFROM INFORMATION_WHERE TABLE_NAME = '表名';例如,下面是查询表”employee”的字段说明:SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_ DEFAULTFROM INFORMATION_WHERE TABLE_NAME = 'employee';结果会显示出表”employee”中每个字段的名称、数据类型、是否允许为空以及默认值等信息。
数据库字段类型
数据库字段类型MySQL 数据(字段)类型⼀、数据类型(data_type)规定了列可容纳何种数据类型。
下⾯的表格包含了SQL中最常⽤的数据类型:数据类型描述integer(size)int(size)smallint(size)tinyint(size)仅容纳整数。
在括号内规定数字的最⼤位数。
decimal(size,d) numeric(size,d)容纳带有⼩数的数字。
"size" 规定数字的最⼤位数。
"d" 规定⼩数点右侧的最⼤位数。
char(size)容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。
在括号中规定字符串的长度。
varchar(size)容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。
在括号中规定字符串的最⼤长度。
date(yyyymmdd)容纳⽇期。
⼆、MySQL 数据(字段)类型在创建表的时候,要明确定义字段对应的数据类型。
MySQL 主要的数据类型分为数值类型、字符串(⽂本)类型、时间⽇期类型和其他类型⼏类。
数值类型数值类型说明:类型说明例⼦tinyint存储范围:-128⾄127或0⾄255tinyint(1)smallint存储范围:-32768⾄32767或0⾄65535smallint(3) mediumint存储范围:- 8388608⾄8388607或0⾄16777215mediumint(5)int存储范围:- 2147483648⾄2147483647或0⾄4294967295int(10)bigint存储范围:- 9223372036854775808⾄9223372036854775807或0⾄18446744073709551615bigint(10)float最⼩⾮零值:±1.175494351E – 38,同double⼀样适⽤于精度要求⾼的场合float(3,1)double最⼩⾮零值:±2.2250738585072014E - 308double(10,5)decimal取值范围可变,以来括号内的显⽰尺⼨和⼩数点位数⽽定,适⽤于对精度要求不⾼但准确度要求⾮常⾼的场合decimal(10,2)补充说明1. 在 int(integer)系列中,只能存储整型值,且可以在后⾯⽤括号指定显⽰的尺⼨(M),如果不指定则会默认分配。
SQL数据库字段数据类型说明
SQL数据库字段数据类型说明1)char、varchar、text和nchar、nvarchar、ntextchar和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。
text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
后面三种数据类型和前面的相比,从名称上看只是多了个字母n,它表示存储的是Unicode 数据类型的字符。
写过程序的朋友对Unicode应该很了解。
字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。
nchar、nvarchar的长度是在1到4000之间。
和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。
可以看出使用nchar、nvarchar 数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
(2)datetime和smalldatetimedatetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒。
smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。
(3)bitint、int、smallint、tinyint和bitbigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。
SQL字段类型
(1)char、varchar、text和nchar、nvarchar、ntextchar和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。
text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
后面三种数据类型和前面的相比,从名称上看只是多了个字母"n",它表示存储的是Unicode数据类型的字符。
写过程序的朋友对Unicode应该很了解。
字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。
nchar、nvarchar的长度是在1到4000之间。
和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。
可以看出使用nchar、nvarchar 数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
(2)datetime和smalldatetimedatetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒。
smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。
(3)bitint、int、smallint、tinyint和bitbigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。
sqlserver 字段类型
SQL Server 字段类型是用来描述数据的结构和属性的类型。
它是SQL Server数据库中的一个重要组成部分,也是数据库开发的基础。
SQL Server支持的字段类型很多,主要分为三大类,即数值型、日期型和字符型。
1、数值型。
数值型字段是指可以存储数值的字段,其中包括整型(int)、小数型(decimal)、浮点型(float)、布尔型(bit)等。
数值型字段可以用来存储数字,比如金额、库存、价格等。
2、日期型。
日期型字段是指可以存储日期的字段,其中包括日期时间型(datetime)、日期型(date)、时间型(time)等。
日期型字段可以用来存储日期信息,比如订单创建时间、货物发货日期等。
3、字符型。
字符型字段是指可以存储文本信息的字段,其中包括字符型(char)、文本型(text)、可变字符型(varchar)等。
字符型字段可以用来存储文本信息,比如客户名称、地址、电话号码等。
4、二进制型。
二进制型字段是指可以存储二进制数据的字段,其中包括二进制型(binary)、可变二进制型(varbinary)等。
二进制型字段可以用来存储二进制数据,比如图片、文件等。
SQL Server支持多种字段类型,可以满足各种应用场景的数据存储需求。
在使用SQL Server字段类型时,一定要根据实际需求选择合适的字段类型,以达到最优的存储效果。
SQL中数据类型
SQL中数据类型数据类型SQL中将数据类型分成了三⼤类: 数值类型, 字符串类型和时间⽇期类型数值型系统将数值型分为整数型和⼩数型整数型存放整型数据: 在SQL中因为更多要考虑如何节省磁盘空间, 所以系统将整型⼜细分成了5类: tinyint: 迷你整型,使⽤⼀个字节存储, 表⽰的状态最多为256种(常⽤)smallint: ⼩整型,使⽤2个字节存储,表⽰的状态最多为65536种mediumint: 中整型, 使⽤3个字节存储int: 标准整型, 使⽤4个字节存储(常⽤)bigint: ⼤整型,使⽤8个字节存储⼩数型带有⼩数点或者范围超出整型的数值类型.SQL中: 将⼩数型细分成两种: 浮点型和定点型浮点型: ⼩数点浮动, 精度有限,⽽且会丢失精度定点型: ⼩数点固定, 精度固定, 不会丢失精度浮点型浮点型数据是⼀种精度型数据: 因为超出指定范围之后, 会丢失精度(⾃动四舍五⼊)浮点型: 理论分为两种精度Float: 单精度, 占⽤4个字节存储数据, 精度范围⼤概为7位左右Double: 双精度,占⽤8个字节存储数据, 精度⽅位⼤概为15位左右定点型定点型: 绝对的保证整数部分不会被四舍五⼊(不会丢失精度),⼩数部分有可能(理论⼩数部分也不会丢失精度)时间⽇期类型Datetime: 时间⽇期, 格式是YYYY-mm-dd HH:ii:ss,表⽰的范围是从1000到9999年,有0值: 0000-00-00 00:00:00Date: ⽇期,就是datetime中的date部分Time: 时间(段), 指定的某个区间之间, -时间到+时间Timestamp: 时间戳, 并不是时间戳,只是从1970年开始的YYYY-mm-dd HH:ii:ss格式与datetime完全⼀致Year: 年份,两种形式, year(2)和year(4): 1901-2156字符串类型在SQL中,将字符串类型分成了6类: char、varchar、text、blob、enum和set定长字符串(char)定长字符串: char, 磁盘(⼆维表)在定义结构的时候,就已经确定了最终数据的存储长度.char(L): L代表length, 可以存储的长度, 单位为字符, 最⼤长度值可以为255.char(4): 在UTF8 环境下,需要4 * 3 = 12个字节变长字符串(varchar)变长字符串: varchar, 在分配空间的时候, 按照最⼤的空间分配: 但是实际上最终⽤了多少,是根据具体的数据来确定.varchar(L): L表⽰字符长度理论长度是65536个字符, 但是会多处1到2个字节来确定存储的实际长度: 但是实际上如果长度超过255,既不⽤定长也不⽤变长, 使⽤⽂本字符串textvarchar(10): 的确存了10个汉字, utf8环境, 10 * 3 + 1 = 31(bytes)存储了3个汉字: 3 * 3 + 1 = 10(bytes)⽂本字符串如果数据量⾮常⼤, 通常说超过255个字符就会使⽤⽂本字符串⽂本字符串根据存储的数据的格式进⾏分类: text和blobText: 存储⽂字(⼆进制数据实际上都是存储路径)Blob: 存储⼆进制数据(通常不⽤)枚举字符串枚举: enum, 事先将所有可能出现的结果都设计好, 实际上存储的数据必须是规定好的数据中的⼀个.枚举的使⽤⽅式定义: enum(可能出现的元素列表); //如enum(‘男’,’⼥’,’不男不⼥’,’妖’,’保密’);使⽤: 存储数据,只能存储上⾯定义好的数据集合字符串集合跟枚举很类似: 实际存储的是数值,⽽不是字符串(集合是多选)集合使⽤⽅式:定义: Set(元素列表)使⽤: 可以使⽤元素列表中的元素(多个), 使⽤逗号分隔。
SQL的数据类型
SQL的数据类型SQL的数据类型只有⼀条路不能选择——那就是放弃的路;只有⼀条路不能拒绝——那就是成长的路。
命名规则字段名必须以字母开头,尽量不要使⽤拼⾳长度不能超过30个字符(不同数据库,不同版本会有不同)不能使⽤SQL的保留字,如where,order,group只能使⽤如下字符az、AZ、0~9、$ 等Oracle习惯全⼤写:USER_NAME,mysql习惯全⼩写:user_name多个单词⽤下划线隔开,⽽⾮java语⾔的驼峰规则数字tinyint,smallint,mediuint,int,bigint-->整型tinyint 1字节 -128~127smallint 2字节 -32768~32767mediuint 3字节 -8388608~8388607int 4字节 -2147483648~2147483647bigint 8字节 +-9.22*10的18次⽅float,double,decimal-->浮点型float(m,d) 4字节单精度浮点类型,m总个数,d⼩数位double(m,d) 8字节双精度浮点类型,m总个数,d⼩数位decimal(m,d) decimal是存储为字符串的浮点数numberic(5,2) decimal(5,2)—也可以表⽰⼩数,表⽰总共5位,其中可以有两位⼩数decimal和numeric表⽰精确的整数数字字符char长度固定,不⾜使⽤空格填充,最多容纳2000个字符,char(11)存储abc,占11位。
查询速度极快但浪费空间char 0-255字节定长字符串varchar变长字符串,最多容纳4000个字符,varchar(11)存储abc,只占3位。
查询稍慢,但节省空间。
Oracle为varchar2 varchar 0-65535字节边长字符串⼤⽂本: ⼤量⽂字(不推荐使⽤,尽量使⽤varchar替代)以utf8编码计算的话,⼀个汉字在u8下占3个字节注:不同数据库版本长度限制可能会有不同⽇期date 包含年⽉⽇date 4字节⽇期,格式:2021-08-09time时分秒datetime包含年⽉⽇和时分秒timestamp时间戳,不是⽇期,⽽是从1970年1⽉1⽇到指定⽇期的毫秒数图⽚blob ⼆进制数据,可以存放图⽚、声⾳,容量4g。
sql数据类型详解
sql数据类型详解(1)⼆进制数据类型 ⼆进制数据包括 Binary、Varbinary 和 Image Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的。
Binary[(n)] 是 n 位固定的⼆进制数据。
其中,n 的取值范围是从 1 到 8000。
其存储窨的⼤⼩是 n + 4 个字节。
Varbinary[(n)] 是 n 位变长度的⼆进制数据。
其中,n 的取值范围是从 1 到 8000。
其存储窨的⼤⼩是 n + 4个字节,不是n 个字节。
在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应⽤程序来解释。
例如,应⽤程序可以使⽤BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。
(2)字符数据类型 字符数据的类型包括 Char,Varchar 和 Text 字符数据是由任何字母、符号和数字任意组合⽽成的数据。
Varchar 是变长字符数据,其长度不超过 8KB。
Char 是定长字符数据,其长度最多为 8KB。
超过 8KB 的ASCII 数据可以使⽤Text数据类型存储。
例如,因为 Html ⽂档全部都是 ASCII 字符,并且在⼀般情况下长度超过 8KB,所以这些⽂档可以 Text 数据类型存储在SQL Server 中。
(3)Unicode 数据类型 Unicode 数据类型包括 Nchar,Nvarchar 和Ntext 在 Microsoft SQL Server 中,传统的⾮ Unicode 数据类型允许使⽤由特定字符集定义的字符。
在 SQL Server安装过程中,允许选择⼀种字符集。
使⽤ Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。
在 Unicode 标准中,包括了以各种字符集定义的全部字符。
使⽤Unicode数据类型,所战胜的窨是使⽤⾮ Unicode 数据类型所占⽤的窨⼤⼩的两倍。
SQL中的五种数据类型
SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型字符型VARCHAR VS CHARVARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。
他们都是用来储存字符串长度小于255的字符。
假如你向一个长度为四十个字符的VARCHAR型字段中输入数据BIll GAtES。
当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。
现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。
字符串的后面会被附加多余的空格。
当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。
使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。
VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。
当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要文本型TEXT使用文本型数据,你可以存放超过二十亿个字符的字符串。
当你需要存储大串的字符时,应该使用文本型数据。
注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。
一个文本型字段中的数据通常要么为空,要么很大。
当你从HTML fORM的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。
但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。
文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。
文本型字段还会吃掉大量的磁盘空间。
一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。
除非删除该记录,否则你无法收回这部分存储空间。
数值型SQL支持许多种不同的数值型数据。
你可以存储整数 INT 、小数 NUMERIC、和钱数 MONEY。
INT VS SMALLINT VS TINYINT他们的区别只是字符长度:INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数SMALLINT 型数据可以存储从-32768到32768的整数TINYINT 型的字段只能存储从0到255的整数,不能用来储存负数通常,为了节省空间,应该尽可能的使用最小的整型数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL数据库字段类型说明
1)char、varchar、text和nchar、nvarchar、ntext
char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。
text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
后面三种数据类型和前面的相比,从名称上看只是多了个字母n,它表示存储的是Unicode数据类型的字符。
写过程序的朋友对Unicode应该很了解。
字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。
nchar、nvarchar的长度是在1到4000之间。
和char、varchar比较:nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar 最多能存储8000个英文,4000个汉字。
可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
(2)datetime和smalldatetime
datetime:从1753年1月1日到9999年12月31日的日期和时间数据,精确到百分之三秒。
smalldatetime:从1900年1月1日到2079年6月6日的日期和时间数据,精确到分钟。
(3)bitint、int、smallint、tinyint和bit
bigint:从-2^63(-9223372036854775808)到2^63-1(9223372036854775807)的整型数据。
int:从-2^31(-2,147,483,648)到2^31-1(2,147,483,647)的整型数据。
smallint:从-2^15(-32,768)到2^15-1(32,767)的整数数据。
tinyint:从0到255的整数数据。
bit:1或0的整数数据。
(4)decimal和numeric
这两种数据类型是等效的。
都有两个参数:p(精度)和s(小数位数)。
p指定小数点左边和右边可以存储的十进制数字的最大个数,p必须是从 1到38之间的值。
s指定小数点右边可以存储的十进制数字的最大个数,s必须是从0到p 之间的值,默认小数位数是0。
(5)float和real
float:从-1.79^308到1.79^308之间的浮点数字数据。
real:从-3.40^38到3.40^38之间的浮点数字数据。
在SQL Server中,real 的同义词为float(24)。
数据库定义到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、OR 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;。