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

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