我有2-3个不同的列名称,我想在整个数据库中查找并列出所有具有这些列的表.任何简单的脚本?
我有这个sql:
ALTER TABLE dbo.ChannelPlayerSkins
DROP CONSTRAINT FK_ChannelPlayerSkins_Channels
Run Code Online (Sandbox Code Playgroud)
但显然,在我们使用的其他一些数据库中,约束具有不同的名称.如何检查名称是否存在约束FK_ChannelPlayerSkins_Channels
.
在PostgreSQL的information_schema中列出所有表的最佳方法是什么?
澄清:我正在使用一个空数据库(我没有添加任何自己的表),但我希望看到information_schema结构中的每个表.
Postgres 8.4及更高版本的数据库包含public
模式中的模式和公司特定表中的公用表company
.
company
模式名称始终'company'
以公司编号开头并以公司编号结束.
所以可能有以下模式:
public
company1
company2
company3
...
companynn
Run Code Online (Sandbox Code Playgroud)
应用程序始终适用于单个公司.
的search_path
相应指定在ODBC或连接Npgsql的字符串,如:
search_path='company3,public'
Run Code Online (Sandbox Code Playgroud)
如何检查给定表是否存在于指定的companyn
模式中?
例如:
select isSpecific('company3','tablenotincompany3schema')
Run Code Online (Sandbox Code Playgroud)
应该返回false
,并
select isSpecific('company3','tableincompany3schema')
Run Code Online (Sandbox Code Playgroud)
应该回来true
.
在任何情况下,该函数应仅检查companyn
传递的模式,而不检查其他模式.
如果两者public
和传递的模式中都存在给定的表,则该函数应该返回true
.
它适用于Postgres 8.4或更高版本.
我正在尝试测试是否存在给定的默认约束.我不想使用sysobjects表,但更标准的INFORMATION_SCHEMA.
我之前用它来检查表和主键约束,但我没有看到任何地方的默认约束.
他们不在吗?(我正在使用MS SQL Server 2000).
编辑:我希望得到约束的名称.
在PostgreSQL中有一个简单的替代方法来生成Oracle中的这个语句吗?
select table_name from user_tab_columns
where table_name = myTable and column_name = myColumn;
Run Code Online (Sandbox Code Playgroud)
然后我测试查询是否返回任何内容以证明列存在.
我知道使用psql我可以单独找到这些,但这是在我编写的程序中生成结果以验证我的数据库表中存在请求的属性字段所必需的.
我正在寻找最便携的方法来检查MS SQL Server中是否存在触发器.它至少需要处理SQL Server 2000,2005,最好是2008年.
信息似乎不在INFORMATION_SCHEMA中,但如果它在某处,我宁愿从那里使用它.
我知道这个方法:
if exists (
select * from dbo.sysobjects
where name = 'MyTrigger'
and OBJECTPROPERTY(id, 'IsTrigger') = 1
)
begin
end
Run Code Online (Sandbox Code Playgroud)
但我不确定它是否适用于所有SQL Server版本.
我需要在SQLite数据库中获取列名及其表.我需要的是一个包含2列的结果集:table_name | column_name
.
在MySQL中,我能够通过数据库上的SQL查询获取此信息INFORMATION_SCHEMA
.但是SQLite提供了表sqlite_master
:
sqlite> create table students (id INTEGER, name TEXT);
sqlite> select * from sqlite_master;
table|students|students|2|CREATE TABLE students (id INTEGER, name TEXT)
Run Code Online (Sandbox Code Playgroud)
这导致DDL构造查询(CREATE TABLE
)对我没有帮助,我需要解析它以获取相关信息.
我需要获取表的列表并将它们与列连接,或者只获取列和表名列.所以PRAGMA table_info(TABLENAME)
不适合我,因为我没有表名.我想获取数据库中的所有列元数据.
有没有更好的方法通过查询数据库来获取结果集的信息?
在SQL Server中,如何从外键获取引用的表+列名?
注意:不是键所在的表/列,而是键所引用的键.
例:
当[FA_MDT_ID]
表中的键[T_ALV_Ref_FilterDisplay]
.是指[T_AP_Ref_Customer].[MDT_ID]
例如在创建这样的约束时:
ALTER TABLE [dbo].[T_ALV_Ref_FilterDisplay] WITH CHECK ADD CONSTRAINT [FK_T_ALV_Ref_FilterDisplay_T_AP_Ref_Customer] FOREIGN KEY([FA_MDT_ID])
REFERENCES [dbo].[T_AP_Ref_Customer] ([MDT_ID])
GO
Run Code Online (Sandbox Code Playgroud)
[T_AP_Ref_Customer].[MDT_ID]
当[T_ALV_Ref_FilterAnzeige].[FA_MDT_ID]
作为输入给出时我需要得到
我为每个表分配了一个可计算可空列的赋值.简单:
SELECT table_name, count(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE is_nullable='NO'
GROUP BY table_name;
Run Code Online (Sandbox Code Playgroud)
现在我必须修改它来计算"具有属性"NOT NULL""的列.以下代码是否会执行此操作或仅检查天气列名称是否为空?
CREATE TEMP TABLE A AS
SELECT DISTINCT column_name, table_name AS name FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name IS NOT NULL
GROUP BY table_name, column_name;
SELECT name, count(*) FROM A
GROUP BY name;
Run Code Online (Sandbox Code Playgroud)
如果没有......有什么建议吗?
sql ×5
postgresql ×4
sql-server ×4
database ×1
foreign-keys ×1
mysql ×1
search-path ×1
sqlite ×1
t-sql ×1
triggers ×1