Ⅰ 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查詢分析器。