SQL数据库字段类型说明

SQL数据库字段类型说明
SQL数据库字段类型说明

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;

Mysql支持的数据类型(总结)

一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型 (INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。 扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形,并增加了BIT类型,用来存放位数据。 整数类型字节范围(有符号)范围(无符 号)用途 TINYINT 1字节(-128,127) (0, 255) 小整数值 SMALLINT 2字节 (-32 768,32 767) (0,65 535) 大整数值 MEDIUMINT 3字节(-8 388 608,8 388 607) (0,16 777 215) 大整数值 INT或INTEGER 4字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值 BIGINT 8字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值 FLOAT 4字节 (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度浮点数值 DOUBLE 8字节 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度浮点数值DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值依赖于M和D的值小数值 INT 类型: 在 MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和BIGINT。这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。例如,指定一个字段的类型为 INT(6),

数据库表及字段命名、设计规范

数据库表及字段命名、设计规范1、命名规范 1.1数据表的命名规范: 1)表的前缀应该用系统或模块的英文名的缩写(全部大写或首字母大写)。如果系统功能简单,没有划分为模块,则可以以系统英文名称的缩写作为前缀,否则以各模块的英文名称缩写作为前缀。例如:如果有一个模块叫做BBS(缩写为BBS),那么你的数据库中的所有对象的名称都要加上这个前缀:BBS_ + 数据库对象名称,BBS_CustomerInfo标示论坛模块中的客户信息表。 2)表的名称必须易于理解,使用能表达表功能的英文单词或缩写英文单词,无论是完整英文单词还是缩写英文单词,单词首字母必须大写。如果当前表可用一个英文单词表示的,请用完整的英文单词来表示;例如:系统资料中的客户表的表名可命名为:SYS_Customer。如果当前表需用两个或两个以上的单词来表示时,尽量以完整形式书写,如太长可采用两个英文单词的缩写形式;例如:系统资料中的客户物料表可命名为:SYS_CustItem。 3)表的名称一般使用名词或者动宾短语 4)表名称不应该取得太长(一般不超过三个英文单词)。 5)在命名表时,用单数形式表示名称。例如,使用Employee,而不是Employees。 6)对于有主明细的表来说。明细表的名称为:主表的名称+ 字符Dts。例如:采购定单的名称为:PO_Order,则采购定单的明细表为:PO_OrderDts 对于有主明细的表来说,明细表必须包含两个字段:主表关键字、SN,SN字段的类型为int 型,目的为与主表关键字联合组成明细表的关键字,以及标示明细记录的先后顺序,如1,2,3……。 7)表必须填写描述信息

mysql数据类型属性总结(方便大家建数据库设定类型参考)

MySQL数据类型和常用字段属性总结●日期和时间数据类型 ●数值数据类型 整型

上面定义的都是有符号的,当然了,也可以加上unsigned关键字,定义成无符号的类型,那么对应的取值范围就要翻翻了,比如: tinyint unsigned的取值范围为0~255。 ●浮点型 我在MySQL中建立了一个表,有一列为float(5, 3);做了以下试验: 1.插入123.45678,最后查询得到的结果为99.999; 2.插入12 3.456,最后查询结果为99.999; 3.插入12.34567,最后查询结果为12.346; 所以,在使用浮点型的时候,还是要注意陷阱的,要以插入数据库中的实际结果为准。 ●字符串数据类型

1.char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。 2.同时char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。 3.超过char和varchar的n设置后,字符串会被截断。 4.char的上限为255字节,varchar的上限65535字节,text的上限为65535。 5.char在存储的时候会截断尾部的空格,varchar和text不会。 6.varchar会使用1-3个字节来存储长度,text不会。 1.enum(“member1″, “member2″, … “member65535″) enum数据类型就是定义了一种枚举,最多包含65535个不同的成员。当定义了一个enum的列时,该列的值限制为列定义中声明的值。如果列声明包含NULL属性,则NULL将被认为是一个有效值,并且是默认值。如果声明了NOT NULL,则列表的第一个成员是默认值。

数据库数据类型

MySQL 数据类型在MySQL 中,有三种主要的类型:文本、数字和日期/时间类型。 Text类型 数据类型描述 CHAR(size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多255 个字符。 VARCHAR(size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多255 个字符。注释:如果值的长度大于255,则被转换为TEXT 类型。 TINYTEXT 存放最大长度为255 个字符的字符串。 TEXT 存放最大长度为65,535 个字符的字符串。 BLOB 用于BLOBs (Binary Large OBjects)。存放最多65,535 字节的数据。MEDIUMTEXT 存放最大长度为16,777,215 个字符的字符串。 MEDIUMBLOB 用于BLOBs (Binary Large OBjects)。存放最多16,777,215 字节的数据。LONGTEXT 存放最大长度为4,294,967,295 个字符的字符串。 LONGBLOB 用于BLOBs (Binary Large OBjects)。存放最多4,294,967,295 字节的数据。 ENUM(x,y,z,etc.) 允许你输入可能值的列表。可以在ENUM 列表中列出最大65535 个值。如果列表中不存在插入的值,则插入空值。 注释:这些值是按照你输入的顺序存储的。可以按照此格式输入可能的值:ENUM('X','Y','Z') SET 与ENUM 类似,SET 最多只能包含64 个列表项,不过SET 可存储一个以上的值。 Number类型: 数据类型描述 TINYINT(size) -128 到127 常规。0 到255 无符号*。在括号中规定最大位数。 SMALLINT(size) -32768 到32767 常规。0 到65535 无符号*。在括号中规定最大位数。 MEDIUMINT(size) -8388608 到8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。 INT(size) -2147483648 到2147483647 常规。0 到4294967295 无符号*。在括号中规定最大位数。 BIGINT(size) -9223372036854775808 到9223372036854775807 常规。0 到18446744073709551615 无符号*。在括号中规定最大位数。 FLOAT(size,d) 带有浮动小数点的小数字。在括号中规定最大位数。在d 参数中规定小数点右侧的最大位数。DOUBLE(size,d) 带有浮动小数点的大数字。在括号中规定最大位数。在d 参数中规定小数点右侧的最大位数。DECIMAL(size,d) 作为字符串存储的DOUBLE 类型,允许固定的小数点。 这些整数类型拥有额外的选项UNSIGNED。通常,整数可以是负数或正数。如果添加UNSIGNED 属性,那么范围将从0 开始,而不是某个负数。

批量修改数据库表字段类型

实际使用例子: /*--将所需表的某特定数值类型批量转换为其他类型--*/ /*--调用示例:E1T04_1996 char(10)-转换为nvarchar(100) --*/ set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go CREATE procedure [dbo].[p_set] as declare tb cursor for SELECT sql='alter table ['+https://www.360docs.net/doc/1610420178.html,+'] alter column ['+https://www.360docs.net/doc/1610420178.html,+'] nvarchar' +' (100)' FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d on a.id=d.id and d.xtype='U' and https://www.360docs.net/doc/1610420178.html,='E1T04_1996' where https://www.360docs.net/doc/1610420178.html, ='char' AND a.length='10' declare @sql varchar(1000) open tb fetch next from tb into @sql while @@fetch_status = 0 begin exec(@sql) fetch next from tb INTO @sql end close tb deallocate tb -- --DECLARE @sql VARCHAR(1000) --select @sql='alter table ['+https://www.360docs.net/doc/1610420178.html,+'] alter column ['+https://www.360docs.net/doc/1610420178.html,+'] nvarchar' -- +'(100)' FROM syscolumns a -- left join systypes b on a.xtype=b.xusertype -- inner join sysobjects d on a.id=d.id and d.xtype='U' and https://www.360docs.net/doc/1610420178.html,='E1T04_1996' where https://www.360docs.net/doc/1610420178.html, ='char' AND a.length='10' -- -- PRINT @sql --------------------------------------------------------------------------------------

mysql字段类型

1. mysql的数据类型 在mysql中有如下几种数据类型: (1)数值型 数值是诸如32 或153.4 这样的值。mysql 支持科学表示法,科学表示法由整数或浮点数后跟“e”或“e”、一个符号(“+”或“-”)和一个整数指数来表示。1.24e+12 和23.47e-1 都是合法的科学表示法表示的数。而 1.24e12 不是合法的,因为指数前的符号未给出。 浮点数由整数部分、一个小数点和小数部分组成。整数部分和小数部分可以分别为空,但不能同时为空。 数值前可放一个负号“-”以表示负值。 (2)字符(串)型 字符型(也叫字符串型,简称串)是诸如“hello,world!”或“一个馒头引起的血案”这样的值,或者是电话号码这样的值。既可用单引号也可用双引号将串值括起来。 初学者往往分不清数值和字符串的区别。都是数字啊,怎么一个要用数值型,一个要用字符型呢?关键就在于:数值型的是要参与计算的,比如它是金融中的一个货款总额;而字符型的是不参与计算的,只是表示电话号码,这样的还有街道号码、门牌号码等等,它们都不参与计算。 (3)日期和时间型 日期和时间是一些诸如“2006-07-12”或“12:30:43”这样的值。mysql还支持日期/时间的组合,如“2006-07-12 12:30:43”。 (4)null值 null表示未知值。比如填写表格中通讯地址不清楚留空不填写,这就是null 值。 我们用create table语句创建一个表(参看前面的章节),这个表中包含列的定义。例如我们在前面创建了一个joke表,这个表中有content和writer 两个列: create table (

SQL语句修改字段类型长度

sql语句修改字段属性 如果数据量非常大,达到几百万条记录以上,使用企业管理器来更改字段类型,很多时候会超时,更改不成功,这时可以使用sql语句来更改,如下: a、更改字段类型长度 alter table 表 alter column 字段名类型的长度--varchar(60) 例:把城市表的城市名字段有原来的长度20改为30 alter table testcity alter column cityname varchar(30) b、更改字段类型 alter table 表 alter column 字段名更改后的类型 例:把城市表的城市名字段有原来的varchar类型改为int类型 alter table testcity alter column cityname int 如果sno字段原来不为空: alter table student alter column sno varchar(10) not null 如果sno字段原来为空: alter table student alter column sno varchar(10) 因为不管以前的字段是否允许为空,执行 alter table student alter column sno varchar(10) 后该字段都会变为允许为空。还有就是执行这类修改操作时最好是空表,如果有数据,可能会失败。因为有些数据类型之间可能不能隐式的转换或者根本就不能转化,比如“abc”要转换成int型。所以,一切还要自己注意控制。 c、添加not null约束 alter table 表 alter column 字段名 int not null 例:把cid不能输入空值 alter table testcity alter column cid int not null d、设置主键 alter table 表 add constraint 主键名 primary key(字段名) 例:把cid设为主键 alter table testcity add constraint pk_cid primary key(cid) e、更改字段名 exec sp_rename 表名.字段名,更改后的字段名,column f、添加字段名 alter table 表 add 字段名字段类型 default null篇二:用sql语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200) 2.删除字段 alter table table_name drop column column_name 3.修改字段类型 alter table table_name alter column column_name new_data_type 4.sp_rename 改名 exec sp_rename [dbo].[table_1].[filedname1], filedname2, column 更改当前数据

MySQL 数据类型 (列表)

MySQL数据类型(列表) 数据类型描述字节推荐使用 SMALLINT整数,从-32000到+32000范围2存储相对比较小的整数。 比如:年纪,数量 INT整数,从-2000000000到 +2000000000范围4存储中等整数 例如:距离 BIGINT不能用SMALLINT或INT描述的 超大整数。8存储超大的整数 例如:科学/数学数据 FLOAT单精度浮点型数据4存储小数数据 例如:测量,温度 DOUBLE双精度浮点型数据8需要双精度存储的小数数据 例如:科学数据 DECIMAL用户自定义精度的浮点型数据变量;取决于精度与长度以特别高的精度存储小数数据。 例如:货币数额,科学数据 CHAR固定长度的字符串特定字符串长度(高达255字符)存储通常包含预定义字符串的变量 例如:定期航线,国家或邮编 VARCHAR具有最大限制的可变长度的字符 串变量;1+实际字符串长度(高 达255字符) 存储不同长度的字符串值(高达一个特定的 最大限度). 例如:名字,密码,短文标签 TEXT没有最大长度限制的可变长度的 字符串Variable;2+聽actual string length 存储大型文本数据 例如:新闻故事,产品描述 BLOB二进制字符串变量;2+实际字符串长度存储二进制数据 例如:图片,附件,二进制文档 DATE以yyyy-mm-dd格式的日期3存储日期 例如:生日,产品满期 TIME以hh:mm:ss格式的时间3存储时间或时间间隔 例如:报警声,两时间之间的间隔,任务开 始/结束时间 DATETIME以yyyy-mm-ddhh:mm:ss格式结合 日期和时间8存储包含日期和时间的数据 例如:提醒的人,事件 TIMESTAMP以yyyy-mm-ddhh:mm:ss格式结合 日期和时间4记录即时时间 例如:事件提醒器,“最后进入”的时间标 记 YEAR以yyyy格式的年份1存储年份 例如:毕业年,出生年 ENUM一组数据,用户可从中选择其中 一个1或2个字节存储字符属性,只能从中选择之一 例如:布尔量选择,如性别 SET一组数据,用户可从中选择其中 0,1或更多。从1到8字节;取决于设置的大小存储字符属性,可从中选择多个字符的联 合。 例如:多选项选择,比如业余爱好和兴趣。

SQL数据库字段类型说明

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)。

SQL修改数据库表的列属性

SQL修改数据库表的列属性(ALTER语句) 我们可以用客户端的语句改写,psql比如把数据库表journal里的keyword,ekeyword属性改为character(350),原来为character(200),那么我们可以这样操作: psql postgres -c "ALTER TABLE journal ALTER keyword TYPE character(350)" psql postgres -c "ALTER TABLE journal ALTER ekeyword TYPE character(350)" 好了,修改结束。 附ALTER语句的文档。 ---------------------- ALTER TABLE [ ONLY ]name[ * ] action[, ... ] ALTER TABLE [ ONLY ]name[ * ] RENAME [ COLUMN ]column TO new_column ALTER TABLE name RENAME TO new_name ALTER TABLE name SET SCHEMA new_schema 这里action是下列之一: ADD [ COLUMN ]columntype[column_constraint[ ... ] ] DROP [ COLUMN ]column[ RESTRICT | CASCADE ] ALTER [ COLUMN ]column TYPE type[ USING expression] ALTER [ COLUMN ]column SET DEFAULT expression ALTER [ COLUMN ]column DROP DEFAULT ALTER [ COLUMN ]column{ SET | DROP } NOT NULL ALTER [ COLUMN ]column SET STATISTICS integer ALTER [ COLUMN ]column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN } ADD table_constraint DROP CONSTRAINT constraint_name[ RESTRICT | CASCADE ] DISABLE TRIGGER [trigger_name| ALL | USER ] ENABLE TRIGGER [trigger_name| ALL | USER ] CLUSTER ON index_name SET WITHOUT CLUSTER SET WITHOUT OIDS OWNER TO new_owner SET TABLESPACE new_tablespace描述 ALTER TABLE变更一个现存表的定义。它有好几种子形式: ADD COLUMN 这种形式用和CREATE TABLE里一样的语法向表中增加一个新的字段。 DROP COLUMN 这种形式从表中删除一个字段。请注意,和这个字段相关的索引和表约束也会被自动删除。如果任何表之外的对象依赖于这个字段,你必须说CASCADE,比如,外键参考,视图等等。 ALTER COLUMN TYPE

有用的字段类型和数据类型

有用的字段类型和数据类型 在vfp中,共有13种字段类型和7种数据类型.13种字段类型是:字符型,数值型,浮点型,双精度型,整型,货币型,日期型,日期时间型,逻辑型,备注型,通用型,二进制字符型和二进制备注型;而7种数据类型是:字符型,数值型,货币型,日期型,日期时间型,逻辑型和通用型.字段为表文件所特有,而数据既可做表文件中的字段内容,也可以做内存变量或常量使用. 1.字符型字段和字符型数据: 字符型字段用于存放字符型数据.字符型数据是指一切可印刷的字符,包括英文字母,阿拉伯数字,各种符号,汉字及空格. 上述"职工档案"表中的"编号"和"姓名"字段就属于字符型字段,而其中存储的编号和姓名就属于字符型数据.字符型字段的宽度为1~字节. 2.数值型,浮点型,双精度型,整型字段与数值型数据: 数值型字段按每位数1个字节存放数值型数据,而浮点型字段存放浮点型数据.这两者最大宽度为20位.整型字段存放整数,用该类型字段存放较大的整数可节省存储容量,因为它只占4个字节.双精度型字段用于存放双精度型数,常用于科学计算,可得15位精度,但只占8个字节.这些字段中存放在数据统称为数值型数据. 3.货币型字段和货币型数据:货币型字段用于存放货币型数据,但只占8个字节. 4.日期型字段和日期型数据:日期型字段用于存放日期型数据.常用格式为:"年.月.日"和"月/日/年".在"职工档案"表中,"出生日期"字段就是日期型字段,而其中存放的数据就是日期型数据. 5.日期时间型字段和日期时间型数据:日期时间型字段存放日期时间型数据,格式为:年.月.日小时:分:秒Am或pm. 6.逻辑型字段和逻辑型数据:逻辑型字段用于存放逻辑型数据.逻辑型数据只有两个值,即"真"和"假",常用于描述只有两种状态的数据.例如:在"职工档案"表中,"婚否"字段就是逻辑型字段,用"真"表示已婚,"假"值表示未婚.在输入逻辑型数据时,可用T,t,Y,y中的任一个代表"真",而用F,f,N,n中的任一个代表"假". 7.备注型字段:备注型字段用于存放字符型,如文本、源代码等,使其得到了广泛应用.它常用于记录可有可无、可长可短的情况.例如,假如要在"职工档案"表中增加一个"简历"字段,定义成备注型最合适,因为有些人的简历可能长些,有些人的简历可能短些.此外,备注型字段还可用于提供运行时的帮助. 记录在备注型字段中的,实际上并不存放在表文件中,而是存放在与表文件同名,但扩展名为.fpt的文件中.当创建表文件时,假如定义了备注型字段,则相应的备注文件会自动生成,会随表文件的打开而自动打开.

数据库、表、字段的命名规则

数据库、表、字段的命名规则 每个公司或者企业数据库、表、字段等都有自己命名规则,数据库开发时数据库、表、字段、视图、触发器、存储过程、变量名、主键、外键、索引等的命名规则。 一、数据库(Database) 数据库名称 = 数据库内容标识(首字大写)。 二、表(Table) 命名应尽量反映存储的数据内容。 表名前缀:以该表及与该表相关联的一系列表的内容而得到一个代表统一的标识。 表名称 = T +‘_’+ 表名前缀+‘_’+ 表内容标识(首字大写) 。 如客户端信息ClientInfo相关联的一系的表以ci作为前缀,Record记录表即有表名:T_ci_Record。 数据库中不论是表名还是字段名,都一律用英文,不准出现其它语言;且保留原来的字段名,保留它们的规范。 为了不增加数据库当中的表名的长度,一般不允许出现如Form或者Table的字样,如:记录表:应为Record,而不是RecordTable。 数据库当中的表名的命名,一般不准出现空格,假如有几个单词出现的话,每个单词之间不允许留有空格,用”_”隔开如人事信息表:应为Human_Info,而不是Human Info;每个单词的第一个字母必须大写;如果太长,为了不增加编程的难度可采用缩写的方式,每个单词可取三到四个字母表示,也可根据实际情况,实际习惯进行缩写。 三、字段(Field) 字段是数据库中的用途最广泛的,它的类型非常多,所以必须加类型前缀来标示它的类型。 字段名称 = F + 字段类型前缀 + 字段内容标识(首字大写) 。 为了编程的方便性,可在前面加上字段类型的前缀,一般取用类型的三个字母,但是不需要下化线,而且这三个字母必须小写;如姓名字段为字符型的话就应该为chrName;尝用字段类型的缩写可参考下面的形式: 缩写- 类型 chr- char nvr- nvarchar vcr -varchar num -number flt -float dtm -date lng -long clb- clob blb- blob 四、视图名(View) 视图的名称 = "v_" + 视图内容标识(首字大写) 如 v_Record。 五、触发器名(Triger)

用sql语句添加删除修改字段

1.增加字段 alter table docdsp add dspcode char(200) 2.删除字段 ALTER TABLE table_NAME DROP COLUMN column_NAME 3.修改字段类型 ALTER TABLE table_name ALTER COLUMN column_name new_data_type 4.sp_rename 改名 EXEC sp_rename '[dbo].[Table_1].[filedName1]', 'filedName2', 'COLUMN' 更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。 语法 sp_rename [ @objname = ] 'object_name' ,[ @newname = ] 'new_name',分类信息; [ , [ @objtype =] 'object_type' ] 如:EXEC sp_rename 'newname','PartStock' 5.sp_help 显示表的一些基本情况 sp_help 'object_name' 如:EXEC sp_help 'PartStock' 6.判断某一表PartStock中字段PartVelocity是否存在 if exists (select * from syscolumns where id=object_id('PartStock') and name='PartVelocity') print 'PartVelocity exists' else print 'PartVelocity not exists' 另法: 判断表的存在性: select count(*) from sysobjects where type='U' and name='你的表名' 判断字段的存在性: select count(*) from syscolumns where id = (select id from sysobjects where type='U' and name='你的表名') and name = '你要判断的字段名' 一个小例子 --假设要处理的表名为: tb --判断要添加列的表中是否有主键 if exists(select 1 from sysobjects where parent_obj=object_id('tb') and xtype='PK')

MySQL数据类型

int 允许从-2,147,483,648 到2,147,483,647 的所有数字。 4 字节bigint 允许介于-9,223,372,036,854,775,808 和9,223,372,036,854,775,807 之间的所有数字。8 字节decimal(p,s) 固定精度和比例的数字。允许从-10^38 +1 到10^38 -1 之间的数字。 p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是1 到38 之间的值。默认是18。 s 参数指示小数点右侧存储的最大位数。s 必须是0 到p 之间的值。默认是0。 5-17 字节 numeric(p,s) 固定精度和比例的数字。允许从-10^38 +1 到10^38 -1 之间的数字。 p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是1 到38 之间的值。默认是18。 s 参数指示小数点右侧存储的最大位数。s 必须是0 到p 之间的值。默认是0。 5-17 字节 smallmoney 介于-214,748.3648 和214,748.3647 之间的货币数据。 4 字节money 介于-922,337,203,685,477.5808 和922,337,203,685,477.5807 之间的货币数据。8 字节 float(n) 从-1.79E + 308 到 1.79E + 308 的浮动精度数字数据。参数n 指示该字段保存 4 字节还是8 字节。 float(24) 保存4 字节,而float(53) 保存8 字节。n 的默认值是53。4 或8 字节 real 从-3.40E + 38 到3.40E + 38 的浮动精度数字数据。 4 字节

Northwind数据库表字段介绍

Northwind数据库表字段介绍 2010-06-03 10:30:08| 分类:SQL | 标签:|举报|字号大中小订阅 ①Categories:种类表 相应字段: CategoryID :类型ID; CategoryName:类型名; Description:类型说明; Picture:产品样本 ②CustomerCustomerDemo:客户类型表1 相应字段: CustomerID:客户ID; CustomerTypeID:客户类型ID ③CustomerDemographics:客户类型表2 相应字段: CustomerTypeID:客户类型ID; CustomerDesc:客户描述 ④Customers:客户表 相应字段: CustomerID:客户ID; CompanyName:所在公司名称; ContactName:客户姓名; ContactTitle:客户头衔; Address:联系地址; City:所在城市; Region:所在地区; PostalCode:邮编; Country:国家 Phone:电话; Fax:传真 ⑤Employees:员工表 相应字段: EmployeeID:员工代号; LastName + FirstName:员工姓名; Title:头衔; TitleOfCourtesy:尊称; BirthDate:出生日期; HireDate:雇用日期; Address:家庭地址; City:所在城市; Region:所在地区;

PostalCode:邮编; Country:国家用; HomePhone:宅电; Extension:分机; Photo:手机; notes:照片; ReportsTo:上级; PhotoPath:照片 ⑥EmployeeTerritories:员工部门表相应字段: EmployeeID:员工编号; TerritoryID:部门代号 ⑦Order Details:订单明细表 相应字段: OrderID:订单编号; ProductID:产品编号; UnitPrice:单价; Quantity:订购数量; Discount:折扣 ⑧Orders:订单表 相应字段: OrderID:订单编号; CustomerID:客户编号; EmployeeID:员工编号; OrderDate:订购日期;RequiredDate:预计到达日期; ShippedDate:发货日期; ShipVia:运货商; Freight:运费; ShipName:货主姓名; ShipAddress:货主地址 ShipCity:货主所在城市; ShipRegion:货主所在地区;ShipPostalCode:货主邮编; ShipCountry:货主所在国家 ⑨Products:产品表 相应字段: ProductID:产品ID; ProductName:产品名称; SupplierID:供应商ID; CategoryID:类型ID;QuantityPerUnit:数量;

MySQL数据表类型 数据类型

表类型 MySQL的数据表类型很多,其中比较重要的是MyISAM,InnoDB这两种。 这两种类型各有优缺点,需要根据实际情况选择适合的,MySQL支持对不同的表设置不同的类型。下面做个对比: 一般情况下我觉得选择MyISAM就行,如果需要事务,或者需要很多用户同时修改某个数据表里的数据时,可以考虑InnoDB数据表。 数据类型 1.整型(xxxint) 右侧的取值范围是在未加unsigned关键字的情况下,如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。 书上说int(m)括弧里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,我测了一下,定义一个字段number 类型为int(4),插入一条记录"123456",用mysql query broswer执行SELECT查询,返回的结果集中123456正确显示,没有影响到显示的宽度,不知道这个m有什么用。 2.浮点型(float和double)

参数m只影响显示效果,不影响精度,d却不同,会影响到精度。 比如设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,小数点后面的数别四舍五入截成457了,但总个数不受到限制(6位,超过了定义的5位)。 3.定点数(decimal) decimal(m,d) 定点类型 浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。参数m是定点类型数字的最大个数(精度),范围为0~65,d小数点右侧数字的个数,范围为0~30,但不得超过m。 对定点数的计算能精确到65位数字。 4.字符串(char,varchar,xxxtext) 1.都可以通过指定n,来限制存储的最大字符数长度,char(20)和varchar(20)将最多只能存储20个字符,超过的字符将会被截掉。n必须小于该类型允许的最大字符数。 2.char类型指定了n之后,如果存入的字符数小于n,后面将会以空格补齐,查询的时候再将末尾的空格去掉,所以char类型存储的字符串末尾不能有空格,varchar不受此限制。 3.内部存储的机制不同。char是固定长度,char(4)不管是存一个字符,2个字符或者4个字符(英文的),都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入一个字符将占用2个字节,2个字符占用3个字节,4个字符占用5个字节。 4.char类型的字符串检索速度要比varchar类型的快。 varchar和text: 1.都是可变长度的,最多能存储65535个字符。 2.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节 (n<=255)或2个字节(n>255),text是实际字符数+2个字节。 3.text类型不能有默认值。

关于数据库建表时字段数据类型

char、varchar、text、ntext、bigint、int、smallint、tinyint 和bit的区别及数据库的数据类型 基础: char、varchar、text和nchar、nvarchar、ntext的区别 1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。 2、VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。 3、TEXT。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。 4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节

存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar 则最多存储4000个字符,不论是英文还是汉字;而char、varchar 最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar 数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。 进一步学习: char、varchar、text、ntext、bigint、int、smallint、tinyint 和bit的区别及数据库的数据类型 Varchar 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节 char 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)。由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!

相关文档
最新文档