1
.獲取所有用戶名:
SELECT?name?FROM?Sysusers?
where
?status
=
'
2
'
?and?islogin
=
'
1
'
islogin
=
'
1
'
表示帳戶
islogin
=
'
0
'
表示角色
status
=
'
2
'
表示用戶帳戶
status
=
'
0
'
表示糸統帳戶
2
.獲取所有數據庫名:
SELECT?Name?FROM?Master..SysDatabases?ORDER?BY?Name
3
.獲取所有表名
SELECT?Name?FROM?DatabaseName..SysObjects?Where?XType
=
'
U
'
?ORDER?BY?Name
XType
=
'
U
'
:表示所有用戶表;
XType
=
'
S
'
:表示所有系統表;
4
.獲取所有字段名:
SELECT?Name?FROM?SysColumns?WHERE?id
=
Object_Id(
'
TableName
'
)
5
.獲取數據庫所有類型
select?name?from?systypes?
6
.獲取主鍵字段
SELECT??name?FROM?SysColumns?WHERE?id
=
Object_Id(
'
表名
'
)?and?colid
=
(select?top?
1
?keyno?from?sysindexkeys?
where
?id
=
Object_Id(
'
表名
'
))
[綜合網絡資料整理]
1.
獲取所有數據庫名
:
?? (1)
、
Select
Name FROM Master..SysDatabases order?by Name
2.
獲取所有表名
:
?? (1)
、
Select
Name FROM SysObjects Where XType='U' orDER BY Name
?????????? XType='U':
表示所有用戶表
;
?????????? XType='S':
表示所有系統表
;
?? (2)
、
SELECT
name FROM sysobjects WHERE type = 'U' AND sysstat = '83'
??????????
注意:一般情況只需要
type = 'U'
,但有時候會有系統表混在其中(不知道什么原因),加上后面一句后就能刪除這些系統表了
3.
獲取所有字段名
:
(1)
、
Select
Name FROM SysColumns Where id=Object_Id('TableName')
(2)
、
SELECT
syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND "syscolumns.id = object_id('tableName')
??????
注意點:
????
(
a
)這里為了重點突出某些重要內容,選取了其中幾項信息輸出。
????
(
b
)
syscolumns
表中只含有數據類型編號,要獲取完整的名字需要從
systypes
表中找,一般用戶使用的數據類型用
xusertype
對應比較好,不會出現一對多的情況。
????
(
c
)
syscolumns.length
得到的是物理內存的長度,所以
nvarchar
和
varchar
等類型在數據庫中的顯示是這個的一半。
4
、得到表中主鍵所包含的列名
:
???
SELECT
syscolumns.name FROM syscolumns,sysobjects,sysindexes,sysindexkeys WHERE syscolumns.id = object_id('tablename') AND sysobjects.xtype = 'PK' AND sysobjects.parent_obj = syscolumns.id AND sysindexes.id = syscolumns.id AND sysobjects.name = sysindexes.name AND sysindexkeys.id = syscolumns.id AND sysindexkeys.indid = sysindexes.indid AND syscolumns.colid = sysindexkeys.colid
注意:這是在
4
張系統表中尋找的,關系比較復雜,大致可以表示為:
syscolumns
中存有表中的列信息和表
id
,
sysobjects
表中存有主鍵名字(即
PK_Table
類似)和表
id
,
sysindexes
中存 有主鍵名字和表
id
和
index
編號,
sysindexkeys
中存有表
id
和
index
編號和列編號,一項一項對應起來后就能找到列名了。
另外的
SQL
代碼
select
syscolumns
.
name
,
systypes
.
name
,
syscolumns
.
length
from
syscolumns
???
?
left
join
systypes
on
syscolumns
.
xusertype
=
systypes
.
xusertype
?
?
where
id
=(
select
id
from
sysobjects
where
name
=
'
訂貨主檔
'
);
go;
或者用這樣的寫法,執行結果一樣:
select
syscolumns
.
name
,
systypes
.
name
,
syscolumns
.
length
from
syscolumns
,
systypes
where
(
syscolumns
.
id
=
object_id
(
'
訂貨主檔
'
)
and
syscolumns
.
xusertype
=
systypes
.
xusertype
)
order
by
syscolumns
.
colorder;
go
執行結果:(字段只出現一次,正常)
訂單號碼
???
int
4
客戶編號
???
nvarchar
???
10
員工編號
???
int
4
訂單日期
???
datetime
???
8
要貨日期
???
datetime
???
8
送貨日期
???
datetime
???
8
送貨方式
???
int
4
運費
???
money
??
8
收貨人
?
nvarchar
???
80
送貨地址
???
nvarchar
???
120
送貨城市
???
nvarchar
???
30
送貨行政區
?
nvarchar
???
30
送貨郵政編碼
???
nvarchar
???
20
送貨國家地區
???
nvarchar
???
30
select
syscolumns
.
name
,
systypes
.
name
,
syscolumns
.
length
from
syscolumns
???
?
left
join
systypes
on
syscolumns
.
xtype
=
systypes
.
xtype
?
?
where
id
=(
select
id
from
sysobjects
where
name
=
'
訂貨主檔
'
);
go;
執行結果:(部分字段出現兩次,數據類型不同)
訂單號碼
???
int
4
客戶編號
???
nvarchar
??
10
客戶編號
???
sysname
???
10
員工編號
???
int
4
訂單日期
???
datetime
??
8
訂單日期
???
出生日期類型
???
8
要貨日期
???
datetime
??
8
要貨日期
???
出生日期類型
???
8
送貨日期
???
datetime
??
8
送貨日期
???
出生日期類型
???
8
送貨方式
???
int
4
運費
???
money
?
8
運費
???
薪水類型
???
8
收貨人
?
nvarchar
??
80
收貨人
?
sysname
???
80
送貨地址
???
nvarchar
??
120
送貨地址
???
sysname
???
120
送貨城市
???
nvarchar
??
30
送貨城市
???
sysname
???
30
送貨行政區
?
nvarchar
??
30
送貨行政區
?
sysname
???
30
送貨郵政編碼
???
nvarchar
??
20
送貨郵政編碼
???
sysname
???
20
送貨國家地區
???
nvarchar
??
30
送貨國家地區
???
sysname
???
30
查詢存儲過程
DepartmentSalaryInfo
所有的信息,信息包含在系統視圖
syscolumns
,
systypes
中
select
syscolumns
.*,
systypes
.*
from
syscolumns
???
?
left
join
systypes
on
syscolumns
.
xusertype
=
systypes
.
xusertype
?
?
where
id
=(
select
id
from
sysobjects
where
name
=
'DepartmentSalaryInfo'
);
go
exec
??
sp_procedure_params_rowset
??
@procedure_name
??
=
??
'DepartmentSalaryInfo'
;
go
執行結果:
北風貿易
???
dbo
DepartmentSalaryInfo;1
??
@RETURN_VALUE
0
??
4
??
0
??
NULL
??
0
??
3
??
NULL
??
NULL
??
10
???
NULL
??
NULL
??
int
int
北風貿易
???
dbo
DepartmentSalaryInfo;1
??
@department
??
1
??
1
??
0
??
NULL
??
1
??
129
10
?
10
?
NULL
???
NULL
??
NULL
??
varchar
???
varchar
北風貿易
???
dbo
DepartmentSalaryInfo;1
??
@average
??
2
??
2
??
0
??
NULL
??
1
??
6
??
NULL
??
NULL
??
19
???
NULL
??
NULL
??
money
?
money
北風貿易
???
dbo
DepartmentSalaryInfo;1
??
@maximum
??
3
??
2
??
0
??
NULL
??
1
??
6
??
NULL
??
NULL
??
19
???
NULL
??
NULL
??
money
?
money
北風貿易 ??? dbo DepartmentSalaryInfo;1 ?? @minimum ?? 4 ?? 2 ?? 0 ?? NULL ?? 1 ?? 6 ?? NULL ?? NULL ?? 19 ??? NULL ?? NULL ?? money ? money
?
--存儲過程中的參數名,參數類型,參數長度
select syscolumns.name, systypes.name, syscolumns.length from syscolumns
???
?
left join systypes on syscolumns.xusertype=systypes.xusertype
?
?
where id=(select id from sysobjects where name='DepartmentSalaryInfo');
1:獲取當前數據庫中的所有用戶表
select Name from sysobjects where xtype='u' and status>=0 2:獲取某一個表的所有字段 select name from syscolumns where id=object_id('表名') 3:查詢用戶創建的所有數據庫 select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa') 或者 select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01 4:查詢某一個表的字段和數據類型 select column_name,data_type from information_schema.columns where table_name = '表名' [n].[標題]: Select * From TableName Order By CustomerName [n].[標題]: 8.如何修改數據庫的名稱: sp_renamedb 'old_name', 'new_name' 9.只復制一個表結構,不復制數據 select top 0 * into [t1] from [t2] 10.連接遠程數據庫 select * from OPENDATASOURCE('SQLOLEDB','Data Source=遠程ip;User ID=sa;Password=密碼').庫名.dbo.表名
11.獲取當前oracle數據庫中的所有表
select table_name from user_tables
12 .獲取當前oracle表中所有字段的類型
SELECT
????? COLUMN_NAME,DATA_TYPE,DATA_LENGTH,NULLABLE
FROM
???????? USER_TAB_COLS where TABLE_NAME='teacher'; |
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
