INFORMATION_SCHEMA.TABLES或INFORMATION_SCHEMA.COLUMNS仅适用于指定的数据库.
是否可以使用INFORMATION_SCHEMA查询服务器上所有数据库的表元数据?
我正在尝试查找所有具有指向特定表的外键的表.所以我写了这个:
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上寻找匹配?
我的数据库已经老了,我最大的一个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
无论我插入的数据库表如何,如何检查我最后一次在数据库中写入的时间(时间戳)是什么时候?
是否有任何标准或至少非常常见的文件格式来序列化数据库的模式?似乎每个数据库模式工具都带有自己的文件格式,用于列出表、列、索引等。
这个问题早在 2009 年就被问过,但没有令人满意的答案:Standard Database Neutral XSD toDescribe a Relational Database Schema
xml postgresql entity-relationship information-schema database-schema
我想获取所有具有 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 个值!
我不得不从一个有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}哪里tablename是information_schema查询结果.
我可以尝试在PHP中拆分它,虽然我急切地想知道这是否可以在MySQL内完成.
将 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) 我正在使用安装在 Ubuntu 14.04 上的 mysql 存储库中最近安装的 mysql。我运行的每个查询都会导致以下错误,并且我无法通过谷歌或此处找到任何讨论此问题的内容。
例如,此(显然仅用于演示目的)查询返回以下内容:
[SQL]SELECT * FROM tabcLocations
受影响的行数:0 时间:0.705s
它返回查询的结果就好了,但是在每个查询上都会抛出一个错误,这显然会影响我的应用程序中的错误处理。有关如何解决此问题的任何建议?目前这相当令人抓狂。
我正在尝试从 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 ×6
sql-server ×3
count ×2
database ×2
foreign-keys ×1
innodb ×1
maintenance ×1
overflow ×1
php ×1
postgresql ×1
sql ×1
subquery ×1
timestamp ×1
xml ×1