1. --20170505
  2. --塗聚文 Geovin Du
  3.  
  4. CREATE DATABASE DuMailSystem
  5. GO
  6. USE DuMailSystem
  7. GO
  8.  
  9. --1查詢表的及备注说明
  10. SELECT Sysobjects.name AS TABLE_NAME, syscolumns.Id, syscolumns.name AS COLUMN_NAME,
  11. systypes.name AS DATA_TYPE, syscolumns.length as CHARACTER_MAXIMUM_LENGTH,
  12. sys.extended_properties.[value] AS COLUMN_DESCRIPTION, syscomments.text as
  13. COLUMN_DEFAULT,syscolumns.isnullable as IS_NULLABLE FROM syscolumns
  14. INNER JOIN systypes
  15. ON syscolumns.xtype = systypes.xtype
  16. LEFT JOIN sysobjects ON syscolumns.id = sysobjects.id
  17. LEFT OUTER JOIN sys.extended_properties ON
  18. ( sys.extended_properties.minor_id = syscolumns.colid
  19. AND sys.extended_properties.major_id = syscolumns.id)
  20. LEFT OUTER JOIN syscomments ON syscolumns.cdefault = syscomments.id
  21. WHERE syscolumns.id IN
  22. (SELECT id FROM SYSOBJECTS WHERE xtype = 'U') AND (systypes.name <> 'sysname')
  23. -- ORDER BY syscolumns.colid
  24.  
  25. --2.SQL查询表的所有字段的备注说明
  26. SELECT
  27. (case when a.colorder=1 then d.name else '' end) N'表名',
  28. a.colorder N'字段序号',
  29. a.name N'字段名',
  30. (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else ''
  31. end) N'标识',
  32. (case when (SELECT count(*)
  33. FROM sysobjects
  34. WHERE (name in
  35. (SELECT name
  36. FROM sysindexes
  37. WHERE (id = a.id) AND (indid in
  38. (SELECT indid
  39. FROM sysindexkeys
  40. WHERE (id = a.id) AND (colid in
  41. (SELECT colid
  42. FROM syscolumns
  43. WHERE (id = a.id) AND (name = a.name))))))) AND
  44. (xtype = 'PK'))>0 then '√' else '' end) N'主键',
  45. b.name N'类型',
  46. a.length N'占用字节数',
  47. COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',
  48. isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',
  49. (case when a.isnullable=1 then '√'else '' end) N'允许空',
  50. isnull(e.text,'') N'默认值',
  51. isnull(g.[value],'') AS N'字段说明'
  52. FROM syscolumns a
  53. left join systypes b
  54. on a.xtype=b.xusertype
  55. inner join sysobjects d
  56. on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
  57. --AND d.name='MaterialOrderDetails'
  58. left join syscomments e
  59. on a.cdefault=e.id
  60. left join sys.extended_properties g
  61. on a.id=g.major_id AND a.colid = g.minor_id
  62. order by object_name(a.id),a.colorder
  63. GO
  64.  
  65. --造成此问题的原因是由于Sql 20052008 删除了系统表 sysproperties 而改用 sys.extended_properties 表所致
  66. --sql server 2008
  67. SELECT a.[name] as '字段名称', (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) as '标识'
  68. ,b.name '类型'
  69. ,a.length '占用字节数'
  70. ,(case when a.isnullable = 1 then '√'else '' end) '允许空'
  71. ,isnull(e.text,'') '默认值'
  72. ,cast(isnull(g.[value],'') as varchar(100)) AS '字段说明'
  73. FROM syscolumns a
  74. left join systypes b
  75. on a.xtype = b.xusertype
  76. left join sys.syscomments e
  77. on a.cdefault=e.id
  78. left join sys.extended_properties g
  79. on a.id = g.major_id AND a.colid = g.minor_id
  80. --WHERE a.id =1173579219
  81. --ORDER by a.colorder
  82. GO
  83.  
  84. SELECT * FROM sys.extended_properties
  85. SELECT * FROM syscolumns
  86. SELECT * FROM sys.syscomments
  87.  
  88. SELECT a.name,b.value AS 'Description',b.name,c.name AS 'typename',a.length,d.name as 'TableName' FROM syscolumns AS a,sys.extended_properties AS b,systypes AS c,sysobjects as d
  89. WHERE a.id=b.major_id AND a.colid=b.minor_id
  90. AND a.xtype=c.xusertype
  91. AND a.id=d.id
  92.  
  93. --主鍵
  94. SELECT a.name,b.value AS 'Description',b.name,c.name AS 'typename',a.length,d.name as 'TableName',dbo.F_GetDescriptionTableName(d.id) AS 'TableDescription' FROM syscolumns AS a,sys.extended_properties AS b,systypes AS c,sysobjects as d ,INFORMATION_SCHEMA.KEY_COLUMN_USAGE as e
  95. WHERE a.id=b.major_id AND a.colid=b.minor_id
  96. AND a.xtype=c.xusertype
  97. AND a.id=d.id
  98. AND d.xtype='U' and e.TABLE_NAME = d.name and e.COLUMN_NAME=a.name
  99.  
  100. --表描述
  101. SELECT * FROM sys.extended_properties WHERE minor_id=0
  102.  
  103. SELECT a.id,a.name,b.value AS 'Description' FROM sysobjects AS a,sys.extended_properties b WHERE a.xtype='U' AND a.id=b.major_id AND minor_id=0
  104.  
  105. DECLARE @name NVARCHAR(100),@id INT
  106. SET @id=21575115
  107. SELECT @name=CONVERT(NVARCHAR(100),b.value)FROM sysobjects AS a,sys.extended_properties as b WHERE a.xtype='U' AND a.id=b.major_id AND minor_id=0 AND a.id=@id
  108. SELECT @name AS '表描述'
  109.  
  110. ---表描述
  111. if exists(select 1 from sysobjects where name = 'F_GetDescriptionTableName' and xtype = 'FN')
  112. drop function F_GetDescriptionTableName
  113. go
  114. CREATE function F_GetDescriptionTableName
  115. (
  116. @id int
  117. )
  118. returns nvarchar(400)
  119. as
  120. begin
  121. declare @str nvarchar(100)
  122. SELECT @str=CONVERT(NVARCHAR(100),b.value)FROM sysobjects AS a,sys.extended_properties as b WHERE a.xtype='U' AND a.id=b.major_id AND minor_id=0 AND a.id=@id
  123. return isnull(@str,'')
  124. end
  125. GO
  126.  
  127. ---
  128. SELECT d.name as 'TableName',dbo.F_GetDescriptionTableName(d.id) AS 'TableDescription',a.name as 'FieldName',e.value AS 'FieldDescription',b.name as 'TypeName',a.length as 'Length',a.isnullable as 'IS_NULL' FROM syscolumns a, systypes b,sysobjects d ,INFORMATION_SCHEMA.KEY_COLUMN_USAGE c,sys.extended_properties AS e
  129. WHERE a.xtype=b.xusertype and a.id=d.id and d.xtype='U' and c.TABLE_NAME = d.name and c.COLUMN_NAME=a.name
  130. AND d.id=e.major_id
  131. AND a.id=e.major_id AND a.colid=e.minor_id
  132. GO
  133.  
  134. SELECT d.name as 'TableName',a.name as 'FieldName',b.name as 'TypeName',a.length as 'Length',a.isnullable as 'IS_NULL' FROM syscolumns a, systypes b,sysobjects d ,INFORMATION_SCHEMA.KEY_COLUMN_USAGE c WHERE a.xtype=b.xusertype and a.id=d.id and d.xtype='U' and c.TABLE_NAME = d.name and c.COLUMN_NAME=a.name
  135. GO
  136.  
  137. --Customer,可以加上描述
  138. SELECT c.name as FieldName,t.name as FieldType, c.length as FieldLength FROM SYSCOLUMNS c inner join systypes t on c.xusertype=t.xusertype WHERE c.ID = OBJECT_ID('Customer')
  139. GO
  140.  
  141. SELECT c.name as FieldName,t.name as FieldType,e.value AS FieldDescription , c.length as FieldLength FROM SYSCOLUMNS as c ,systypes as t,sys.extended_properties AS e
  142. WHERE c.xusertype=t.xusertype
  143. AND c.id=e.major_id AND c.colid=e.minor_id
  144. AND c.ID = OBJECT_ID('Customer')
  145. GO
  146.  
  147. --查询表
  148. SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', default, default, default)
  149.  
  150. --收件箱 Receive,發件箱
  151.  
  152. IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].SendReceiveMailHost') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  153. DROP TABLE SendReceiveMailHost
  154. GO
  155. CREATE TABLE SendReceiveMailHost
  156. (
  157. SendHostId INT IDENTITY(1,1) PRIMARY KEY,
  158. SendHostName VARCHAR(100) NOT NULL,
  159. PopHostName VARCHAR(100) NOT NULL,
  160. SendUserName VARCHAR(100) NOT NULL,
  161. SendRealName VARCHAR(100) NOT NULL,
  162. SendPassword VARCHAR(100) NOT NULL,
  163. SendPort INT DEFAULT(25) NOT NULL,
  164. PopPort INT DEFAULT(110) NOT NULL,
  165. SendEnableSsl BIT DEFAULT(0),
  166. SendTimeout INT DEFAULT(10000)
  167. )
  168. GO
  169. --
  170. EXECUTE sp_addextendedproperty N'MS_Description', '收發郵件箱設置表', N'user', N'dbo', N'table', N'SendReceiveMailHost', NULL, NULL
  171. --为字段添加描述信息
  172. EXECUTE sp_addextendedproperty N'MS_Description', '自动增长ID号', N'user', N'dbo', N'table', N'SendReceiveMailHost', N'column', N'SendHostId'
  173. EXECUTE sp_addextendedproperty N'MS_Description', '發郵件服務地址', N'user', N'dbo', N'table', N'SendReceiveMailHost', N'column', N'SendHostName'
  174. EXECUTE sp_addextendedproperty N'MS_Description', '收件郵件服務地址', N'user', N'dbo', N'table', N'SendReceiveMailHost', N'column', N'PopHostName'
  175. EXECUTE sp_addextendedproperty N'MS_Description', '發郵件箱', N'user', N'dbo', N'table', N'SendReceiveMailHost', N'column', N'SendUserName'
  176. EXECUTE sp_addextendedproperty N'MS_Description', '顯示姓名', N'user', N'dbo', N'table', N'SendReceiveMailHost', N'column', N'SendRealName'
  177. EXECUTE sp_addextendedproperty N'MS_Description', '發件箱密碼', N'user', N'dbo', N'table', N'SendReceiveMailHost', N'column', N'SendPassword'
  178. EXECUTE sp_addextendedproperty N'MS_Description', '发郵件服務端口', N'user', N'dbo', N'table', N'SendReceiveMailHost', N'column', N'SendPort'
  179. EXECUTE sp_addextendedproperty N'MS_Description', '收郵件服務端口', N'user', N'dbo', N'table', N'SendReceiveMailHost', N'column', N'PopPort'
  180. EXECUTE sp_addextendedproperty N'MS_Description', '是否安全SSL', N'user', N'dbo', N'table', N'SendReceiveMailHost', N'column', N'SendEnableSsl'
  181. EXECUTE sp_addextendedproperty N'MS_Description', '發件延長時間秒', N'user', N'dbo', N'table', N'SendReceiveMailHost', N'column', N'SendTimeout'
  182.  
  183. SELECT * FROM SendReceiveMailHost;
  184.  
  185. --收郵件列表ReceiveMail
  186. IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].ReceiveMail') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  187. DROP TABLE ReceiveMail
  188. GO
  189. CREATE TABLE ReceiveMail
  190. (
  191. ReceiveId INT IDENTITY(1,1) PRIMARY KEY,
  192. ReceiveHostId INT NOT NULL
  193. FOREIGN key references SendReceiveMailHost(SendHostId),
  194. ContentType VARCHAR(100) NOT NULL,
  195. ContentEncoding VARCHAR(100) NOT NULL,
  196. ReceiveTo VARCHAR(100),
  197. ReceiveFrom VARCHAR(100),
  198. ReplyTo VARCHAR(100),
  199. ReceiveSubject NVARCHAR(200),
  200. ReceiveBody NTEXT,
  201. ReceiveDate DATETIME
  202. )
  203. GO
  204.  
  205. EXECUTE sp_addextendedproperty N'MS_Description', '收邮件表', N'user', N'dbo', N'table', N'ReceiveMail', NULL, NULL
  206. --为字段添加描述信息
  207. EXECUTE sp_addextendedproperty N'MS_Description', '自动增长ID号', N'user', N'dbo', N'table', N'ReceiveMail', N'column', N'ReceiveId'
  208. EXECUTE sp_addextendedproperty N'MS_Description', '收件服务ID,外键', N'user', N'dbo', N'table', N'ReceiveMail', N'column', N'ReceiveHostId'
  209. EXECUTE sp_addextendedproperty N'MS_Description', '文件类型', N'user', N'dbo', N'table', N'ReceiveMail', N'column', N'ContentType'
  210. EXECUTE sp_addextendedproperty N'MS_Description', '邮件字符编码类型', N'user', N'dbo', N'table', N'ReceiveMail', N'column', N'ContentEncoding'
  211. EXECUTE sp_addextendedproperty N'MS_Description', '收件人', N'user', N'dbo', N'table', N'ReceiveMail', N'column', N'ReceiveTo'
  212.  
  213. EXECUTE sp_addextendedproperty N'MS_Description', '发件人', N'user', N'dbo', N'table', N'ReceiveMail', N'column', N'ReceiveFrom'
  214. EXECUTE sp_addextendedproperty N'MS_Description', '回复邮件地址', N'user', N'dbo', N'table', N'ReceiveMail', N'column', N'ReplyTo'
  215. EXECUTE sp_addextendedproperty N'MS_Description', '邮件标题', N'user', N'dbo', N'table', N'ReceiveMail', N'column', N'ReceiveSubject'
  216. EXECUTE sp_addextendedproperty N'MS_Description', '邮件内容', N'user', N'dbo', N'table', N'ReceiveMail', N'column', N'ReceiveBody'
  217. EXECUTE sp_addextendedproperty N'MS_Description', '收件日期', N'user', N'dbo', N'table', N'ReceiveMail', N'column', N'ReceiveDate'
  218.  
  219. ---收邮件附件列表 ReceiveAttachments
  220. IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].ReceiveAttachments') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  221. DROP TABLE ReceiveAttachments
  222. GO
  223. CREATE TABLE ReceiveAttachments
  224. (
  225. AttachmentId INT IDENTITY(1,1) PRIMARY KEY,
  226. AttachmentIdKey INT NOT NULL
  227. FOREIGN key references ReceiveMail(ReceiveId),
  228. AttachmentFileName NVARCHAR(100) NOT NULL,
  229. AttachmentFileUrl NVARCHAR(500) NOT NULL,
  230. AttachmentImage IMAGE NOT NULL,
  231. AttachmentType VARCHAR(100)
  232. )
  233. GO
  234. --來源地址,保存地址
  235. EXECUTE sp_addextendedproperty N'MS_Description', '收邮件附件表', N'user', N'dbo', N'table', N'ReceiveAttachments', NULL, NULL
  236. EXECUTE sp_updateextendedproperty N'MS_Description', '收邮件附件表', N'user', N'dbo', N'table', N'ReceiveAttachments', NULL, NULL
  237. --为字段添加描述信息
  238. EXECUTE sp_addextendedproperty N'MS_Description', '自动增长ID号', N'user', N'dbo', N'table', N'ReceiveAttachments', N'column', N'AttachmentId'
  239. EXECUTE sp_addextendedproperty N'MS_Description', '外鍵ID', N'user', N'dbo', N'table', N'ReceiveAttachments', N'column', N'AttachmentIdKey'
  240. EXECUTE sp_addextendedproperty N'MS_Description', '文件名稱', N'user', N'dbo', N'table', N'ReceiveAttachments', N'column', N'AttachmentFileName'
  241. EXECUTE sp_addextendedproperty N'MS_Description', '文件地址', N'user', N'dbo', N'table', N'ReceiveAttachments', N'column', N'AttachmentFileUrl'
  242. EXECUTE sp_addextendedproperty N'MS_Description', '文件存儲數据庫', N'user', N'dbo', N'table', N'ReceiveAttachments', N'column', N'AttachmentImage'
  243. EXECUTE sp_addextendedproperty N'MS_Description', '文件類型', N'user', N'dbo', N'table', N'ReceiveAttachments', N'column', N'AttachmentType'
  244.  
  245. --郵件聯系人(收件人)
  246. IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].Customer') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  247. DROP TABLE Customer
  248. GO
  249. CREATE TABLE Customer
  250. (
  251. Id INT IDENTITY(1,1) PRIMARY KEY,
  252. RealName NVARCHAR(100) NOT NULL,
  253. Email NVARCHAR(100) NOT NULL,
  254. Sex INT NOT NULL,
  255. Title NVARCHAR(50),
  256. Tel VARCHAR(50)
  257. )
  258. GO
  259.  
  260. EXECUTE sp_addextendedproperty N'MS_Description', '郵件聯系人表', N'user', N'dbo', N'table', N'Customer', NULL, NULL
  261. --为字段添加描述信息
  262. EXECUTE sp_addextendedproperty N'MS_Description', '自动增长ID号', N'user', N'dbo', N'table', N'Customer', N'column', N'Id'
  263. EXECUTE sp_addextendedproperty N'MS_Description', '真实姓名', N'user', N'dbo', N'table', N'Customer', N'column', N'RealName'
  264. EXECUTE sp_addextendedproperty N'MS_Description', '邮件地址', N'user', N'dbo', N'table', N'Customer', N'column', N'Email'
  265. EXECUTE sp_addextendedproperty N'MS_Description', '性别', N'user', N'dbo', N'table', N'Customer', N'column', N'Sex'
  266. EXECUTE sp_addextendedproperty N'MS_Description', '称呼', N'user', N'dbo', N'table', N'Customer', N'column', N'Title'
  267. EXECUTE sp_addextendedproperty N'MS_Description', '电话', N'user', N'dbo', N'table', N'Customer', N'column', N'Tel'
  268.  
  269. --發郵件列表 SendMail
  270. IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].SendMail') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  271. DROP TABLE SendMail
  272. GO
  273. CREATE TABLE SendMail
  274. (
  275. SendId INT IDENTITY(1,1) PRIMARY KEY,
  276. SendHostId INT NOT NULL
  277. FOREIGN key references SendReceiveMailHost(SendHostId), --
  278. SendToId INT NOT NULL
  279. FOREIGN key references Customer(Id),
  280. SendSubject NVARCHAR(500) NOT NULL,
  281. SendBody NTEXT NULL,
  282. SendIs BIT DEFAULT(1), --1,ok.0,no.
  283. SendDate DATETIME DEFAULT(GETDATE())
  284. )
  285. GO
  286.  
  287. EXECUTE sp_addextendedproperty N'MS_Description', '發件郵列表', N'user', N'dbo', N'table', N'SendMail', NULL, NULL
  288. --为字段添加描述信息
  289. EXECUTE sp_addextendedproperty N'MS_Description', '自动增长ID号', N'user', N'dbo', N'table', N'SendMail', N'column', N'SendId'
  290. EXECUTE sp_addextendedproperty N'MS_Description', '發郵件箱ID,外鍵', N'user', N'dbo', N'table', N'SendMail', N'column', N'SendHostId'
  291. EXECUTE sp_addextendedproperty N'MS_Description', '收件人ID,外鍵', N'user', N'dbo', N'table', N'SendMail', N'column', N'SendToId'
  292. EXECUTE sp_addextendedproperty N'MS_Description', '發件標題', N'user', N'dbo', N'table', N'SendMail', N'column', N'SendSubject'
  293. EXECUTE sp_addextendedproperty N'MS_Description', '發件內容', N'user', N'dbo', N'table', N'SendMail', N'column', N'SendBody'
  294. EXECUTE sp_addextendedproperty N'MS_Description', '發件是否成功', N'user', N'dbo', N'table', N'SendMail', N'column', N'SendIs'
  295. EXECUTE sp_addextendedproperty N'MS_Description', '發件時間', N'user', N'dbo', N'table', N'SendMail', N'column', N'SendDate'
  296.  
  297. --发邮件附件列表 SendAttachments
  298.  
  299. IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].SendAttachments') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  300. DROP TABLE SendAttachments
  301. GO
  302. CREATE TABLE SendAttachments
  303. (
  304. AttachmentId INT IDENTITY(1,1) PRIMARY KEY,
  305. AttachmentIdKey INT
  306. FOREIGN key references SendMail(SendId),
  307. AttachmentFileName NVARCHAR(100) NOT NULL,
  308. AttachmentFileUrl NVARCHAR(500) NOT NULL,
  309. AttachmentImage IMAGE NOT NULL,
  310. AttachmentType VARCHAR(100)
  311. )
  312. GO
  313. --來源地址,保存地址
  314. EXECUTE sp_addextendedproperty N'MS_Description', '发邮件附件表', N'user', N'dbo', N'table', N'SendAttachments', NULL, NULL
  315. --为字段添加描述信息
  316. EXECUTE sp_addextendedproperty N'MS_Description', '自动增长ID号', N'user', N'dbo', N'table', N'SendAttachments', N'column', N'AttachmentId'
  317. EXECUTE sp_addextendedproperty N'MS_Description', '外鍵ID', N'user', N'dbo', N'table', N'SendAttachments', N'column', N'AttachmentIdKey'
  318. EXECUTE sp_addextendedproperty N'MS_Description', '文件名稱', N'user', N'dbo', N'table', N'SendAttachments', N'column', N'AttachmentFileName'
  319. EXECUTE sp_addextendedproperty N'MS_Description', '文件地址', N'user', N'dbo', N'table', N'SendAttachments', N'column', N'AttachmentFileUrl'
  320. EXECUTE sp_addextendedproperty N'MS_Description', '文件存儲數据庫', N'user', N'dbo', N'table', N'SendAttachments', N'column', N'AttachmentImage'
  321. EXECUTE sp_addextendedproperty N'MS_Description', '文件類型', N'user', N'dbo', N'table', N'SendAttachments', N'column', N'AttachmentType'
  322. GO
  323.  
  324. --主键约束
  325. SELECT
  326. tab.name AS [表名],
  327. idx.name AS [主键名称],
  328. col.name AS [主键列名]
  329. FROM
  330. sys.indexes idx
  331. JOIN sys.index_columns idxCol
  332. ON (idx.object_id = idxCol.object_id
  333. AND idx.index_id = idxCol.index_id
  334. AND idx.is_primary_key = 1)
  335. JOIN sys.tables tab
  336. ON (idx.object_id = tab.object_id)
  337. JOIN sys.columns col
  338. ON (idx.object_id = col.object_id
  339. AND idxCol.column_id = col.column_id);
  340. GO
  341.  
  342. ---唯一约束
  343. SELECT
  344. tab.name AS [表名],
  345. idx.name AS [约束名称],
  346. col.name AS [约束列名]
  347. FROM
  348. sys.indexes idx
  349. JOIN sys.index_columns idxCol
  350. ON (idx.object_id = idxCol.object_id
  351. AND idx.index_id = idxCol.index_id
  352. AND idx.is_unique_constraint = 1)
  353. JOIN sys.tables tab
  354. ON (idx.object_id = tab.object_id)
  355. JOIN sys.columns col
  356. ON (idx.object_id = col.object_id
  357. AND idxCol.column_id = col.column_id);
  358. GO
  359.  
  360. --外键约束
  361. select
  362. oSub.name AS [子表名称],
  363. fk.name AS [外键名称],
  364. SubCol.name AS [子表列名],
  365. oMain.name AS [主表名称],
  366. MainCol.name AS [主表列名]
  367. from
  368. sys.foreign_keys fk
  369. JOIN sys.all_objects oSub
  370. ON (fk.parent_object_id = oSub.object_id)
  371. JOIN sys.all_objects oMain
  372. ON (fk.referenced_object_id = oMain.object_id)
  373. JOIN sys.foreign_key_columns fkCols
  374. ON (fk.object_id = fkCols.constraint_object_id)
  375. JOIN sys.columns SubCol
  376. ON (oSub.object_id = SubCol.object_id
  377. AND fkCols.parent_column_id = SubCol.column_id)
  378. JOIN sys.columns MainCol
  379. ON (oMain.object_id = MainCol.object_id
  380. AND fkCols.referenced_column_id = MainCol.column_id)
  381. GO
  382.  
  383. --Check约束
  384. SELECT
  385. tab.name AS [表名],
  386. chk.name AS [Check约束名],
  387. col.name AS [列名],
  388. chk.definition
  389. FROM
  390. sys.check_constraints chk
  391. JOIN sys.tables tab
  392. ON (chk.parent_object_id = tab.object_id)
  393. JOIN sys.columns col
  394. ON (chk.parent_object_id = col.object_id
  395. AND chk.parent_column_id = col.column_id)
  396. GO
  397.  
  398. --外键约束
  399. SELECT
  400. K_Table = FK.TABLE_NAME,
  401. FK_Column = CU.COLUMN_NAME,
  402. PK_Table = PK.TABLE_NAME,
  403. PK_Column = PT.COLUMN_NAME,
  404. Constraint_Name = C.CONSTRAINT_NAME
  405. FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
  406. INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
  407. INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
  408. INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
  409. INNER JOIN (
  410. SELECT i1.TABLE_NAME, i2.COLUMN_NAME
  411. FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
  412. INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
  413. WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
  414. ) PT ON PT.TABLE_NAME = PK.TABLE_NAME
  415. ---- optional:
  416. GO
  417.  
  418. select
  419. t.name as TableWithForeignKey,
  420. fk.constraint_column_id as FK_PartNo, c.
  421. name as ForeignKeyColumn
  422. from
  423. sys.foreign_key_columns as fk
  424. inner join
  425. sys.tables as t on fk.parent_object_id = t.object_id
  426. inner join
  427. sys.columns as c on fk.parent_object_id = c.object_id and fk.parent_column_id = c.column_id
  428. where
  429. fk.referenced_object_id = (select object_id
  430. from sys.tables
  431. where name = 'SendMail')
  432. order by
  433. TableWithForeignKey, FK_PartNo
  434. GO
  435.  
  436. SELECT obj.name AS FK_NAME,
  437. sch.name AS [schema_name],
  438. tab1.name AS [table],
  439. col1.name AS [column],
  440. tab2.name AS [referenced_table],
  441. col2.name AS [referenced_column]
  442. FROM sys.foreign_key_columns fkc
  443. INNER JOIN sys.objects obj
  444. ON obj.object_id = fkc.constraint_object_id
  445. INNER JOIN sys.tables tab1
  446. ON tab1.object_id = fkc.parent_object_id
  447. INNER JOIN sys.schemas sch
  448. ON tab1.schema_id = sch.schema_id
  449. INNER JOIN sys.columns col1
  450. ON col1.column_id = parent_column_id AND col1.object_id = tab1.object_id
  451. INNER JOIN sys.tables tab2
  452. ON tab2.object_id = fkc.referenced_object_id
  453. INNER JOIN sys.columns col2
  454. ON col2.column_id = referenced_column_id AND col2.object_id = tab2.object_id
  455. GO
  456.  
  457. SELECT PKTABLE_QUALIFIER = CONVERT(SYSNAME,DB_NAME()),
  458. PKTABLE_OWNER = CONVERT(SYSNAME,SCHEMA_NAME(O1.SCHEMA_ID)),
  459. PKTABLE_NAME = CONVERT(SYSNAME,O1.NAME),
  460. PKCOLUMN_NAME = CONVERT(SYSNAME,C1.NAME),
  461. FKTABLE_QUALIFIER = CONVERT(SYSNAME,DB_NAME()),
  462. FKTABLE_OWNER = CONVERT(SYSNAME,SCHEMA_NAME(O2.SCHEMA_ID)),
  463. FKTABLE_NAME = CONVERT(SYSNAME,O2.NAME),
  464. FKCOLUMN_NAME = CONVERT(SYSNAME,C2.NAME),
  465. -- Force the column to be non-nullable (see SQL BU 325751)
  466. --KEY_SEQ = isnull(convert(smallint,k.constraint_column_id), sysconv(smallint,0)),
  467. UPDATE_RULE = CONVERT(SMALLINT,CASE OBJECTPROPERTY(F.OBJECT_ID,'CnstIsUpdateCascade')
  468. WHEN 1 THEN 0
  469. ELSE 1
  470. END),
  471. DELETE_RULE = CONVERT(SMALLINT,CASE OBJECTPROPERTY(F.OBJECT_ID,'CnstIsDeleteCascade')
  472. WHEN 1 THEN 0
  473. ELSE 1
  474. END),
  475. FK_NAME = CONVERT(SYSNAME,OBJECT_NAME(F.OBJECT_ID)),
  476. PK_NAME = CONVERT(SYSNAME,I.NAME),
  477. DEFERRABILITY = CONVERT(SMALLINT,7) -- SQL_NOT_DEFERRABLE
  478. FROM SYS.ALL_OBJECTS O1,
  479. SYS.ALL_OBJECTS O2,
  480. SYS.ALL_COLUMNS C1,
  481. SYS.ALL_COLUMNS C2,
  482. SYS.FOREIGN_KEYS F
  483. INNER JOIN SYS.FOREIGN_KEY_COLUMNS K
  484. ON (K.CONSTRAINT_OBJECT_ID = F.OBJECT_ID)
  485. INNER JOIN SYS.INDEXES I
  486. ON (F.REFERENCED_OBJECT_ID = I.OBJECT_ID
  487. AND F.KEY_INDEX_ID = I.INDEX_ID)
  488. WHERE O1.OBJECT_ID = F.REFERENCED_OBJECT_ID
  489. AND O2.OBJECT_ID = F.PARENT_OBJECT_ID
  490. AND C1.OBJECT_ID = F.REFERENCED_OBJECT_ID
  491. AND C2.OBJECT_ID = F.PARENT_OBJECT_ID
  492. AND C1.COLUMN_ID = K.REFERENCED_COLUMN_ID
  493. AND C2.COLUMN_ID = K.PARENT_COLUMN_ID
  494. GO
  495.  
  496. SELECT
  497. OBJECT_NAME(parent_object_id) 'Parent table',
  498. c.NAME 'Parent column name',
  499. OBJECT_NAME(referenced_object_id) 'Referenced table',
  500. cref.NAME 'Referenced column name'
  501. FROM
  502. sys.foreign_key_columns fkc
  503. INNER JOIN
  504. sys.columns c
  505. ON fkc.parent_column_id = c.column_id
  506. AND fkc.parent_object_id = c.object_id
  507. INNER JOIN
  508. sys.columns cref
  509. ON fkc.referenced_column_id = cref.column_id
  510. AND fkc.referenced_object_id = cref.object_id where OBJECT_NAME(parent_object_id) = 'SendMail'
  511. GO
  512.  
  513. /* CAST IS DONE , SO THAT OUTPUT INTEXT FILE REMAINS WITH SCREEN LIMIT*/
  514. WITH ALL_KEYS_IN_TABLE (CONSTRAINT_NAME,CONSTRAINT_TYPE,PARENT_TABLE_NAME,PARENT_COL_NAME,PARENT_COL_NAME_DATA_TYPE,REFERENCE_TABLE_NAME,REFERENCE_COL_NAME)
  515. AS
  516. (
  517. SELECT CONSTRAINT_NAME= CAST (PKnUKEY.name AS VARCHAR(30)) ,
  518. CONSTRAINT_TYPE=CAST (PKnUKEY.type_desc AS VARCHAR(30)) ,
  519. PARENT_TABLE_NAME=CAST (PKnUTable.name AS VARCHAR(30)) ,
  520. PARENT_COL_NAME=CAST ( PKnUKEYCol.name AS VARCHAR(30)) ,
  521. PARENT_COL_NAME_DATA_TYPE= oParentColDtl.DATA_TYPE,
  522. REFERENCE_TABLE_NAME='' ,
  523. REFERENCE_COL_NAME=''
  524.  
  525. FROM sys.key_constraints as PKnUKEY
  526. INNER JOIN sys.tables as PKnUTable
  527. ON PKnUTable.object_id = PKnUKEY.parent_object_id
  528. INNER JOIN sys.index_columns as PKnUColIdx
  529. ON PKnUColIdx.object_id = PKnUTable.object_id
  530. AND PKnUColIdx.index_id = PKnUKEY.unique_index_id
  531. INNER JOIN sys.columns as PKnUKEYCol
  532. ON PKnUKEYCol.object_id = PKnUTable.object_id
  533. AND PKnUKEYCol.column_id = PKnUColIdx.column_id
  534. INNER JOIN INFORMATION_SCHEMA.COLUMNS oParentColDtl
  535. ON oParentColDtl.TABLE_NAME=PKnUTable.name
  536. AND oParentColDtl.COLUMN_NAME=PKnUKEYCol.name
  537. UNION ALL
  538. SELECT CONSTRAINT_NAME= CAST (oConstraint.name AS VARCHAR(30)) ,
  539. CONSTRAINT_TYPE='FK',
  540. PARENT_TABLE_NAME=CAST (oParent.name AS VARCHAR(30)) ,
  541. PARENT_COL_NAME=CAST ( oParentCol.name AS VARCHAR(30)) ,
  542. PARENT_COL_NAME_DATA_TYPE= oParentColDtl.DATA_TYPE,
  543. REFERENCE_TABLE_NAME=CAST ( oReference.name AS VARCHAR(30)) ,
  544. REFERENCE_COL_NAME=CAST (oReferenceCol.name AS VARCHAR(30))
  545. FROM sys.foreign_key_columns FKC
  546. INNER JOIN sys.sysobjects oConstraint
  547. ON FKC.constraint_object_id=oConstraint.id
  548. INNER JOIN sys.sysobjects oParent
  549. ON FKC.parent_object_id=oParent.id
  550. INNER JOIN sys.all_columns oParentCol
  551. ON FKC.parent_object_id=oParentCol.object_id /* ID of the object to which this column belongs.*/
  552. AND FKC.parent_column_id=oParentCol.column_id/* ID of the column. Is unique within the object.Column IDs might not be sequential.*/
  553. INNER JOIN sys.sysobjects oReference
  554. ON FKC.referenced_object_id=oReference.id
  555. INNER JOIN INFORMATION_SCHEMA.COLUMNS oParentColDtl
  556. ON oParentColDtl.TABLE_NAME=oParent.name
  557. AND oParentColDtl.COLUMN_NAME=oParentCol.name
  558. INNER JOIN sys.all_columns oReferenceCol
  559. ON FKC.referenced_object_id=oReferenceCol.object_id /* ID of the object to which this column belongs.*/
  560. AND FKC.referenced_column_id=oReferenceCol.column_id/* ID of the column. Is unique within the object.Column IDs might not be sequential.*/
  561.  
  562. )
  563.  
  564. select * from ALL_KEYS_IN_TABLE
  565. where
  566. PARENT_TABLE_NAME in ('SendMail')
  567. or REFERENCE_TABLE_NAME in ('SendMail')
  568. ORDER BY PARENT_TABLE_NAME,CONSTRAINT_NAME;
  569. GO
  570.  
  571. SELECT
  572. f.name AS 'Name of Foreign Key',
  573. OBJECT_NAME(f.parent_object_id) AS 'Table name',
  574. COL_NAME(fc.parent_object_id,fc.parent_column_id) AS 'Fieldname',
  575. OBJECT_NAME(t.object_id) AS 'References Table name',
  576. COL_NAME(t.object_id,fc.referenced_column_id) AS 'References fieldname',
  577.  
  578. 'ALTER TABLE [' + OBJECT_NAME(f.parent_object_id) + '] DROP CONSTRAINT [' + f.name + ']' AS 'Delete foreign key',
  579.  
  580. 'ALTER TABLE [' + OBJECT_NAME(f.parent_object_id) + '] WITH NOCHECK ADD CONSTRAINT [' +
  581. f.name + '] FOREIGN KEY([' + COL_NAME(fc.parent_object_id,fc.parent_column_id) + ']) REFERENCES ' +
  582. '[' + OBJECT_NAME(t.object_id) + '] ([' +
  583. COL_NAME(t.object_id,fc.referenced_column_id) + '])' AS 'Create foreign key'
  584. -- , delete_referential_action_desc AS 'UsesCascadeDelete'
  585. FROM sys.foreign_keys AS f,
  586. sys.foreign_key_columns AS fc,
  587. sys.tables t
  588. WHERE f.OBJECT_ID = fc.constraint_object_id
  589. AND t.OBJECT_ID = fc.referenced_object_id
  590. AND OBJECT_NAME(t.object_id) = 'SendMail' -- Just show the FKs which reference a particular table
  591. ORDER BY 2
  592. GO

 

  1. ---PRIMARY 主鍵
  2. SELECT tab.name AS 'TableName', idx.name AS 'PrimaryName', col.name AS 'FieldName',c.name AS 'TypeName',col.max_length AS 'Length',b.value AS 'TableDescription',col.is_nullable as 'IS_NULL' FROM sys.indexes idx,sys.index_columns idxCol,sys.tables tab,sys.columns col,sys.systypes AS c,sys.extended_properties AS b
  3. WHERE idx.object_id = idxCol.object_id AND idx.index_id = idxCol.index_id AND idx.is_primary_key = 1 AND idx.object_id = tab.object_id AND idx.object_id = col.object_id AND idxCol.column_id = col.column_id AND col.user_type_id=c.xusertype AND tab.object_id=b.major_id AND b.minor_id=0
  4. GO
  5.  
  6. ---外键约束 FieldDescription
  7. select oSub.name AS SubTableName, dbo.F_GetDescriptionTableName(osub.object_id) AS 'SubTableDescription', fk.name AS ForeignName, SubCol.name AS SubFieldName, oMain.name AS MainTableName, dbo.F_GetDescriptionTableName(oMain.object_id) AS 'MainTableDescription', MainCol.name AS MainFieldName,c.name AS 'FieldType',SubCol.max_length AS 'FieldLength'
  8. from sys.foreign_keys fk,sys.all_objects oSub, sys.all_objects oMain, sys.foreign_key_columns fkCols ,sys.columns SubCol,sys.columns MainCol,sys.systypes AS c,sys.extended_properties AS b
  9. WHERE fk.parent_object_id = oSub.object_id AND fk.referenced_object_id = oMain.object_id AND fk.object_id = fkCols.constraint_object_id AND oSub.object_id = SubCol.object_id AND fkCols.parent_column_id = SubCol.column_id
  10. AND oMain.object_id = MainCol.object_id AND fkCols.referenced_column_id = MainCol.column_id AND SubCol.object_id=b.major_id AND SubCol.user_type_id=c.xusertype AND b.minor_id=0 AND oMain.name='SendReceiveMailHost'

  

备注描述另种写法:

  1. --增加表的描述
  2. EXEC sys.sp_addextendedproperty @name = N'MS_Description', @value = N'母件物料表', @level0type = N'SCHEMA', @level0name = 'dbo', @level1type = N'TABLE', @level1name = 'MMBOMPairProduct';
  3. GO
  4.  
  5. EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'母件物料编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MMBOMPairProduct', @level2type=N'COLUMN',@level2name=N'PMaterielNo'
  6. GO
  7. EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'父BOM版次' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MMBOMPairProduct', @level2type=N'COLUMN',@level2name=N'PVersion'
  8. GO
  9. EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'副产品物料编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MMBOMPairProduct', @level2type=N'COLUMN',@level2name=N'CMaterielNo'
  10. GO
  11. EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'用量' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MMBOMPairProduct', @level2type=N'COLUMN',@level2name=N'Dosage'
  12. GO
  13. EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'说明' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'MMBOMPairProduct', @level2type=N'COLUMN',@level2name=N'Remark'
  14. GO

 

  1. --1第一种方法
  2. --增加表描述
  3. EXECUTE sp_addextendedproperty N'MS_Description', '客户本人照片表', N'user', N'dbo', N'table', N'UserPhoto', NULL, NULL
  4. GO
  5. --删除
  6. EXECUTE sp_dropextendedproperty N'MS_Description', N'user', N'dbo', N'table', N'UserPhoto', DEFAULT, DEFAULT
  7. GO
  8.  
  9. --为字段添加描述信息
  10. EXECUTE sp_addextendedproperty N'MS_Description', '自动增长ID号', N'user', N'dbo', N'table', N'UserPhoto', N'column', N'UserId'
  11. --修改
  12. EXECUTE sp_updateextendedproperty N'MS_Description', '自动增长ID号', N'user', N'dbo', N'table', N'UserPhoto', N'column', N'UserId'
  13.  
  14. EXECUTE sp_addextendedproperty N'MS_Description', '客户ID,外键', N'user', N'dbo', N'table', N'UserPhoto', N'column', N'UserToId'
  15. EXECUTE sp_addextendedproperty N'MS_Description', '相片名称', N'user', N'dbo', N'table', N'UserPhoto', N'column', N'UserName'
  16. EXECUTE sp_addextendedproperty N'MS_Description', '相片', N'user', N'dbo', N'table', N'UserPhoto', N'column', N'UserImage'
  17. EXECUTE sp_addextendedproperty N'MS_Description', '生成日期', N'user', N'dbo', N'table', N'UserPhoto', N'column', N'UserDate'
  18. GO
  19.  
  20. SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'TABLE', N'UserPhoto', default, default)
  21. GO
  22.  
  23. SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'TABLE', N'UserPhoto','column', default)
  24. GO
  25.  
  26. --第二种方法
  27. --sp_updateextendedproperty
  28. --增加表描述
  29. EXEC sys.sp_addextendedproperty @name = N'MS_Description', @value = N'客户本人照片表', @level0type = N'SCHEMA', @level0name = 'dbo', @level1type = N'TABLE', @level1name = 'UserPhoto';
  30. GO
  31.  
  32. --刪除表描述
  33. EXEC sp_dropextendedproperty @name = N'MS_DescriptionExample', @level0type = N'SCHEMA', @level0name = 'dbo', @level1type = N'TABLE', @level1name = 'UserPhoto';
  34. GO
  35.  
  36. EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单据唯一编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'UserPhoto', @level2type=N'COLUMN',@level2name=N'UserId'
  37. GO
  38. --修改
  39. EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=N'单据唯一编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'UserPhoto', @level2type=N'COLUMN',@level2name=N'UserId'
  40. GO
  41.  
  42. EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单据明细内部编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'UserPhoto', @level2type=N'COLUMN',@level2name=N'UserToId'
  43. GO
  44. EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单据唯一编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'UserPhoto', @level2type=N'COLUMN',@level2name=N'UserName'
  45. GO
  46. EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单据明细内部编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'UserPhoto', @level2type=N'COLUMN',@level2name=N'UserImage'
  47. GO
  48. EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单据唯一编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'UserPhoto', @level2type=N'COLUMN',@level2name=N'UserDate'
  49. GO

  

 

 

sql: Query to Display Foreign Key Relationships and Name of the Constraint for Each Table in Database的更多相关文章

  1. sqlalchemy.exc.NoForeignKeysError:Can't find any foreign key relationships between

    这句话的意思是,两张表之间的外键找不到,首先看看外键设置正确了没,如果外键没问题,看看是不是_tablename_设置了没,就是再model中,定义类的时候,表格名称要_tablename_设置一下, ...

  2. SQL PRIMARY KEY,SQL FOREIGN KEY

    A primary key is defined as a column or a group of column that their value are always be unique. Nor ...

  3. SQL Server 2008 R2——TRUNCATE TABLE 无法截断表 该表正由 FOREIGN KEY 约束引用

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

  4. Foreign key (referential) constraints on DB2 LUW v105

    oreign key constraints (also known as referential constraints or referential integrity constraints) ...

  5. How do I add a Foreign Key Field to a ModelForm in Django?

    What I would like to do is to display a single form that lets the user: Enter a document title (from ...

  6. admin添加用户时报错:(1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxonline`.`django_admin_l

    在stackoverflow找到答案: DATABASES = { 'default': { ... 'OPTIONS': { "init_command": "SET ...

  7. MySQL Foreign Key

    ntroduction to MySQL foreign key A foreign key is a field in a table that matches another field of a ...

  8. mysql foreign key 外键

    ALTER TABLE `fd_rel_customer_doctor` ADD CONSTRAINT `FK_fd_rel_customer_doctor_1` FOREIGN KEY (`CUST ...

  9. sqlserver truncate清空表时候,无法删除 'B表',因为该表正由一个 FOREIGN KEY 约束引用。

    外键: 查询:select object_name(a.parent_object_id) 'tables'  from sys.foreign_keys a  where a.referenced_ ...

随机推荐

  1. HAProxy出现"远程主机强迫关闭了一个现有的连接 " 的错误及解决

    使用haproxy作为sql server 的负载均衡器. 使用了文档中的示例配置项: timeout client 50s        timeout server 50s 采用这个配置项,有时会 ...

  2. 2.第一个ASP.NET MVC 5.0应用程序

    大家好,上一篇对ASP.NET MVC 有了一个基本的认识之后,这一篇,我们来看下怎么从头到尾创建一个ASP.NET MVC 应用程序吧.[PS:返回上一篇文章:1.开始学习ASP.NET MVC] ...

  3. create-react-app脚手架中配置webpack的方法

    概述 create-react-app脚手架中的react-scripts能够(1)帮我们自动下载需要的webpack依赖:(2)自己写了一个nodejs服务端脚本代码:(3)使用express的Ht ...

  4. python中除法的几种类型

    传统除法:直接后缀小数点,同样结果是和最大的小数点对齐 >>> 1/2 0 >>> 1.0/2 0.5 >>> 1/2.0 0.5 >> ...

  5. Spring Boot发布将jar包转为war包。

    Spring Boot是支持发布jar包和war的,但它推荐的是使用jar形式发布.使用jar包比较方便,但如果是频繁修改更新的项目,需要打补丁包,那这么大的jar包上传都是问题.所以,jar包不一定 ...

  6. redis lru实现策略

    转载自http://blog.chinaunix.net/uid-20708886-id-5753422.html 在使用redis作为缓存的场景下,内存淘汰策略决定的redis的内存使用效率.在大部 ...

  7. Python常用模块time & datetime &random 模块

    时间模块前言 在Python中,与时间处理有关的模块就包括:time,datetime 一.在Python中,通常有这几种方式来表示时间: 时间戳 格式化的时间字符串 元组(struct_time)共 ...

  8. Xamarin.Android 调用手机拍照功能

    最近开发Android遇到了调用本地拍照功能,于是在网上搜了一些方法,加上自己理解的注释,在这儿记录下来省的下次用时候找不到,同事也给正在寻找调用本地拍照功能的小伙伴一些帮助~ 实现思路:首先加载-- ...

  9. 从零开始学 Web 之 移动Web(二)JD移动端网页,移动触屏事件

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  10. tensorflow 导入gfile模型文件

    with tf.gfile.GFile(os.path.join(self.model_dir, 'ner_model.pb'), 'rb') as f: graph_def = self.tf.Gr ...