首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中获取数据类型ID

在MySQL中获取数据类型ID
EN

Database Administration用户
提问于 2015-05-08 15:41:17
回答 1查看 2.2K关注 0票数 2

因此,在SQL中,我们有以下查询来查找Server中列的系统数据类型ID;

代码语言:javascript
复制
select name, system_type_id from sys.columns where object_id = OBJECT_ID(N'sometable')

给出了如下输出;

代码语言:javascript
复制
name       system_type_id
rowid        56
Client       167
IsCurrent    104

system_type_id表示该列的数据类型的int值。

然而,当我试图在MySQL中转换(找到一个等价的)时,我找不到列的数据类型的ID。下面是我到目前为止找到的查询;

代码语言:javascript
复制
SELECT column_name,data_type FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'someSchema' AND TABLE_NAME = 'someTable';

它提供了以下输出。

代码语言:javascript
复制
# column_name,   data_type
    'rowid',      'int'
     'Client',    'varchar'
     'IsCurrent', 'tinyint'

有什么建议可以让我在MySQL中实现早期的输出吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2015-05-08 16:02:45

我大约在4年前讨论过信息是怎样的_用MySQL实现的模式?

SQL和PostgreSQL具有对象类型的ObjectID枚举(ObjectID)。MySQL使INFORMATION_SCHEMA数据库成为表、列和索引元数据的更简化的表示形式。元数据表是没有索引的临时内存表。

去年,在添加新表--内存使用量增加中,我讨论了当您增加表的数量时,INFORMATION_SCHEMA会对内存做什么。

相信我,将数据类型的oid添加到MySQL INFORMATION_SCHEMA中只会使INFORMATION_SCHEMA变得臃肿。在这个特殊的例子中,我非常感谢MySQL没有公开oid值。

如果您真的想了解mysql如何表示幕后的数据类型,我建议您参考“了解MySQL内部结构”(ISBN 0-596-00957-7)第48-53页

这些页面在源代码中引用了sql/table.hsql/field.h。您可以下载源代码并查看它。然后,为你自己判断如何和为什么不包括。

建议

创造你自己的。例如,要为列创建do,请执行以下操作

代码语言:javascript
复制
DROP DATABASE IF EXISTS my_metadata;
CREATE DATABASE my_metadata;
USE metadata
CREATE TABLE objects ENGINE=MEMORY
SELECT data_type FROM information_schema.columns WHERE 1=2;
ALTER TABLE objects ADD COLUMN oid INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
ALTER TABLE objects ADD UNIQUE INDEX (data_type);
INSERT INTO objects (data_type)
SELECT DISTINCT data_type FROM information_schema.columns;
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/100986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档