SQL基礎 字段屬性

2021-04-01 11:39:37 字數 3135 閱讀 8362

上一節介紹了如何建立包含不同型別欄位的表。在這一節中,你將學會如何使用欄位的三個屬性。這些屬性允許你控制空值,預設值和標識值。

允許和禁止空值

大多數字段可以接受空值(null)。當乙個字段接受了空值後,如果你不改變它,它將一直保持空值。空值(null)和零是不同的,嚴格的說,空值表示沒有任何值。

為了允許乙個字段接受空值,你要在字段定義的後面使用表示式null。例如,下面的表中兩個欄位都允許接受空值:

create table empty (empty1 char (40) null,empty2 int null(

注意:bit型資料不能是空值。乙個這種型別的字段必須取0或者1。

有時你需要禁止乙個字段使用空值。例如,假設有乙個表儲存著信用卡號碼和信用卡有效日期,你不會希望有人輸入乙個信用卡號碼但不輸入有效日期。為了強制兩個欄位都輸入資料,你可以用下面的方法建立這個表:

createtable creditcards (creditcard_number char(20) not null,

creditcard_expiredatetimenot null)

注意字段定義的後面跟有表示式not null。通過包含表示式not null,你可以禁止任何人只在乙個欄位中插入資料,而不輸入另乙個欄位的資料。

你將會發現,在你建設自己的網點過程中,這種禁止空值的能力是非常有用的。如果你指定乙個字段不能接受空值,那麼當你試圖輸入乙個空值時,會有錯誤警告。這些錯誤警告可以為程式除錯提供有價值的線索。

預設值為了在建立乙個表時指定預設值,你可以使用表示式default。請看下面這個在建立表時使用預設值的例子:

create table addresses (street varchar(60)null,

city varchar(40) null,

state varchar(20) null

zipvarchar(20) null,

country varchar(30) default

『usa』)

在這個例子中,欄位country的預設值被指定為美國。注意單引號的使用,引號指明這是字元型資料。為了給非字元型的字段指定預設值,不要把該值擴在引號中:

create table orders(pricemoney default $38.00,

quantity int default 50,

entrydate datetime default getdate())

在這個create table語句中,每個欄位都指定了乙個預設值。注意datetime型字段entrydate所指定的預設值,該預設值是函式getdate()的返回值,該函式返回當前的日期和時間。

標識字段

每個表可以有乙個也只能有乙個標識字段。乙個標識欄位是唯一標識表中每條記錄的特殊字段。例如,資料庫pubs中的表jobs包含了乙個唯一標識每個工作標識字段:

job_idjob_desc

…………………………………………………………….1

new hire job not specified

2chief executive officer

3bushness operations manager

4chief financial officier

5publisher

欄位job_id為每個工作提供了唯一的乙個數字。如果你決定增加乙個新工作,新增記錄的job_id欄位會被自動賦給乙個新的唯一值。

為了建立乙個標識字段,你只需在字段定義後面加上表示式identity即可。你只能把numeric型或int型字段設為標識字段,這裡有乙個例子:

create table visitorid (theid nuberic(18) identity,name varchar(40))

這個語句所建立的表包含乙個名為theid的標識字段。每當乙個新的訪問者名字新增到這個表中時,這個欄位就被自動賦給乙個新值。你可以用這個表為你的站點的每乙個使用者提供唯一標識。

技巧:建立乙個標示欄位時,注意使用足夠大的資料型別。例如你使用tinyint型資料,那麼你只能向表中新增255個記錄。如果你預計乙個表可能會變得很大,你應該使用numeric型資料。

標識欄位的存在會使你想嘗試許多不可能的事情。例如,你也許想利用標識欄位來對記錄進行基於它們在表中位置的運算。你應該拋棄這種意圖。每個記錄的標識欄位的值是互不相同的,但是,這並不禁止乙個標識欄位的標識數字之間存在間隔。例如,你永遠不要試圖利用乙個表的標識欄位來取出表中的前十個記錄。這種操作會導致失敗,比如說6號記錄和7號記錄根本不存在。

使用sql事務管理器建立新錶

你可以使用前面幾節所講的方法建立新錶。但是,使用事務管理器建立新錶會更容易。這一節介紹如何使用這個程式建立新錶。

從工作列的sql sever程式組中選擇sql enterprise manager,啟動該程式,你會看到如圖10.4所示的視窗。瀏覽服務管理器視窗中的樹形結構,選擇名為database的資料夾。開啟資料夾database後,選擇你在第三章中所建立的資料庫。

注意:如果你還沒有建立自己的資料庫,回到第三章建立它。你決不要向master,tempdb或任何其它系統資料庫中新增資料。

在選擇了資料庫之後,你會看到乙個名為group/users的資料夾和乙個名為objects的資料夾。開啟資料夾objects,你會看到許多資料夾,其中乙個名為tables。用右鍵單擊資料夾tables並選擇new table,就會出現如圖10.5所示的視窗。

你可以使用managertables視窗來建立乙個新錶。manager tables視窗有7個列:key,column,name,datatype,size,nulls和default。manager tables視窗中的每一行標明表中乙個欄位的資訊。

要建立乙個新錶,你至少要輸入一行資訊。在名為columnname的列下面鍵入mycolumn。下一步,選擇datatype列,並從下拉列表中選擇char。當你在這兩個列中輸入資訊後,視窗將是如圖10.6所示的樣子。

你已經建立了乙個只有乙個欄位的簡單的表。單擊儲存按扭儲存這個新錶。當要求你輸入新錶的名字時,輸入mytable並單擊ok。現在這個表已經儲存到了你的資料庫中。

如果你開啟服務管理器視窗中的資料夾tables,你會看到你所建立的新錶被列出。你可以雙擊該錶的圖表來編輯它,這時manager tables視窗會重新出現,你可以增加新的字段並重新儲存。

用sql事務管理器可以做的工作,你都可以用sql語句來實現。但是,事務管理器使得建表過程變得更加簡單。

查詢表字段屬性資訊SQL

select 表名 case when a.colorder 1 then d.name else end,表說明 case when a.colorder 1 then isnull f.value,else end,字段序號 a.colorder,欄位名 a.name,標識 case when ...

C 字段,屬性和屬性封裝字段

c 類成員包括 字段,屬性和方法。對於日常對於乙個類我們新增成員時會有幾種方法。如對於乙個person 類,我們對於其中乙個成員 性別 gender 進行定義,可以寫成 1,public string gender 2,public string gender 3,private string ge...

C 物件導向基礎之欄位屬性

一 訪問修飾符 1.什麼是訪問修飾符?訪問修飾符,又稱許可權修飾符。目前我們的類中只有字段,通過這個類例項化出來的的物件,這個物件是可以直接訪問到相應的字段的,因為欄位的訪問許可權是 public。類是乙個模具,物件是使用這個模具製作出來的乙個具體的物體。2.public 與 private pub...