Ⅰ sql怎么添加说明
SQL
Server数据库:
这里以表t_user为例,添加说明的语句如下:
1)为表添加说明
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'用户表' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N't_user'
GO2)为字段code添加说明
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'用户编码' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N't_user', @level2type=N'COLUMN',@level2name=N'code'
GO以上。
Ⅱ 如何看sqlserver表各个字段含义
看 名字,如果建表连字段名都是乱写的,那就太业余了
Ⅲ SQLServer如何查看表结构呢有同oracle的desc一样命令吗
use Roy --数据库
go
--2005实现数据库表字段属性统计(2000里的系统表sysproperties描述表不存在,2005里用sys.extended_properties视图替代)
select
[表名]=c.Name,
[表说明]=isnull(f.[value],''),
[列名]=a.Name,
[列序号]=a.Column_id,
[标识]=case when is_identity=1 then '√' else '' end,
[主键]=case when exists(select 1 from sys.objects x join sys.indexes y on x.Type=N'PK' and x.Name=y.Name
join sysindexkeys z on z.ID=a.Object_id and z.indid=y.index_id and z.Colid=a.Column_id)
then '√' else '' end,
[类型]=b.Name,
[字节数]=case when a.[max_length]=-1 and b.Name!='xml' then 'max/2G'
when b.Name='xml' then '2^31-1字节/2G'
else rtrim(a.[max_length]) end,
[长度]=case when ColumnProperty(a.object_id,a.Name,'Precision')=-1 then '2^31-1'
else rtrim(ColumnProperty(a.object_id,a.Name,'Precision')) end,
[小数]=isnull(ColumnProperty(a.object_id,a.Name,'Scale'),0),
[是否为空]=case when a.is_nullable=1 then '√' else '' end,
[列说明]=isnull(e.[value],''),
[默认值]=isnull(d.text,'')
from
sys.columns a
left join
sys.types b on a.user_type_id=b.user_type_id
inner join
sys.objects c on a.object_id=c.object_id and c.Type='U'
left join
syscomments d on a.default_object_id=d.ID
left join
sys.extended_properties e on e.major_id=c.object_id and e.minor_id=a.Column_id and e.class=1
left join
sys.extended_properties f on f.major_id=c.object_id and f.minor_id=0 and f.class=1
Ⅳ 如何读取SqlServer数据列的说明
declare @table_name as varchar(max)
set @table_name = '你的表名'
select sys.columns.name, sys.types.name, sys.columns.max_length, sys.columns.is_nullable,
(select count(*) from sys.identity_columns where sys.identity_columns.object_id = sys.columns.object_id and sys.columns.column_id = sys.identity_columns.column_id) as is_identity ,
(select value from sys.extended_properties where sys.extended_properties.major_id = sys.columns.object_id and sys.extended_properties.minor_id = sys.columns.column_id) as description
from sys.columns, sys.tables, sys.types where sys.columns.object_id = sys.tables.object_id and sys.columns.system_type_id=sys.types.system_type_id and sys.tables.name=@table_name order by sys.columns.column_id
Ⅳ sql server中用设计器创建表时如何加上说明
在注册表中查找对应SSMS的版本号(Sqlserver2016 对应13.0)下的 (HKEY_CURRENT_USER \ Software \ Microsoft \ SQL Server Management Studio \ 11.0 \ DataProject) SSVPropViewColumnsSQL70 , SSVPropViewColumnsSQL80,并修改为1,2,6,17; 然后重启SSMS。 需要注意的是,如果连接的数据库非本地的情况下,则修改的注册表是连接的数据库所在的计算机的注册表。
参考:
https://blog.csdn.net/skz132sky/article/details/80433888
https://stackoverflow.com/questions/10537610/how-do-i-add-the-description-property-to-the-table-designer-view-in-ssms
Ⅵ SQLServer如何获取所有表及表的说明
selecttop1000
ROW_NUMBER()OVER(ORDERBYa.object_id)ASNo,
a.nameAS表名,
isnull(g.[value],'-')AS说明
from
sys.tablesaleftjoinsys.extended_propertiesg
on(a.object_id=g.major_idANDg.minor_id=0)
No表名说明
1test_table测试表
2test_main-
Ⅶ sqlserver的系统表
1、查看表和试图
SELECT * FROM sys.objects WHERE object_id = object_id('表名或视图名')
在sqlserver中一般可通过查询sys.objects系统表来得知结果,不过可以有更方便的方法
如下:
if object_id('tb_table') is not null
print 'exist'
else
print'not exist'
如上,可用object_id()来快速达到相同的目的,tb_table就是我将要创建的资源的名称,所以要先判断当前数据库中不存在相同的资源
object_id()可接受两个参数,第一个如上所示,代表资源的名称,上面的就是表的名字,但往往我们要说明我们所要创建的是什么类型的资源,
这样sql可以明确地在一种类型的资源中查找是否有重复的名字,如下:
if object_id('tb_table','u') is not null
print 'exist'
else
print'not exist'
第二个参数 "u" 就表示tb_table是用户创建的表,即:USER_TABLE地首字母简写
查询sys.objects中可得到各种资源的类型名称(TYPE列),这里之举几个主要的例子
u ----------- 用户创建的表,区别于系统表(USER_TABLE)
s ----------- 系统表(SYSTEM_TABLE)
v ----------- 视图(VIEW)
p ----------- 存储过程(SQL_STORED_PROCEDURE)
2、查看表的列名
select * from syscolumns where id=object_id('表名') and name='列名'
3、查看数据库
select * from sys.databases where name = 'student'
4、查看备份设备
"select * from sys.backup_devices where name ='backupdb'
(添加备份设备:exec sp_admpdevice 'disk','backupdb','d:\\backup\\backupdb.bak')
5、查看数据文件
select name, physical_name dbfile from sys.master_files where database_id=db_id('student')
master数据库中sysdatabases表(是sqlserver中所有的数据库的库名) :
如果你要查询的是所有数据库(用户/系统):
select * from master..sysdatabases
如果你要查询的是用户数据库,则使用:
select * from master..sysdatabases where dbid > 4
如果你要查询的是系统数据库,只需要把where字句改为dbid < 4即可。
6、查看执行的sql语句
SELECT cacheobjtype,objtype,usecounts,sql
from sys.syscacheobjects where sql not like'%cach%' and sql not like '%sys.%'
2.对应数据库中sysobjects表(反应的是相应数据库中所有的对象):
这个表的用处是最大的,因为它里面存放的有:表(系统/用户)、存储过程(系统/用户)、视图、主键、外键等。
这里就不一一说明了。
比如你sqlserver中有个数据库名叫 test,如果要查询该数据库中的所有表对象:
select * from test..sysobjects where type = ’u’ or type = ’s’
这里的type = ’u’是表示用户表对象,type = ’s’是系统表对象,怎样单独查询用户表对象或者系统表对象就不用说了吧。
如果你要查询的是存储过程当然也分了系统和用户了:
这个是查询数据库中所有存储过程
select * from test..sysobjects where type = ’p’
如果你要查询的是用户存储过程则加上 and category <> 2 即可。
查询系统存储过程就不用说了吧(category = 2 谁不知道。。。)
查询视图与查询存储过程一样,比如:
你查询的是数据库中所有视图
select * from test..sysobjects where type = ’v’
如果你要查询的是用户视图则加上 and category <> 2 即可。
其他的就不说了,就把 它们的type给大家说下:
type = ’ pk’ 表示主键。
type = ’ d’ 外键引用。
type = ’uq’ 唯一索引。
下面附录一些常用系统表
名称 地址 说明
sysaltfiles 主数据库 保存数据库的文件
syscharsets 主数据库 字符集与排序顺序
sysconfigures 主数据库 配置选项
syscurconfigs 主数据库 当前配置选项
sysdatabases 主数据库 服务器中的数据库
syslanguages 主数据库 语言
syslogins 主数据库 登陆帐号信息
sysoledbusers 主数据库 链接服务器登陆信息
sysprocesses 主数据库 进程
sysremotelogins主数据库 远程登录帐号
syscolumns 每个数据库 列
sysconstrains 每个数据库 限制
sysfilegroups 每个数据库 文件组
sysfiles 每个数据库 文件
sysforeignkeys 每个数据库 外部关键字
sysindexs 每个数据库 索引
sysmenbers 每个数据库 角色成员
sysobjects 每个数据库 所有数据库对象
syspermissions 每个数据库 权限
systypes 每个数据库 用户定义数据类型
sysusers 每个数据库 用户
Ⅷ sql server 如何完整复制表 包括表结构,索引,字段说明,依赖关系等等
复制表结构的通用存储过程
--Transfer对象的重要属性
--1.属性
属性名类型描述
------------------------------------------------------------------------
CopyAllDefaultsBoolean所有默认值
CopyAllObjectsBoolean所有对象
CopyAllRulesBoolean所有规则
CopyAllStoredProceresBoolean所有存储过程
CopyAllTablesBoolean所有表
CopyAllTriggersBoolean所有触发器
所有用户自定义类型
CopyAllViewsBoolean所有视图
CopyDataBoolean所有数据
DestDatabaseString目标对象数据库
DestLoginString目标数据库登陆用户名
DestPasswordString目标数据库登陆密码
DestServerString目标服务器
用户信任连接
DropDestObjectsFirstBoolean是否先删除目标对象
IncludeDependenciesBoolean是否包含依靠对象
ScriptTypeBoolean脚本类型
--2.重要方法:
方法名称功能描述
-----------------------------------------------------
AddObject增加对象
AddObjectByName通过对象名称增加对象
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[P_CopyDB]')andOBJECTPROPERTY(id,N'IsProcere')=1)
dropprocere[dbo].[P_CopyDB]
GO
/*--在SQLServer中使用SQLDMO.Transfer实现数据迁移
存储过程实现源数据库到目标数据库的对象和数据的复制
要求源数据库和目标数据库在同一服务器
如果是要实现不同服务器之间的复制,则需要增加验证信息
--邹建2005.07(引用请保留此信息)--*/
/*--调用示例
CREATEDATABASEtest
EXECP_CopyDB@Source_DB='northwind',@Des_DB='test'
DROPDATABASEtest
--*/
CREATEPROCEDUREP_CopyDB
@Des_DBsysname,--目标数据库
@Obj_Typenvarchar(4000)=N'',--复制的对象类型,可以是下列字符串行表:
--O所有对象,D默认值,R规则,P存储过程
--T表,TR触发器,DT用户定义数据类型
--V视图,DATA数据,DEL删除目标对象
@Source_DBsysname=N'',--源数据库
@ServerNamesysname=N'',--服务器名
@UserNamesysname=N'',--用户名,不指定则表示使用Windows身份登录
@pwdsysname=N''--密码
AS
SETNOCOUNTON
DECLARE@srvidint,@Dbidint,@S_dbidint,@D_dbidint,@TransferIDint,
@errint,@srcvarchar(255),@descvarchar(255)
IFISNULL(@ServerName,N'')=N''SET@ServerName=@@SERVERNAME
IFISNULL(@Source_DB,N'')=N''SET@Source_DB=DB_NAME()
--创建sqldmo对象·
EXEC@err=sp_oacreate'sqldmo.sqlserver',@srvidOUT
IF@err<>0GOTOlb_Err
--连接服务器
IFISNULL(@UserName,N'')=N''--使用Windows身份登录
BEGIN
EXEC@err=sp_oasetproperty@srvid,'loginsecure',-1
IF@err<>0GOTOlb_Err
EXEC@err=sp_oamethod@srvid,'connect',NULL,@servername
END
ELSE
EXEC@err=sp_oamethod@srvid,'connect',NULL,@servername,@UserName,@pwd
IF@err<>0GOTOlb_Err
--获取数据库集
EXEC@err=sp_oagetproperty@srvid,'databases',@DbidOUT
IF@err<>0GOTOlb_Err
--选择源数据库
EXEC@err=sp_oamethod@Dbid,'item',@S_dbidOUT,@Source_DB
IF@err<>0GOTOlb_Err
--选择目标数据库
EXEC@err=sp_oamethod@Dbid,'item',@D_dbidOUT,@Des_DB
IF@err<>0GOTOlb_Err
--设置复制的对象
EXEC@err=sp_oacreate'SQLDMO.Transfer',@TransferIDOUT
IF@err<>0GOTOlb_Err
--设置目标服务器信息
EXEC@err=sp_oasetproperty@TransferID,'DestServer',@ServerName
IF@err<>0GOTOlb_Err
--设置连接用户
IFISNULL(@UserName,N'')=N''--使用Windows身份登录
BEGIN
EXEC@err=sp_oasetproperty@TransferID,'DestUseTrustedConnection',1
IF@err<>0GOTOlb_Err
END
ELSE
BEGIN
EXEC@err=sp_oasetproperty@TransferID,'DestLogin',@UserName
IF@err<>0GOTOlb_Err
EXEC@err=sp_oasetproperty@TransferID,'DestPassword',@pwd
IF@err<>0GOTOlb_Err
END
--设置复制对象信息
EXEC@err=sp_oasetproperty@TransferID,'DestDatabase',@Des_DB
IF@err<>0GOTOlb_Err
DECLAREtbCURSORFAST_FORWARDLOCAL
FOR
SELECTNameFROM(
SELECTKeyWord=N',D,',Name=N'CopyAllDefaults'UNIONALL
SELECTKeyWord=N',O,',Name=N'CopyAllObjects'UNIONALL
SELECTKeyWord=N',R,',Name=N'CopyAllRules'UNIONALL
SELECTKeyWord=N',P,',Name=N'CopyAllStoredProceres'UNIONALL
SELECTKeyWord=N',T,',Name=N'CopyAllTables'UNIONALL
SELECTKeyWord=N',TR,',Name=N'CopyAllTriggers'UNIONALL
SELECTKeyWord=N',DT,',Name=N'CopyAllUserDefinedDatatypes'UNIONALL
SELECTKeyWord=N',V,',Name=N'CopyAllViews'UNIONALL
SELECTKeyWord=N',DATA,',Name=N'CopyData'UNIONALL
SELECTKeyWord=N',DEL,',Name=N'DropDestObjectsFirst'
)AWHERECHARINDEX(KeyWord,
CASEWHENISNULL(@Obj_Type,N'')=''THEN',O,DATA,'ELSE@Obj_TypeEND)>0
OPENtb
FETCHtbINTO@src
WHILE@@FETCH_STATUS=0
BEGIN
EXEC@err=sp_oasetproperty@TransferID,@src,1
IF@err<>0GOTOlb_Err
FETCHtbINTO@src
END
CLOSEtb
DEALLOCATEtb
--复制对象
EXEC@err=sp_oamethod@S_dbid,'Transfer',null,@TransferID
IF@err<>0GOTOlb_Err
--结束
SET@err=0
GOTOlb_Exit
--错误处理
lb_Err:
EXECsp_oageterrorinfoNULL,@srcOUT,@descOUT
RAISERROR(N'错误编号%#x,错误源"%s",错误描述"%s"',16,1,@err,@src,@desc)
RETURN-1
lb_Exit:
EXECsp_OADestroy@Dbid
EXECsp_OADestroy@srvid
EXECsp_OADestroy@TransferID
RETURN@err
GO
个人觉得最好的方法还是备份还原,这样这个数据库都可以复制。当然这个方法不是什么时候都能使用的
Ⅸ SqlServer显示所有表
查询数据时,我们所使用的是Session的find()方法,并在当中指定HQL设定查询条件,查询的结果会装载在List对象中传回,您所需要的是将它们一一取出,一个最简单的例子如下:
HibernateTest.java
import onlyfun.caterpillar.*;import net.sf.hibernate.*;import net.sf.hibernate.cfg.*;import java.util.*; public class HibernateTest { public static void main(String[] args) throws HibernateException { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); List users = session.find("from User"); session.close(); sessionFactory.close(); for (ListIterator iterator = users.listIterator(); iterator.hasNext(); ) { User user = (User) iterator.next(); System.out.println(user.getName() + "\n\tAge: " + user.getAge() + "\n\tSex: " + user.getSex()); } }}
find()中的“from User”即HQL,User指的是User类别,借由映射文件,它将会查询USER表格中的数据,相当于SQL中的SELECT * FROM USER,实际上我们的User类别是位于onlyfun.caterpillar下,Hibernate会自动看看import中的package名称与类别名称是否符合,您也可以直接指定package名称,例如:
session.find("from onlyfun.caterpillar.User");
看明白没?
Ⅹ sqlserver怎么查看表的内容
1、打开并登录sql查询分析器。