SQL සේවාදායකයේ නිශ්චිත දත්ත ගබඩාවක ඇති සියලුම වගු වල නම් ලබා ගැනීමට ඇති හොඳම ක්රමය කුමක්ද?
SHOW TABLES
(MySQL භාවිත කර ඇති පරිදි,) වැඩ?
SQL සේවාදායකයේ නිශ්චිත දත්ත ගබඩාවක ඇති සියලුම වගු වල නම් ලබා ගැනීමට ඇති හොඳම ක්රමය කුමක්ද?
SHOW TABLES
(MySQL භාවිත කර ඇති පරිදි,) වැඩ?
Answers:
SQL සේවාදායකය 2000, 2005, 2008, 2012, 2014, 2016, 2017 හෝ 2019:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
විශේෂිත දත්ත සමුදායකින් වගු පමණක් පෙන්වීමට
SELECT TABLE_NAME
FROM <DATABASE_NAME>.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
හෝ,
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND TABLE_CATALOG='dbName' --(for MySql, use: TABLE_SCHEMA='dbName' )
PS: SQL Server 2000 සඳහා:
SELECT * FROM sysobjects WHERE xtype='U'
WHERE TABLE_TYPE='BASE TABLE'
සඳහා මූලික වගු පමණක් ඇතුළත් වේ (සහ දිගුව මඟින් ඔබට සැමවිටම භාවිතා කළ හැකිය WHERE TABLE_TYPE != 'VIEW'
).
AND name <> 'sysdiagrams'
.
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
ඔබට සෙවිය හැකි වෙනත් වස්තු වර්ග ලැයිස්තුවක් මෙන්න:
SELECT name FROM sysobjects WHERE xtype = 'U'
එකම දේ කරයි.
'U'
පරිශීලක වගුව හඳුනා ගැනීමට භාවිතා කරන්නේ මන්දැයි එක් පුදුමයක් ... සමහර විට 'UT'
හෝ වඩාත්ම බුද්ධිමත් ලෙස නොව 'T'
... ආහ්, මෙය ක්රියාත්මක වේ!
SELECT * FROM INFORMATION_SCHEMA.TABLES
හෝ
SELECT * FROM Sys.Tables
USE YourDBName
GO
SELECT *
FROM sys.Tables
GO
හෝ
USE YourDBName
GO
SELECT * FROM INFORMATION_SCHEMA.TABLES
GO
SELECT * FROM information_schema.tables
where TABLE_TYPE = 'BASE TABLE'
SQL සේවාදායකය 2012
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'
SELECT name FROM sysobjects WHERE xtype='U' AND name <> 'sysdiagrams';
මයික්රොසොෆ්ට් එස්.කේ.එල් සර්වර් මැනේජ්මන්ට් ස්ටුඩියෝ විසින් නිර්මාණය කරන ලද සිස්ඩියෝග්රෑම් වගුව තාක්ෂණිකව පද්ධති වගුවක් නොව සාමාන්යයෙන් අපි කෙසේ හෝ බැහැර කිරීමට කැමතියි.
අවාසිය INFORMATION_SCHEMA.TABLES
නම් , ඔබේ වගු හැරුණු කොට ඒවා කීමට ක්රමයක් නොමැති පද්ධති වගු dtproperties
සහ වගු ද එයට ඇතුළත් ය MSpeer_...
.
පද්ධති වගු බැහැර කිරීම සඳහා සහාය sys.objects
වන (අතහැර දැමූ සයිසොබෙක්ට්ස් දර්ශනයේ නව අනුවාදය) භාවිතා කිරීම මම නිර්දේශ කරමි :
select *
from sys.objects
where type = 'U' -- User tables
and is_ms_shipped = 0 -- Exclude system tables
එස්එස්එම්එස් හි, සම්පූර්ණ සුදුසුකම් ලත් වගු නම් විශේෂිත දත්ත ගබඩාවක ලබා ගැනීම සඳහා (උදා: "MyDatabase"):
SELECT [TABLE_CATALOG] + '.' + [TABLE_SCHEMA] + '.' + [TABLE_NAME]
FROM MyDatabase.INFORMATION_SCHEMA.Tables
WHERE [TABLE_TYPE] = 'BASE TABLE' and [TABLE_NAME] <> 'sysdiagrams'
ORDER BY [TABLE_SCHEMA], [TABLE_NAME]
ප්රතිපල:
--for oracle
select tablespace_name, table_name from all_tables;
මෙම සබැඳියට මෙම මාතෘකාව පිළිබඳ තවත් බොහෝ තොරතුරු සැපයිය හැකිය
දත්ත ගබඩාවක සියලුම පරිශීලක වගු ලබා දෙන රේ වේගාට ස්තූතියි ...
exec sp_msforeachtable 'print' '?' ''
sp_helptext යටින් පවතින විමසුම පෙන්වයි, එය සාරාංශ කරයි ...
select * from dbo.sysobjects o
join sys.all_objects syso on o.id = syso.object_id
where OBJECTPROPERTY(o.id, 'IsUserTable') = 1
and o.category & 2 = 0
සියලුම දත්ත සමුදා වස්තු ලබා ගැනීමට ඔබට sys.objects භාවිතා කළ හැකිය .
GO
select * from sys.objects where type_desc='USER_TABLE' order by name
GO
හෝ
-- For all tables
select * from INFORMATION_SCHEMA.TABLES
GO
--- For user defined tables
select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='BASE TABLE'
GO
--- For Views
select * from INFORMATION_SCHEMA.TABLES where TABLE_TYPE='VIEW'
GO
භාවිතා කිරීමෙන් SELECT * FROM INFORMATION_SCHEMA.COLUMNS
ඔබට සියලු වගු සහ අදාළ තීරු පෙන්වයි.