标签: information-schema

SQL - 在服务器上的所有数据库的INFORMATION_SCHEMA

INFORMATION_SCHEMA.TABLES或INFORMATION_SCHEMA.COLUMNS仅适用于指定的数据库.

是否可以使用INFORMATION_SCHEMA查询服务器上所有数据库的表元数据?

sql sql-server information-schema

5
推荐指数
2
解决办法
9478
查看次数

使用information_schema在ms sql server中查找外键

我正在尝试查找所有具有指向特定表的外键的表.所以我写了这个:

select t1.TABLE_NAME as pointsfrom, t2.TABLE_NAME as pointsto
        from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS r
        join INFORMATION_SCHEMA.TABLE_CONSTRAINTS t1 on t1.CONSTRAINT_NAME=r.CONSTRAINT_NAME
        join INFORMATION_SCHEMA.TABLE_CONSTRAINTS t2 on t2.CONSTRAINT_NAME=r.UNIQUE_CONSTRAINT_NAME
        where t2.table_name = @mytable
Run Code Online (Sandbox Code Playgroud)

对于我正在处理的数据库中的24个外键中的22个,这种工作有90%的时间,或者确切地说.但对于2个FK,unique_constraint_name与table_constraints中的任何名称都不匹配.

名字也有点搞笑.其中一个是"环境指示符",有一个空间.FK指向的字段名为"environment_designator",带有下划线.另一个具有unique_constraint_name"filename is unique",它与我在"from"或"to"表的定义中看到的任何内容都不对应.

是否还有其他地方我应该在unique_constraint_name上寻找匹配?

sql-server foreign-keys information-schema sql-server-2008

5
推荐指数
1
解决办法
5047
查看次数

如何轻松找到IDENTITY列有溢出的危险?

我的数据库已经老了,我最大的一个INT IDENTITY列的价值大约是13亿.这将溢出约21亿.我计划增加它的大小,但由于数据库中的记录数量,我不想太快这样做.我可以在增加列大小之前替换我的数据库硬件,这可能会抵消这可能导致的任何性能问题.我还想关注我的数据库中超过50%已满的所有其他列.这是很多表,并且手动检查每个表是不实际的.

这就是我现在获得价值的方式(我知道返回的值可能会略微过时,但这对我的目的来说已经足够了):

PRINT IDENT_CURRENT('MyDatabase.dbo.MyTable')
Run Code Online (Sandbox Code Playgroud)

我可以用它INFORMATION_SCHEMA来获取这些信息吗?

sql-server maintenance overflow information-schema identity-column

5
推荐指数
2
解决办法
1万
查看次数

MySQL:如何获取最后一次插入数据库的时间戳

无论我插入的数据库表如何,如何检查我最后一次在数据库中写入的时间(时间戳)是什么时候?

mysql database timestamp information-schema database-schema

5
推荐指数
2
解决办法
1万
查看次数

表示数据库模式的标准文件格式

是否有任何标准或至少非常常见的文件格式来序列化数据库的模式?似乎每个数据库模式工具都带有自己的文件格式,用于列出表、列、索引等。

这个问题早在 2009 年就被问过,但没有令人满意的答案:Standard Database Neutral XSD toDescribe a Relational Database Schema

xml postgresql entity-relationship information-schema database-schema

5
推荐指数
1
解决办法
1890
查看次数

MySql 选择具有多个特定列的所有表

我想获取所有具有 3 个特定列的表名。

我想要的是从信息模式中获取包含AND AND的所有表名columnA columnB columnC

目前我正在使用类似的查询

SELECT DISTINCT TABLE_NAME 
  FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME='columnA'
        AND TABLE_SCHEMA='mysampledatabase';
Run Code Online (Sandbox Code Playgroud)

如何扩展上述查询并选择包含列名columnA和 的 表columnB



我遇到了这个答案和其他类似的答案。他们的回答如下:

SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('columnA','ColumnB') AND TABLE_SCHEMA='YourDatabase';

然而,他们选择任何具有 3 列之一的表。我相信这是因为WHERE COLUMN_NAME IN ('columnA','ColumnB','ColumnC')我相信相当于COLUMN_NAME = 'columnA' OR COLUMN_NAME = 'columnB' OR COLUMN_NAME = 'columnC'



我尝试替换 WHERE 子句,WHERE COLUMN_NAME='columnA' AND COLUMN_NAME='columnB' AND COLUMN_NAME='columnC'它显然不会返回任何结果,因为COLUMN_NAME一次只能是 1 个值!

mysql information-schema

5
推荐指数
1
解决办法
3712
查看次数

从表中查询,这是从Information_Schema.Tables结果派生的

我不得不从一个有50多个表的数据库进行查询 - 所有表都具有相同的结构(我知道,Horrid数据库设计来自一个已经生产了5年以上的遗留项目!).为此,我查询了information_Schema下面的内容:

    SELECT 
        TABLE_NAME 
    FROM 
        INFORMATION_SCHEMA.tables 
    WHERE TABLE_SCHEMA =
        'projectdatabase'   
            AND 
        TABLE_NAME LIKE '%_usertable'
Run Code Online (Sandbox Code Playgroud)

在结果中,它为我提供了我需要的50个左右的表.现在,我需要从每个表中查询列,例如,PRODUCT_ID.在这样做的过程中,我尝试过:

    SELECT 
        projectdatabase.userTable.PRODUCT_ID
    FROM (
        SELECT 
            TABLE_NAME as userTable 
        FROM 
            INFORMATION_SCHEMA.tables 
        WHERE TABLE_SCHEMA =
            'projectdatabase'   
                AND 
            TABLE_NAME LIKE '%_usertable'
    ) AS userTables
Run Code Online (Sandbox Code Playgroud)

现在,这显然是行不通的,由于MySQL的不治疗的"用户表"数据库表-但我试图做的,就是查询* FROM {tablename}哪里tablenameinformation_schema查询结果.

我可以尝试在PHP中拆分它,虽然我急切地想知道这是否可以在MySQL内完成.

php mysql subquery information-schema

5
推荐指数
1
解决办法
745
查看次数

为什么数据库表 TABLES.table_rows 列与 MySQL 中物理表中的 select count(*) 不匹配

将 information_schema.TABLES.table_rows 列与从“SELECT count(*) from”检索到的物理行计数进行比较时,数字不匹配。为什么行数不同?

mysql> select TABLE_ROWS from TABLES where TABLE_NAME = 'gbl_session' and TABLE_SCHEMA = 'mydb';
+------------+
| TABLE_ROWS |
+------------+
|       7306 |
+------------+
1 row in set (0.01 sec)

mysql> select count(*) from mydb.gbl_session;
+----------+
| count(*) |
+----------+
|     7800 |
+----------+
1 row in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)

mysql database count information-schema

5
推荐指数
1
解决办法
3413
查看次数

每次查询都会出现 MySQL 错误 1055 information_schema.PROFILING.SEQ

我正在使用安装在 Ubuntu 14.04 上的 mysql 存储库中最近安装的 mysql。我运行的每个查询都会导致以下错误,并且我无法通过谷歌或此处找到任何讨论此问题的内容。

例如,此(显然仅用于演示目的)查询返回以下内容:


[SQL]SELECT * FROM tabcLocations

受影响的行数:0 时间:0.705s

[Err] 1055 - ORDER BY 子句的表达式 #1 不在 GROUP BY 子句中,并且包含非聚合列“information_schema.PROFILING.SEQ”,该列在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容

它返回查询的结果就好了,但是在每个查询上都会抛出一个错误,这显然会影响我的应用程序中的错误处理。有关如何解决此问题的任何建议?目前这相当令人抓狂。

mysql information-schema mysql-error-1055

5
推荐指数
1
解决办法
4978
查看次数

使用 MySQL 中的附加列过滤器从 Information Schema 获取行数

我正在尝试从 MySQL InnoDB 表中获取一些统计信息。为了获得更快的结果,我正在使用:

SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = "botonera" AND TABLE_NAME = "log";
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我还需要在这些结果中结合特定的过滤器:

WHERE log.id_cat = 1
Run Code Online (Sandbox Code Playgroud)

如何将 INFORMATION_SCHEMA 结果与相关表内的特定列过滤器相结合?谢谢。

mysql innodb count information-schema

5
推荐指数
1
解决办法
1442
查看次数