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'; |