`
风火山林
  • 浏览: 147120 次
  • 性别: Icon_minigender_1
  • 来自: 汕尾
最近访客 更多访客>>
社区版块
存档分类
最新评论

SqlSever用Sql脚本取数据表结构

阅读更多

1.数据库中有那些用户表
  select o.ID,O.Name from sysobjects o
  where ObjectProperty(o.ID,N'IsTable')=1
       and OBJECTPROPERTY(o.id, N'IsMSShipped')=0
       and OBJECTPROPERTY(o.id, N'IsSystemTable')=0
       and o.name not like N'#%'

2.名称为"TblName"的表有那些列,每个列的数据类型,长度
  exec sp_MShelpcolumns N'[dbo].[TblName]'

3.名称为"TblName"的表的主键,外键信息
  exec sp_MStablekeys N'[dbo].[TblName]'

4.名称为"TblName"的表有那些索引
  sp_MShelpindex N'dbo.TblName', null, 1


     

5.取触发器
select o.name, owner = user_name(o.uid),
o.crdate, o.id
from dbo.sysobjects o
where o.deltrig = Object_ID(N'[dbo].[ch]')
and o.name not like '#%'  order by o.name

 

 2006-10-30 16:17:48   

declare
@tbname sysname--要取主键列名的表名

set @tbName='G_Right_Cert_House'

select name
from syscolumns
where id=object_id(@tbname)
and colid in(
select colid from sysindexkeys where object_id(@tbname)=id and indid in(
select indid from sysindexes where object_id(@tbname)=id and name in(
select name from sysobjects where xtype='PK' and parent_obj=object_id(@tbname)
)))

 

 

聚集与非聚集索引


索引是在数据库表或者视图上创建的对象,目的是为了加快对表或视图的查询的速度

按照存储方式分为:聚集与非聚集索引
按照维护与管理索引角度分为:唯一索引、复合索引和系统自动创建的索引

索引的结构是由:根节点--->非叶节点--->非叶节点--->叶节点


1、聚集索引:表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/修改/删除的影响比较大
特点:
 
  (1) 一个表可以最多可以创建249个索引
  (2) 先建聚集索引才能创建非聚集索引
   (3) 非聚集索引数据与索引不同序
   (4) 数据与索引在不同位置
   (5) 索引在叶节点上存储,在叶节点上有一个"指针"直接指向要查询的数据区域
   (6) 数据不会根据索引键的顺序重新排列数据
   
 创建聚集索引的语法:
  create NONCLUSTERED INDEX idximpID ON EMP(empID)
2、非聚集索引:不影响表中的数据存储顺序,检索效率比聚集索引低,对数据新增/修改/删除的影响很少
特点:
  (1) 无索引,数据无序
  (2) 有索引,数据与索引同序
  (3) 数据会根据索引键的顺序重新排列数据
  (4) 一个表只能有一个索引
  (5) 叶节点的指针指向的数据也在同一位置存储
语法:
create CLUSTERED INDEX idxempID on emp(empID)
3、惟一索引:惟一索引可以确保索引列不包含重复的值.
可以用多个列,但是索引可以确保索引列中每个值组合都是唯一的
姓  名
李  二
张  三
王  五
语法: create unique index idxempid on emp(姓,名)

4、复合索引:如果在两上以上的列上创建一个索引,则称为复合索引。
那么,不可能有两行的姓和名是重复的
语法:
create index indxfullname on addressbook(firstname,lastname)

5、系统自建的索引:在使用T_sql语句创建表的时候使用PRIMARY KEY或UNIQUE约束时,会在表上自动创建一个惟一索引
自动创建的索引是无法删除的
语法:
create table ABc
( empID int primary key,
  firstname varchar(50)UNIQUE,
  lastname  varchar(50)UNIQUE,
)
这样的结果就出来了三个索引,但只有一个聚集索引哦


6、创建索引的方法:
1、企业管理器中
   (1)右击某个表,所有任务---管理索引,打开管理索引,单击“新建”就可以创建索引
   (2)在设计表中进行设计表,管理索引/键
   (3)在关系图中,添加表后右击关系图中的某个表,就有“索引/键”
   (4)通过向导,数据库---创建索引向导
   (5)通过T-SQL语句
2、能过“索引优化向导”来优化索引的向导,通过它可以决定选择哪些列做为索引列
 



实验的流程:
1、先创建一个表,然后查看一下他的占用资源情况及select * from 表
    看一下排序
2、然后创建索引,在观看一下占用资源的情况,及排序情况,看看聚集与非聚集的排序是
  否用变化
 答案是:聚集的有变化,非聚集的排序与未创建索引之前一样

 

 2007-1-11 10:07:11    字段是否存在

select count(1) from syscolumns where name = 'ColumnName'
and id in (select id from sysobjects where name = 'TableName')

 

 2007-1-12 11:39:43    结构

function GetTableStruc(Aconn: _Connection; ATableName: string): _recordSet;
var
  sSql: string;
  v: OleVariant;
begin
  sSql := 'select c.name, c.colid, st.name as col_TypeName,'
    + ' case when bt.name in (N''nchar'', N''nvarchar'') then c.length/2 else c.length end as col_len,'
    + ' convert(bit, ColumnProperty(c.ID, c.name, N''AllowsNull'')) as col_AllowNull,'
    + ' convert(bit, ColumnProperty(c.ID, c.name, N''IsIdentity''))  as IsIdentity,'
    + ' isnull(OBJECTPROPERTY(cdefault, N''IsDefaultCnst''),0)as HasDefault'
    + ' from dbo.syscolumns c '
    + ' left outer join dbo.sysobjects d on d.id = c.cdefault  '
    + ' left outer join dbo.sysobjects r on r.id = c.domain  '
    + ' join dbo.systypes st on st.xusertype = c.xusertype  '
    + ' join dbo.systypes bt on bt.xusertype = c.xtype  '
    + ' where c.id = object_id(''%s'')  ';
  Result := Aconn.Execute(Format(sSql, [ATableName]), v, adCmdText);
end;

分享到:
评论

相关推荐

    sqlserver表数据生成insertsql脚本(导出成insertsql脚本).pdf

    当我们选择“架构和数据”选项时,SQL Server将生成一个包含表结构和数据的INSERT SQL脚本。这个脚本将包括CREATE TABLE语句,以便在目标数据库中创建相同的表结构。同时,脚本还将包括INSERT INTO语句,以便将数据...

    SQLServer导出带数据的脚本

    SQL Server 提供了多种方式来导出带数据的脚本,例如使用 SSMS 的 Task 页签、使用 sqlcmd 命令行工具等。 二、使用 SSMS 导出带数据的脚本 ----------------------------- ### 1. 选择对象 在 SSMS 中,选择要...

    SQL SERVER脚本表结构和数据导出工具

    当我们说“脚本表结构”,我们是指生成一个包含创建该表所需的所有T-SQL语句的文本文件。 1. **导出表结构:** - 使用SSMS:在对象资源管理器中,右键点击要导出的表 -> "任务" -> "生成脚本",然后在向导中选择...

    为SQL server 2000数据生成脚本

    本文将详细解释如何为SQL Server 2000的数据生成脚本,以及这个过程中的关键知识点。 首先,生成数据脚本的主要目的是为了备份数据、初始化新的数据库环境或在不同服务器间迁移数据。在SQL Server 2000中,这可以...

    Navicat 实现同步sqlserver表结构到mysql操作手册1

    本文将详细介绍如何使用Navicat工具实现SQL Server表结构到MySQL的同步操作,这对于那些需要在不同数据库系统间进行数据迁移的开发者来说尤其有用。 Navicat是一款强大的数据库管理工具,支持多种数据库类型,包括...

    SqlServer查看表结构

    本篇文章将深入解析“SqlServer查看表结构”的方法,以及如何利用SQL语句来获取详细的表结构信息,这对于数据库管理员(DBA)、数据分析师、软件开发者等专业人士来说尤为关键。 ### SQL Server查看表结构的重要性 ...

    SqlServer 2008 表结构导出脚本

    SqlServer 2008 表结构导出脚本。可以导出整个库,也可以是单张表。

    SQLServer数据脚本转为达梦数据脚本.doc

    此文档主要是将SQLServer数据脚本转为达梦数据库数据脚本,截图为主,有需要的可以参考!

    SQLSERVER脚本生成工具,表数据生成SQL脚本

    描述中提到的“表数据生成SQL脚本”功能,具体来说,是指该工具能将SQL Server数据库中某个表的数据转换为INSERT语句的集合。这些INSERT语句可以按照一定的顺序执行,以复原表中的所有记录。例如,如果你有一个名为...

    sqlserver2005/2000生成带带数据的脚本(生成器)

    总的来说,"sqlserver2005/2000生成带带数据的脚本(生成器)"是解决SQL Server默认工具不足的一种有效手段,它提高了数据库管理和迁移的效率,减少了人为错误的可能性。在使用过程中,结合SSMS和其他数据库管理工具...

    数据库转换工具MySQL 转为SqlServer 脚本

    - **生成和执行脚本**:最后,工具会生成SQL Server兼容的创建数据库、表、索引、视图、存储过程等的脚本,这些脚本在SQL Server上执行以重建数据库结构。 5. **数据迁移**:除了结构转换,还需要将MySQL中的数据...

    json转换为SQL server建表脚本

    在开发过程中,有时我们需要将JSON数据转化为SQL Server的建表脚本,以便在数据库中创建相应的表结构来存储这些数据。 标题"json转换为SQL server建表脚本"涉及到的主要知识点包括: 1. JSON解析:首先,你需要...

    sqlserver 导出表及字段说明脚本.rar

    这个压缩包"sqlserver 导出表及字段说明脚本.rar"包含了一个名为"sqlserver 导出表及字段说明脚本.sql"的文件,这通常是一个用于生成SQL语句的脚本,用于描述数据库中的表结构以及各字段的详细信息。以下是对这个...

    SQLServer脚本批量执行工具

    SQLServer脚本批量执行工具是一种高效管理SQL Server数据库的实用程序,它允许用户一次性执行多个SQL脚本,显著提高了数据库管理员的工作效率。该工具的主要功能包括脚本的顺序执行、执行结果的记录以及脚本的可视化...

    sqlserver表数据插入到oracle表中的一种实现方式(表结构相同)

    表结构的创建比较简单,但是表的数据量太大,一时也想不到怎么把sqlserver表数据复制到oracle中,于是请教公司主管,用存储过程实现可以查询出所有数据的insert脚本,在oracle库中创建好表,直接把sqlserver中的...

    SQLSERVER生成数据脚本软件.

    SQL Server生成数据脚本软件是数据库管理员和开发人员的重要工具,它能够帮助用户轻松地导出数据库的结构和数据为SQL脚本,方便备份、迁移或者在不同环境间同步数据。以下是关于这个主题的详细知识: 1. **SQL ...

    SQLSERVER如何使用脚本生成表

    在SQL Server中,生成表的脚本是一种常见的数据库管理任务,尤其在数据库设计、备份或复制表结构到其他环境时非常有用。以下是一份详细的指南,教你如何在SQL Server中通过脚本创建表。 首先,我们可以使用SQL ...

    SQLserver 表导出SQL脚本的工具

    在SQL Server数据库管理中,有时我们需要将数据表的结构或数据导出为SQL脚本,以便备份、迁移或在其他环境中重建。SQL Server提供了一些内置工具和方法来实现这一目标,这些工具通常对于数据库管理员和开发人员来说...

    sql server 2005 建库建表脚本

    表是数据库中用于存储数据的基本结构,使用`CREATE TABLE`语句创建。脚本中展示了一个包含标识列、字符字段和位字段的简单表创建示例: ```sql CREATE TABLE UserInfo ( Id INT IDENTITY(1,1) NOT NULL, Uname ...

    SQLServer数据库表中数据导出成SQL语句工具

    针对这个需求,存在一种名为“SQLServer数据库表中数据导出成SQL语句工具”的实用程序,它能够帮助我们高效地完成这项任务。这个工具通常以MHT(Multi-Part/Related)格式提供,这是一种单一文件Web页面存储格式,...

Global site tag (gtag.js) - Google Analytics