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.