在本文中,我们将给您介绍关于php–我可以让mysql对它收到的数据类型不那么严格吗?的详细内容,并且为您解答php操作mysql数据库的扩展有的相关问题,此外,我们还将为您提供关于Java数据类型与
在本文中,我们将给您介绍关于php – 我可以让mysql对它收到的数据类型不那么严格吗?的详细内容,并且为您解答php操作mysql数据库的扩展有的相关问题,此外,我们还将为您提供关于Java数据类型与MySql数据类型对照表_MySQL、Microsoft Access 数据类型 \MySQL 数据类型 \SQL Server 数据类型、MyBatis与MySQL对应数据类型、mysql 各数据类型(取值范围)在Java中的数据类型的知识。
本文目录一览:- php – 我可以让mysql对它收到的数据类型不那么严格吗?(php操作mysql数据库的扩展有)
- Java数据类型与MySql数据类型对照表_MySQL
- Microsoft Access 数据类型 \MySQL 数据类型 \SQL Server 数据类型
- MyBatis与MySQL对应数据类型
- mysql 各数据类型(取值范围)在Java中的数据类型
php – 我可以让mysql对它收到的数据类型不那么严格吗?(php操作mysql数据库的扩展有)
我有一个用户看起来像这样的对象.
$user = new User();
$user->name = 'Name';
$user->age = 34;
在我的数据库中有五个字段,
id, name, age, location, reputation
我有一个方法(对于我的所有表)使用以下sql从表中动态收集所有字段.这样我就可以动态地获取要放在INSERT语句中的占位符数.
SHOW FIELDS FROM users
SHOW FIELDS FROM questions
SHOW FIELDS FROM topics
然后我编写了一个create方法,它计算表中字段的数量,并准备一个充满占位符的字符串,并自动将其插入到我的PDO查询中,使得:
INSERT INTO users VALUES (?, ?, ?, ?, ?)
然后我接受我的$user对象并从它拥有的所有属性中创建一个数组,并将该数组提供给execute参数中的PDO预处理语句.这工作正常,该函数将数据插入数据库.
我的问题是,有时我还没有填充我的对象的所有属性,因此我填充了用空字符串提供执行函数的数组的其余部分.当它到达一个取整数的字段时,它会导致致命错误并且不起作用.如果不为代码中的每个字段编写正确的数据类型,我能够动态地将空字段插入到我的数据库中,该怎么办?因为这一切都是动态完成的,所以我不能提前知道在那里放一个整数或一个空字符串.有没有办法完全省略一些占位符?还有其他方法吗?
解决方法:
将可选的MysqL字段设置为接受NULL.
Java数据类型与MySql数据类型对照表_MySQL
本文讲述了java数据类型与
对于bolb,一般用于对图片的数据库存储,原理是把图片打成二进制,然后进行的一种存储方式,在java中对应byte[]数组。
对于boolen类型,在mysql数据库中,个人认为用int类型代替较好,对bit操作不是很方便,尤其是在具有web页面开发的项目中,表示0/1,对应java类型的Integer较好。
更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》
希望本文所述对大家MySQL数据库计有所帮助。
立即学习“Java免费学习笔记(深入)”;
Microsoft Access 数据类型 \MySQL 数据类型 \SQL Server 数据类型
一:Microsoft Access 数据类型Text 用于文本或文本与数字的组合。最多 255 个字符。
Memo Memo 用于更大数量的文本。最多存储 65,536 个字符。
Byte 允许 0 到 255 的数字。 1 字节
Integer 允许介于 -32,768 到 32,767 之间的数字。 2 字节
Long 允许介于 -2,147,483,648 与 2,147,483,647 之间的全部数字 4 字节
Single 单精度浮点。处理大多数小数。 4 字节
Double 双精度浮点。处理大多数小数。 8 字节
Currency 用于货币。支持 15 位的元,外加 4 位小数。 8 字节
AutoNumber AutoNumber 字段自动为每条记录分配数字,通常从 1 开始。 4 字节
Date/Time 用于日期和时间 8 字节
Yes/No 逻辑字段,可以显示为 Yes/No、True/False 或 On/Off。 1 比特
Ole Object 可以存储图片、音频、视频或其他 BLOBs (Binary Large OBjects) 最多 1GB
Hyperlink 包含指向其他文件的链接,包括网页。
Lookup Wizard 允许你创建一个可从下列列表中进行选择的选项列表。 4 字节
二:MySQL 数据类型
1: Text 类型:
CHAR (size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR (size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。
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 个值。如果列表中不存在插入的值,则插入空值。
SET 与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。
2: 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 类型,允许固定的小数点。
3: Date 类型:
DATE () 日期。格式:YYYY-MM-DD 注释:支持的范围是从 ''1000-01-01'' 到 ''9999-12-31''
DATETIME () * 日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ''1000-01-01 00:00:00'' 到 ''9999-12-31 23:59:59''
TIMESTAMP () * 时间戳。TIMESTAMP 值使用 Unix 纪元 (''1970-01-01 00:00:00'' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ''1970-01-01 00:00:01'' UTC 到 ''2038-01-09 03:14:07'' UTC
TIME () 时间。格式:HH:MM:SS 注释:支持的范围是从 ''-838:59:59'' 到 ''838:59:59''
YEAR () 2 位或 4 位格式的年。 注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。
三:SQL Server 数据类型
1: Character 字符串:
char (n) 固定长度的字符串。最多 8,000 个字符。
varchar (n) 可变长度的字符串。最多 8,000 个字符。
varchar (max) 可变长度的字符串。最多 1,073,741,824 个字符。
text 可变长度的字符串。最多 2GB 字符数据。
2: Unicode 字符串:
nchar (n) 固定长度的 Unicode 数据。最多 4,000 个字符。
nvarchar (n) 可变长度的 Unicode 数据。最多 4,000 个字符。
nvarchar (max) 可变长度的 Unicode 数据。最多 536,870,912 个字符。
ntext 可变长度的 Unicode 数据。最多 2GB 字符数据。
3: Binary 类型:
bit 允许 0、1 或 NULL
binary (n) 固定长度的二进制数据。最多 8,000 字节。
varbinary (n) 可变长度的二进制数据。最多 8,000 字节。
varbinary (max) 可变长度的二进制数据。最多 2GB 字节。
image 可变长度的二进制数据。最多 2GB。
4: Number 类型:
tinyint 1 字节 允许从 0 到 255 的所有数字。
smallint 2 字节 允许从 -32,768 到 32,767 的所有数字。
int 4 字节 允许从 -2,147,483,648 到 2,147,483,647 的所有数字。
bigint 8 字节 允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 8 字节
decimal (p,s) 5-17 字节 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
numeric (p,s) 5-17 字节 固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
smallmoney 4 字节 介于 -214,748.3648 和 214,748.3647 之间的货币数据。
money 8 字节 介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。
float (n) 4 或 8 字节 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。参数 n 指示该字段保存 4 字节还是 8 字节。float (24) 保存 4 字节,而 float (53) 保存 8 字节。n 的默认值是 53。
real 4 字节 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。
5: Date 类型:
datetime 8 字节 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。
datetime2 6-8 字节 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。
smalldatetime 4 字节 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。
date 3 字节。 从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。
time 3-5 字节 仅存储时间。精度为 100 纳秒。
datetimeoffset 8-10 字节 datetime2 相同,外加时区偏移。
timestamp 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。
MyBatis与MySQL对应数据类型
1、常用数据类型映射表:
2、日期时间和大对象映射表。
mysql 各数据类型(取值范围)在Java中的数据类型
PS:
UNSIGNED 代表是无符号,
例如 INT 或 INTEGER : -2147483648 - 2147483647 ,
那么INT UNSIGNED 或 INTEGER UNSIGNED :0 - 4294967295 ,也就是只有正的,无负的存在。
以下为各个数据类型的取值范围:
TINYINT
-128 - 127
TINYINT UNSIGNED
0 - 255
SMALLINT
-32768 - 32767
SMALLINT UNSIGNED
0 - 65535
MEDIUMINT
-8388608 - 8388607
MEDIUMINT UNSIGNED
0 - 16777215
INT 或 INTEGER
-2147483648 - 2147483647
INT UNSIGNED 或 INTEGER UNSIGNED
0 - 4294967295
BIGINT
-9223372036854775808 - 9223372036854775807
BIGINT UNSIGNED
0 - 18446744073709551615
FLOAT
-3.402823466E+38 - -1.175494351E-38,0,1.175494351E-38 - 3.402823466E+38
DOUBLE 或 DOUBLE PRECISION 或 REAL
-1.7976931348623157E+308 - -2.2250738585072014E-308,0,2.2250738585072014E-308 - 1.7976931348623157E+308
DECIMAL[(M,[D])] 或 NUMERIC(M,D)
由M(整个数字的长度,包括小数点,小数点左边的位数,小数点右边的位数,但不包括负号)和D(小数点右边的位数)来决定,M缺省为10,D缺省为0
DATE
1000-01-01 - 9999-12-31
DATETIME
1000-01-01 00:00:00 - 9999-12-31 23:59:59
TIMESTAMP
1970-01-01 00:00:00 - 2037年的某天(具体是哪天我也不知道)
TIME
-838:59:59'' to 838:59:59
YEAR[(2|4)]
缺省为4位格式,4位格式取值范围为1901 - 2155,0000,2位格式取值范围为70-69(1970-2069)
CHAR(M) [BINARY] 或 NCHAR(M) [BINARY]
M的范围为1 - 255,如果没有BINARY项,则不分大小写,NCHAR表示使用缺省的字符集.在数据库中以空格补足,但在取出来时末尾的空格将自动去掉.
[NATIONAL] VARCHAR(M) [BINARY]
M的范围为1 - 255.在数据库中末尾的空格将自动去掉.
TINYBLOB 或 TINYTEXT
255(2^8-1)个字符
BLOB 或 TEXT
65535(2^16-1)个字符
MEDIUMBLOB 或 MEDIUMTEXT
16777215 (2^24-1)个字符
LONGBLOB 或 LONGTEXT
4294967295 (2^32-1)个字符
ENUM(''value1'',''value2'',...)
可以总共有65535个不同的值
SET(''value1'',''value2'',...)
最多有64个成员
数据库字段的各个类型对应JAVA里的类型:
类型名称 | 显示长度 | 数据库类型 | JAVA类型 | JDBC类型索引(int) | 描述 |
VARCHAR | L+N | VARCHAR | java.lang.String | 12 | |
CHAR | N | CHAR | java.lang.String | 1 | |
BLOB | L+N | BLOB | java.lang.byte[] | -4 | |
TEXT | 65535 | VARCHAR | java.lang.String | -1 | |
INTEGER | 4 | INTEGER UNSIGNED | java.lang.Long | 4 | |
TINYINT | 3 | TINYINT UNSIGNED | java.lang.Integer | -6 | |
SMALLINT | 5 | SMALLINT UNSIGNED | java.lang.Integer | 5 | |
MEDIUMINT | 8 | MEDIUMINT UNSIGNED | java.lang.Integer | 4 | |
BIT | 1 | BIT | java.lang.Boolean | -7 | |
BIGINT | 20 | BIGINT UNSIGNED | java.math.BigInteger | -5 | |
FLOAT | 4+8 | FLOAT | java.lang.Float | 7 | |
DOUBLE | 22 | DOUBLE | java.lang.Double | 8 | |
DECIMAL | 11 | DECIMAL | java.math.BigDecimal | 3 | |
BOOLEAN | 1 | 同TINYINT | |||
ID | 11 | PK (INTEGER UNSIGNED) | java.lang.Long | 4 | |
DATE | 10 | DATE | java.sql.Date | 91 | |
TIME | 8 | TIME | java.sql.Time | 92 | |
DATETIME | 19 | DATETIME | java.sql.Timestamp | 93 | |
TIMESTAMP | 19 | TIMESTAMP | java.sql.Timestamp | 93 | |
YEAR | 4 | YEAR | java.sql.Date | 91 |
关于php – 我可以让mysql对它收到的数据类型不那么严格吗?和php操作mysql数据库的扩展有的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Java数据类型与MySql数据类型对照表_MySQL、Microsoft Access 数据类型 \MySQL 数据类型 \SQL Server 数据类型、MyBatis与MySQL对应数据类型、mysql 各数据类型(取值范围)在Java中的数据类型等相关知识的信息别忘了在本站进行查找喔。
本文标签: