扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
--查询数据库里所有表名和字段名的语句
成都创新互联长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为广宗企业提供专业的成都网站设计、网站建设、外贸网站建设,广宗网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
--SQL
查询所有表名:
SELECT
NAME
FROM
SYSOBJECTS
WHERE
TYPE='U'
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
--查询表的所有字段名:
SELECT
NAME
FROM
SYSCOLUMNS
WHERE
ID=OBJECT_ID('
表名'
)
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES
SELECT
*
FROM
INFORMATION_SCHEMA.VIEWS
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
---------以下为其他数据库查询表----------
--ORACLE
查看所有表名:
SELECT
TABLE_NAME
FROM
USER_TABLES
--ACCESS
查看所有表名:
SELECT
NAME
FROM
MSYSOBJECTS
WHERE
TYPE=1
AND
FLAGS=0
--MSYSOBJECTS
是系统对象,默认情况是隐藏的。通过工具、选项、视图、显示、系统对象可以使之显示出来。
SQLSERVER中 根据字段名称查找所在表格名称的方法:
一、语句的思路:
SQLSERVER的两个系统表:1、保存表格字段属性的:syscolumns 2、保存数据库对象属性的:sysobjects ,它们都包含对象ID字段,所以可以使用两个表格的ID字段,作为表格联合检索依据来进行检索。
二、相关系统表格简介:
1、syscolumns :每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。
2、sysobjects :在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。
三、根据字段名称检索所在表格名称
select syscolumns.name,sysobjects.name --syscolumns.name:字段名、sysobjects.name:表格名称
from syscolumns,sysobjects
where syscolumns.name = 'gc_lczt' and syscolumns.id = sysobjects.id;--以字段名称'gc_lczt'为例,使用字段ID关联两个表格
四、检索结果如图:
五、注意:因为不同表格可能有相同的字段名称,所以结果有可能不只一条。
SQL中修改一个表的列名的步骤如下:
1、首先我们打开SQL软件。
2、然后右键点击想要修改的列名。
3、点击栏目框中的修改。
4、 点击完毕之后,我们这里可以看到的是在两侧的列名值是一样的 ,此时输入你想要修改的新的列名即可完成修改。
5、 然后ctrl+s保存,保存成功之后,随后在列名上右击选择刷新,就可以确认修改成功了
结果代码是: 建表后,设置表/字段的注释信息。
下面是 读取表/字段 的说明备注 的 SQL 语句。
获取数据库表清单:
select top 1000
ROW_NUMBER() OVER (ORDER BY a.object_id) AS No,
a.name AS 表名,
isnull(g.[value],'-') AS 说明
from
sys.tables a left join sys.extended_properties g
on (a.object_id = g.major_id AND g.minor_id = 0)
No 表名 说明
1 test_table 测试表
2 test_main -
获取数据库表的字段清单 [这里是查看 test_table 表的字段]
SELECT
a.column_id AS No,
a.name AS 列名,
isnull(g.[value],'-') AS 说明
FROM
sys.columns a left join sys.extended_properties g
on (a.object_id = g.major_id AND g.minor_id = a.column_id)
WHERE
object_id =
(SELECT object_id FROM sys.tables WHERE name = 'test_table')
No 列名 说明
1 Test_ID 主键(自增长)
2 Test_Key 种类
3 Test_Value 数值
4 Test_Type 内部类型
5 Test_BelongTo 从属关系
6 Test_Grade 等级
7 Test_Remark 备注
8 Test_Visible 是否可见
-----
更加详细一点的信息
SELECT
col.name AS 列名,
typ.name as 数据类型,
col.max_length AS 占用字节数,
col.precision AS 数字长度,
col.scale AS 小数位数,
col.is_nullable AS 是否允许非空,
col.is_identity AS 是否自增,
case when exists
( SELECT 1
FROM
sys.indexes idx
join sys.index_columns idxCol
on (idx.object_id = idxCol.object_id)
WHERE
idx.object_id = col.object_id
AND idxCol.index_column_id = col.column_id
AND idx.is_primary_key = 1
) THEN 1 ELSE 0 END AS 是否是主键
FROM
sys.columns col left join sys.types typ on (col.system_type_id = typ.system_type_id)
WHERE
col.object_id =
(SELECT object_id FROM sys.tables WHERE name = 'test_table')
SQL Server 2005 的 Microsoft SQL Server Management Studio Express
没有 带列名一起复制。 凑合着看看吧,就不手动写列名了。
Test_ID int 4 10 0 0 1 1 主键(自增长)
Test_Key varchar 10 0 0 0 0 0 种类
Test_Value varchar 20 0 0 0 0 0 数值
Test_Type int 4 10 0 0 0 0 内部类型
Test_BelongTo int 4 10 0 1 0 0 从属关系
Test_Grade int 4 10 0 1 0 0 等级
Test_Remark varchar 50 0 0 1 0 0 备注
Test_Visible bit 1 1 0 1 0 0 是否可见
拼接字符串就可以啊,表名定义一个变量
declare @stable varchar(20) --定义表名
declare @ssql varchar (1000)--要执行的sql语句
set @stable='data'+@sdate--@Sdate 是你转换过的字符,比如你的就是200702可以用substring截取
@ssql='你的相应条件'+stable
exec (@ssql ) 就可以了,我时常做项目都是这样动态的。不明白的百度hi问我,但是要记得给我最佳答案啊,呵呵
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流