1. 程式人生 > >如何利用SQL建立與修改列的說明資訊(備註資訊)詳解

如何利用SQL建立與修改列的說明資訊(備註資訊)詳解

 相信很多朋友對利用SQL建立表已經很熟悉了,但我們發現在建立表的同時不能像新增預設值或者主鍵一樣為列加上說明資訊,所以我們經常是建立表後再到表的視覺化設計器中為列加上說明,這樣操作起來就相當麻煩了,本篇我們主要討論如何利用SQL在建立表時為列加上說明資訊。

我們先建立一個測試表:

if exists(select 1 from sys.tables where object_id=object_id('test'))
begin
drop table test
end
create table test
(
col1 varchar(50),
col2 varchar(50)
)

這個我們已經很熟悉了,那麼怎麼為列col1及col2加上說明資訊呢?
這就要用到系統儲存過程sp_addextendedproperty。
在新增之前我們先看一下sp_addextendedproperty的語法:

sp_addextendedproperty
  [ @name = ] { 'property_name' }
  [ , [ @value = ] { 'value' } 
  [ , [ @level0type = ] { 'level0_object_type' } 
  , [ @level0name = ] { 'level0_object_name' } 
  [ , [ @level1type = ] { 'level1_object_type' } 
  , [ @level1name = ] { 'level1_object_name' } 
  [ , [ @level2type = ] { 'level2_object_type' } 
  , [ @level2name = ] { 'level2_object_name' } 
  ] 
  ]
  ] 
  ] 


該儲存過程一共有8個引數,估計初學者一看就暈了,不要著急,我們可以通過例項來理解,下面我們先利用sp_addextendedproperty為col1列加上說明:

execute sp_addextendedproperty N'MS_Description',N'這是測試列1',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col1'


上面就是為列col1加上說明的SQL命令,來理解一下:
雖然sp_addextendedproperty有8個引數,但我們可以把這個8個引數理解為4對,其實看引數名我們也可以猜出大概了:
@name與@value為一對
@level0type與@level0name為一對
@level1type與@level1name為一對
@level2type與@level2name為一對

那麼這4對引數分別代表什麼呢?
1,@name與@value
@name:指定我們是要為列新增什麼資訊,比如我們要為列新增擴充套件資訊,那麼@name就等於'Caption',本篇是要為列新增說明資訊,所以@name等於'MS_Description'
@value:指定與@name關聯的值,本篇也就是列的具體說明。

2,@level0type與@level0name
@level0type:指定我們要修改的列的表所於那個資料庫架構,所以它等於'SCHEMA',有些網上教程中會說它也可以等於'user',但在sql server的未來版本中,將刪除'user',所以推薦大家用'SCHEMA'
@level0name:指定我們要修改的表所在架構的名稱

3,@level1type與@level1name
@level1type:指明我們要修改的列所屬物件是表,還是檢視等。本篇是修改表中的列,所以為'table',
@@level1name: 指明要修改的列所屬表的名稱

4,@level2type與@level2name
@level2type:指明我們要修改的物件是列,還是主鍵,還是約束等。本篇修改的是列,所以為'column'
@level2name:指明要修改列的列名

到此,我們應該瞭解sp_addextendedproperty中各引數的意思了,完整的SQL命令如下:

if exists(select 1 from sys.tables where object_id=object_id('test'))
begin
drop table test
end
create table test
(
col1 varchar(50),
col2 varchar(50)
)

execute sp_addextendedproperty N'MS_Description',N'這是測試列1',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col1'

execute sp_addextendedproperty N'MS_Description',N'這是測試列2',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col2'



執行命令後通過如下查詢語句來驗證我們的結果:

select B.Name,A.value from sys.extended_properties A 
inner join sys.columns B on A.major_id=B.object_id 
and A.minor_id=B.column_id
where A.major_id=object_id('test')


關於如何利用SQL語句查詢指定表的列說明資訊,請參看本站:
利用SQL語句查詢出指定表的所有擴充套件屬性(列說明)

執行,返回的結果如下:
Name value
col1 這是測試列1
col2 這是測試列2

建立表時同時為表中的列新增說明資訊我們已經完成了,那麼,我們要如何利用SQL來修改列的說明資訊呢?利用系統儲存過程sp_updateextendedproperty,它的用法和sp_addextendedproperty一樣,就不多加說明了,修改示例如下:

execute sp_updateextendedproperty N'MS_Description',N'這是修改後的測試列1',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col1'

execute sp_updateextendedproperty N'MS_Description',N'這是修改後的測試列2',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col2'


同樣利用上面的SQL語句查詢修改後的結果:
Name value
col1 這是修改後的測試列1
col2 這是修改後的測試列2

本文來源於:
http://www.lmwlove.com/ac/ID666

相關推薦

如何利用SQL建立修改的說明資訊(備註資訊)

 相信很多朋友對利用SQL建立表已經很熟悉了,但我們發現在建立表的同時不能像新增預設值或者主鍵一樣為列加上說明資訊,所以我們經常是建立表後再到表的視覺化設計器中為列加上說明,這樣操作起來就相當麻煩了,本篇我們主要討論如何利用SQL在建立表時為列加上說明資訊。 我們先建立一個

Asp.Net MVC WebAPI的建立前臺Jquery ajax後臺HttpClient呼叫 Asp.Net中對操作Sql Server 簡單處理的SqlDB類

1、什麼是WebApi,它有什麼用途?           Web API是一個比較寬泛的概念。這裡我們提到Web API特指ASP.NET MVC Web API。在新出的MVC中,增加了WebAPI,用於提供REST風格的WebService,新生成的W

MSSQL中刪除修改SQL語句

最近工作需要,需要刪除資料庫表中的某些列和對一些列進行更名,這個專案開發後期是很大的忌諱,把所有程式中相關欄位改了後,寫了以下SQL語句,對資料庫進行更新。 MSSQL中刪除表中某列的SQL語句:ALTER TABLE 表名 DROP COLUMN 欄位名; MSSQL中對錶

Laravel5.5 資料庫遷移:建立修改

資料庫遷移是資料庫的版本管理,要使用資料庫遷移,需要在.env檔案中連線好資料庫(不多說)。laravel本身已經存在user表和password_resets表的遷移了,因此,執行 php artisan migrate 便會在資料庫中建立好user表、passwo

使用T-SQL建立修改資料庫

原文出處:http://blog.jobbole.com/86718/ 一、使用Transact_SQL建立資料庫 Transact_SQL語法如下: 1 2 3 4 5 6 7 8

利用反射獲取修改private的屬性的值

fieldValue = The Private Value fieldValue = As you see,privateString 'value is changed! Exception in thread "main" java.lang.IllegalAccessException: Clas

資料更新、檢視的建立修改

一、實驗目的 1、學會使用INSERT、UPDATE、DELETE等SQL語句進行資料更新; 2、學會使用CREATE、DROP等SQL語句建立和刪除檢視。 二、實驗內容 1、在SQL Ser

資訊增益資訊增益率

熟悉決策樹演算法的人都知道ID3以及C4.5兩種演算法,當然也非常清楚資訊增益以及資訊增益率兩個概念。 資訊增益:節點M的資訊熵E1與其全部子節點資訊熵之和E2的差。 資訊增益率:節點資訊增益與節點分裂資訊度量的比值。 資訊增益是ID3演算法的基礎,資訊增益率是C4.5演算

SQL Server日期時間格式轉換字符串

dateadd access strong 分鐘 char 時間 詳解 var net 1、日期時間轉字符串 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVERT(

PHP利用二叉堆實現TopK-算法的方法

相對 baidu 文本文件 過時 border 數據 http pan set 前言 在以往工作或者面試的時候常會碰到一個問題,如何實現海量TopN,就是在一個非常大的結果集裏面快速找到最大的前10或前100個數,同時要保證 內存和速度的效率,我們可能第一個想法就是利用排序

達內-靜態路由浮動靜態路由-(配圖版)

達內-靜態路由與浮動靜態路由-(配圖詳解版)路由: 不同網段之間的通信,稱之為“路由”。實現: 路由設備:路由器,多層交換機本質: 通過查詢“路由表”實現“不同網段之間的路由功能”。路由器的工作原理: 1、路由器僅僅關心數據中的 “ 目標IP 地址” ; 2、路由器提取 目標IP

Linux使用Node.js建立訪問靜態網頁的服務實例

else r.js list 運行 pos 文件 content head 建立 Linux使用Node.js建立訪問靜態網頁的服務實例詳解一、安裝node.js運行所需要的環境。二、創建node目錄(/node/www),並在目錄下創建node.js服務文件server.

html 5 本地數據庫-- Web Sql Database核心方法openDatabase、transaction、executeSql

web 更新 數據庫 下載地址 最重要的 綠色 -- mysq sele Web SQL數據庫API實際上不是HTML5規範的組成部分,而是單獨的規範。它通過一套API來操縱客戶端的數據庫。Safari、Chrome、Firefox、Opera等主流瀏覽器都已經支持Web

資料結構演算法 -- 二叉樹鏈式((非)/遞迴遍歷,葉子個數,深度計算)

前言 PS:樹型結構是一種重要的非線性資料結構,教科書上一般都是樹與二叉樹,由此可見,樹和二叉樹是有區別和聯絡的,網上有人說二叉樹是樹的一種特殊形式,但經過查資料,樹和二叉樹沒有一個肯定的說法,但唯一可以肯定都是樹型結構。但是按照定義來看二叉樹並不是樹的一種特殊形式(下面解釋)。樹型資料結構的作

mysql基礎-資料庫連線、建立、刪除、選擇等基本操作(一)

一、通過cmd連結到資料庫 或者 彈出: 二、通過cmd建立與刪除database 2.1create database [databasename] ERROR 1007 (HY000): Can’t create database ‘mytest’; database exists 加上IF N

SQL Server中通用資料庫角色許可權的處理

SQL Server中通用資料庫角色許可權的處理詳解 前言 安全性是所有資料庫管理系統的一個重要特徵。理解安全性問題是理解資料庫管理系統安全性機制的前提。 最近和同事在做資料庫許可權清理的事情,主要是刪除一些賬號;取消一些賬號的較大的許可權等,例如,有一些有db_owner許可權,我們取消賬號的資料庫角

利用卷積神經網路進行手寫數字識別

import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data ‘’‘可分別用這兩個函式建立卷積核(kernel)與偏置(bias)’’’ #返回一個給定形狀的變數,並自動以截斷正態分佈

Linux(CentOS 7)命令模式安裝VMware Tools

本篇文章主要介紹瞭如何在Linux(CentOS 7)命令列模式安裝VMware Tools,具有一定的參考價值,感興趣的小夥伴們可以參考一下。 本例中為在Linux(以CentOS 7為例)安裝VMware Tools。 1.首先啟動CentOS 7,在

OSI七層TCP/IP五層網路架構

(1)OSI七層模型 OSI中的層 功能 TCP/IP協議族 應用層 檔案傳輸,電子郵件,檔案服務,虛擬終端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示層 資料格式化,程式碼轉換,資料加密 沒有協議 會話層 解除或建立與別的接點的聯絡 沒有協

推薦《LinuxShell命令及指令碼程式設計例項》附下載連結

本書較全面地介紹了LinuxShell的知識點,以Bash為基礎,從LinuxShell的起源開始,到Shell中常用的命令,然後講述了Shell指令碼程式設計的基礎知識和Shell的條件語句、迴圈語句、函式、正則表示式、Shell指令碼中的輸入處理、重定向和Shell管道及