TSQL භාවිතා කරමින් දත්ත සමුදායක ඇති සියලුම වගු ලැයිස්තුවක් ලබා ගන්නේ කෙසේද?


909

SQL සේවාදායකයේ නිශ්චිත දත්ත ගබඩාවක ඇති සියලුම වගු වල නම් ලබා ගැනීමට ඇති හොඳම ක්‍රමය කුමක්ද?




3
වන්නේද, SHOW TABLES(MySQL භාවිත කර ඇති පරිදි,) වැඩ?
— මාටින් තෝමා

Answers:


1456

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' 

46
වගු පමණක් නොව VIEWS ද මෙයට ඇතුළත් වන බව කරුණාවෙන් සලකන්න
— නේතන් කූප්

17
ඔබ නිශ්චිත දත්ත සමුදාය භාවිතා නොකරන්නේ නම් දත්ත සමුදායේ නම එක් කරන්න, එවිට එය <DATABASE_NAME> වෙතින් TABLE_NAME තෝරන්න .INFORMATION_SCHEMA.Tables
— ශ්‍රීරූප්

22
එකතු කිරීම WHERE TABLE_TYPE='BASE TABLE'සඳහා මූලික වගු පමණක් ඇතුළත් වේ (සහ දිගුව මඟින් ඔබට සැමවිටම භාවිතා කළ හැකිය WHERE TABLE_TYPE != 'VIEW').
— පිලිප් කෝප්ලි

3
"sysdiagrams" මෙම ලැයිස්තුවේ ද දැක්වේ :(
— celsowm

4
sysdiagrams යනු සාමාන්‍ය වගුවකි, ඔබ සැමවිටම එය අතින් අතින් බැහැර කළ යුතුය AND name <> 'sysdiagrams'.
— ක්‍රිස්ටෝෆ්

199
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'

ඔබට සෙවිය හැකි වෙනත් වස්තු වර්ග ලැයිස්තුවක් මෙන්න:

  • AF: සමස්ථ ශ්‍රිතය (CLR)
  • ඇ: අවහිරතා පරීක්ෂා කරන්න
  • D: පෙරනිමි හෝ DEFAULT අවහිරතා
  • F: විදේශීය කේ අවහිරතා
  • එල්: ලොග්
  • FN: පරිමාණ ශ්‍රිතය
  • FS: එකලස් කිරීමේ (CLR) පරිමාණ ශ්‍රිතය
  • FT: එකලස් කිරීමේ (CLR) වගු අගය සහිත ශ්‍රිතය
  • IF: පේළි-ශ්‍රිතය
  • තොරතුරු තාක්ෂණය: අභ්‍යන්තර වගුව
  • පි: ගබඩා කළ පටිපාටිය
  • පළාත් සභාව: එකලස් කිරීමේ (සීඑල්ආර්) ගබඩා කළ පටිපාටිය
  • PK: ප්‍රාථමික කේ අවහිරතා (වර්ගය K වේ)
  • RF: අනුරූකරණ පෙරහන ගබඩා කළ පටිපාටිය
  • එස්: පද්ධති වගුව
  • එස්එන්: සමකාලීනය
  • SQ: සේවා පෝලිම්
  • TA: එකලස් කිරීමේ (CLR) DML ප්‍රේරකය
  • TF: වගු ක්‍රියාකාරිත්වය
  • TR: SQL DML ප්‍රේරකය
  • TT: වගු වර්ගය
  • යූ: පරිශීලක වගුව
  • UQ: UNIQUE අවහිරතා (වර්ගය K වේ)
  • V: බලන්න
  • X: දීර් storage ගබඩා කළ පටිපාටිය

9
අන්වර්ථකරණය ටිකක් අතිරික්තයි: SELECT name FROM sysobjects WHERE xtype = 'U'එකම දේ කරයි.
— පී.ජේ.එස්.කොප්ලන්ඩ්

ස්තූතියි, මුලදී මම මෙය PK,FK,D,C,V,UQමූලාශ්‍ර සහ ඉලක්ක දත්ත ගබඩාව සංසන්දනය කිරීම සඳහා තෝරාගත් බහුවිධ ප්‍රකාශයන් සමඟ උත්සාහ කළෙමි, නමුත් පසුව මම මෙම අංගය VS හි සොයාගත්තෙමි , නමුත් sql queryසම්පූර්ණ ප්‍රභවය සහ ඉලක්ක දත්ත සමුදාය සංසන්දනය කිරීමට එය නැද්ද?
— shaijut

'U'පරිශීලක වගුව හඳුනා ගැනීමට භාවිතා කරන්නේ මන්දැයි එක් පුදුමයක් ... සමහර විට 'UT'හෝ වඩාත්ම බුද්ධිමත් ලෙස නොව 'T'... ආහ්, මෙය ක්‍රියාත්මක වේ!
— user919426

90
SELECT * FROM INFORMATION_SCHEMA.TABLES 

හෝ

SELECT * FROM Sys.Tables

5
(වෙනත් පිළිතුරු වල සඳහන් පරිදි) sys.tables ලබා ගත හැක්කේ 2005 සිට පමණි
— රොබ්

4
එය 2018 දී ගැටළුවක් නොවේ. මම හිතන්නේ මෙය මීට වඩා වැඩි විය යුතුයි :-)
— මයිකල් බී.




9
SELECT name 
FROM sysobjects 
WHERE xtype='U' 
ORDER BY name;

(SQL Server 2000 ප්‍රමිතිය; තවමත් SQL Server 2005 හි සහය දක්වයි.)



6
SELECT sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U' 

SELECT name FROM sysobjects WHERE xtype='U' AND name <> 'sysdiagrams'; මයික්‍රොසොෆ්ට් එස්.කේ.එල් සර්වර් මැනේජ්මන්ට් ස්ටුඩියෝ විසින් නිර්මාණය කරන ලද සිස්ඩියෝග්‍රෑම් වගුව තාක්‍ෂණිකව පද්ධති වගුවක් නොව සාමාන්‍යයෙන් අපි කෙසේ හෝ බැහැර කිරීමට කැමතියි.
— ක්‍රිස්ටෝෆ්

5

අවාසිය INFORMATION_SCHEMA.TABLESනම් , ඔබේ වගු හැරුණු කොට ඒවා කීමට ක්‍රමයක් නොමැති පද්ධති වගු dtpropertiesසහ වගු ද එයට ඇතුළත් ය MSpeer_....

පද්ධති වගු බැහැර කිරීම සඳහා සහාය sys.objectsවන (අතහැර දැමූ සයිසොබෙක්ට්ස් දර්ශනයේ නව අනුවාදය) භාවිතා කිරීම මම නිර්දේශ කරමි :

select *
from sys.objects
where type = 'U'      -- User tables
and is_ms_shipped = 0 -- Exclude system tables

2

එස්එස්එම්එස් හි, සම්පූර්ණ සුදුසුකම් ලත් වගු නම් විශේෂිත දත්ත ගබඩාවක ලබා ගැනීම සඳහා (උදා: "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]

ප්රතිපල:

  • MyDatabase.dbo.MyTable1
  • MyDatabase.dbo.MyTable2
  • MyDatabase.MySchema.MyTable3
  • MyDatabase.MySchema.MyTable4
  • ආදිය.

2

කරුණාකර මෙය භාවිතා කරන්න. යෝජනා ක්‍රම නාම සමඟ ඔබට වගු නම් ලැබෙනු ඇත:

SELECT SYSSCHEMA.NAME, SYSTABLE.NAME
FROM SYS.tables SYSTABLE
INNER JOIN SYS.SCHEMAS SYSSCHEMA
ON SYSTABLE.SCHEMA_ID = SYSSCHEMA.SCHEMA_ID

1
--for oracle
select tablespace_name, table_name from all_tables;

මෙම සබැඳියට මෙම මාතෘකාව පිළිබඳ තවත් බොහෝ තොරතුරු සැපයිය හැකිය


2
මෙය SQL සේවාදායකය සඳහා නොවේ, එබැවින් මෙම ප්‍රශ්නයට පිළිතුරක් නොවේ.
— ඩෑන් ගෙට්ස්


1

දත්ත ගබඩාවක සියලුම පරිශීලක වගු ලබා දෙන රේ වේගාට ස්තූතියි ...

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 

1

සියලුම දත්ත සමුදා වස්තු ලබා ගැනීමට ඔබට 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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.