我的MYSQL学习心得(二) 数据类
型宽度
显示宽度
MYSQL中的整数型数据类型都可以指定显示宽度,而SQLSERVER不行
创建一个表
CREATE TABLE tb_emp( id BIGINT(1))
id字段的数据类型为BIGINT(1),注意到后面的数字1,这表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数。 例如,假设声明一个INT类型的字段 YEAR INT(4)
该声明指明,在year字段中的数据一般只显示4位数字的宽度。
在SQLSERVER里是会报错的
CREATE TABLE abc (id INT(11))
消息 2716,级别 16,状态 1,第 1 行
第 1 个列、参数或变量: 不能对数据类型 int 指定列宽。
显示宽度和数据类型的取值范围是无关的。显示宽度只是指明MYSQL最大可能显示的数字个数,数值的位数小于指定的宽度时会有空格填充 如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能显示出来。
例如,向year字段插入一个数值19999,当使用select查询的时候,MYSQL显示的将是完整带有5位数字的19999,而不是4位数字的值 如果不指定显示宽度,则MYSQL为每一种类型指定默认的宽度值 tips:显示宽度只用于显示,并不能取值范围和占用空间,例如:INT(3)会占用4个字节的存储空间,并且允许的最大值也不会是999,而是INT整型
所允许的最大值。
mysql数据库表设置为id自动增长后,插入数据的sql语句。 指定id
错误:INSERT INTO test VALUES('test'); 这样的形式会产生错误,信息大致说数据列不够。 Column count doesn't match value count at row 1 如果,自己填写id也可以,如下:
INSERT INTO test (id, name) VALUES(1,'test');
正确写法,如下: 自动增长Id的插入语句
INSERT INTO test (name) VALUSE('test'); 也可以
INSERT INTO test (id, name) VALUES(NULL,'test');
即mysql自增列的值也可以显示的指定插入值。 如果是sql server 则需要通过显示的开启修改自增长。 SET IDENTITY_INSERT [TABLE][ON|OFF] 。
查看字段的长度 SQLSERVER
USE [sss] GO
SELECT LEN([NAME]) FROM [dbo].[aa]
MYSQL
CREATE TABLE tmp13(vb VARBINARY(10)) INSERT INTO tmp13 (vb) VALUES(12) SELECT LENGTH(vb) FROM tmp13
INSERT INTO tmp13 (vb) VALUES(1212)