SQL欄位常用型別

2021-04-08 18:31:21 字數 4655 閱讀 1787

一般的常用字段有下面幾種:

varchar

char

text

int**allint

tinyint

numeric

money

**allmoney

bitdatetime

不同的字段型別用來存放不同型別的資料。建立和使用表時,更你應該理解五種常用的字段型別:

字元型,文字型,數值型,邏輯性和日期型。

字元型資料

字元型資料非常有用。當你需要儲存短的字串資訊時,你總是要用到字元型資料。例如,你可以把從html

form的文字框中蒐集到的資訊放在字元型字段中。要建立乙個字段用來存放可變長度的字串資訊,你可以

使用表示式 varchar。考慮你前面建立的表guestbook:

create table guestbook (visitor varchar(40),comments text,entrydate datetime)

在這個例子中,欄位visitor的資料型別為varchar。注意跟在資料型別後面的括號中的數字。這個數字

指定了這個欄位所允許存放的字串的最大長度。在這個例子中,欄位visitor能存放的字串最長為四十個

字元。如果名字太長,字串會被截斷,只保留四十個字元。varchar型別可以儲存的字串最長為255個字元。

要儲存更長的字串資料,可以使用文字型資料(下一節中講述)。另一種字元型資料用來儲存固定長度的字元資料。

下面是乙個使用這種資料型別的例子:

create table guestbook (visitor char(40),comments text,entrydate datetime)

在這個例子中,欄位visitor被用來儲存四十個字元的固定長度字串。表示式char指定了這個字段應該是

固定長度的字串。varchar型和char型資料的這個差別是細微的,但是非常重要。假如你向乙個長度為四十

個字元的varchar型字段中輸入資料bill gates。當你以後從這個欄位中取出此資料時,你取出的資料其長度

為十個字元——字串bill gates的長度。現在假如你把字串輸入乙個長度為四十個字元的char型字段中,

那麼當你取出資料時,所取出的資料長度將是四十個字元。字串的後面會被附加多餘的空格。 當你建立自己

的站點時,你會發現使用varchar型字段要比char型字段方便的多。使用varchar型字段時,你不需要為剪掉

你資料中多餘的空格而操心。varchar型字段的另乙個突出的好處是它可以比char型字段占用更少的記憶體和硬

盤空間。當你的資料庫很大時,這種記憶體和磁碟空間的節省會變得非常重要。

文字型資料

字元型資料限制了字串的長度不能超過255個字元。而使用文字型資料,你可以存放超過二十億個字元的字元

串。當你需要儲存大串的字元時,應該使用文字型資料。這裡有乙個使用文字型資料的例子: 

create table guestbook (visitor varchar(40),comments text,entrydate datetime)

在這個例子中,欄位comments被用來存放訪問者對你站點的意見。注意文字型資料沒有長度,而上一節中所講

的字元型資料是有長度的。乙個文字型字段中的資料通常要麼為空,要麼很大。當你從html form的多行文字編

輯框(textarea)中收集資料時,你應該把收集的資訊儲存於文字型字段中。但是,無論何時,只要你能避免

使用文字型字段,你就應該不適用它。文字型字段既大且慢,濫用文字型字段會使伺服器速度變慢。文字型字段

還會吃掉大量的磁碟空間。

警告: 一旦你向文字型字段中輸入了任何資料(甚至是空值),就會有2k的空間被自動分配給該資料。

除非刪除該記錄,否則你無法收回這部分儲存空間。

數值型資料

sql sever支援許多種不同的數值型資料。你可以儲存整數、小數、和錢數。通常,當你需要在表中的存放數字

時,你要使用整型(int)資料。int型資料的表數範圍是從-2,147,483,647到2,147,483,647的整數。

下面是乙個如何使用int型資料的例子:

create table visitlog (visitor varchar(40),numvisits int)

這個表可以用來記錄你站點被訪問的次數。只要沒有人訪問你的站點超過2,147,483,647次,nubvisits字

段就可以儲存訪問次數。為了節省記憶體空間,你可以使**allint型資料。**allint 型資料可以儲存

從-32768到32768的整數。這種資料型別的使用方法與int型完全相同。最後,如果你實在需要節省空間,你可

以使用tinyint型資料。同樣,這種型別的使用方法也與int型相同,不同的是這種型別的字段只能儲存從0到

255的整數。tinyint型字段不能用來儲存負數。通常,為了節省空間,應該盡可能的使用最小的整型資料。

乙個tinyint型資料只占用乙個位元組;乙個int型資料占用四個位元組。這看起來似乎差別不大,但是在比較大的

表中,位元組數的增長是很快的。另一方面,一旦你已經建立了乙個字段,要修改它是很困難的。因此,為安全起

見,你應該**以下,乙個欄位所需要儲存的數值最大有可能是多大,然後選擇適當的資料型別。為了能對字段

所存放的資料有更多的控制,你可以使用numeric型資料來同時表示乙個數的整數部分和小數部分。numeric型

資料使你能表示非常大的數——比int型資料要大得多。乙個numeric型字段可以儲存從-1038到1038範圍內的

數。numeric型資料還使你能表示有小數部分的數。例如,你可以在numeric型字段中儲存小數3.14。當定義一

個numeric型字段時,你需要同時指定整數部分的大小和小數部分的大小。這裡有乙個使用這種資料型別的例子:

create table numeric_data (bignumber numeric(28,0), fraction numeric (5,4) )

當這個語句執行時,將建立乙個名為numeric_data的包含兩個欄位的表。欄位bignumber可以儲存直到28位的

整數。欄位fraction可以儲存有五位整數部分和四位小數部分的小數。乙個numeric型資料的整數部分最大只

能有28位,小數部分的位數必須小於或等於整數部分的位數,小數部分可以是零。 你可以使用int型或numeric型資料

來儲存錢數。但是,專門有另外兩種資料型別用於此目的。如果你希望你的網點能掙很多錢,你可以使用money型資料。

如果你的野心不大,你可以使用**allmoney型資料。money型資料可以儲存從-922,337,203,685,477.5808到

922,337,203,685,477.5807的錢數。如果你需要儲存比這還大的金額,你可以使用numeric型資料。

**allmoney型資料只能儲存從-214,748.3648到214,748.3647 的錢數。同樣,如果可以的話,你應該

用**allmoney型來代替money型資料,以節省空間。下面的例子顯示了如何使用這兩種表示錢的資料型別:

create table products (product varchar(40),price money, discount_price **allmoney)

這個表可以用來儲存商品的折扣和普通售價。欄位price 的資料型別是money,欄位discount_price的資料

型別是**allmoney。

儲存邏輯值

如果你使用核取方塊(checkbox)從網頁中蒐集資訊,你可以把此資訊儲存在bit型字段中。bit型字段只能取

兩個值:0或1。這裡有乙個如何使用這種欄位的例子:

create table opinion (visitor varchar(40),good bit)

這個表可以用來存放對你的網點進行民意調查所得的資訊。訪問者可以投票表示他們是否喜歡你的網點。如果

他們投yes,就在bit型字段中存入1。反之,如果他們投no,就在字段中存入0(在下一章裡,你將學會如何

計算投票)。當心,在你建立好乙個表之後,你不能向表中新增bit型字段。如果你打算在乙個表中包含bit型

字段,你必須在建立表時完成。

儲存日期何時間型

當你建立乙個網點時,你也許需要記錄在一段時間內的訪問者數量。為了能夠儲存日期和時間,

你需要使用datetime型資料,如下例所示:

create tabl visitorlog( visitor varchar (40), arrivaltime datetime , departuretime datetime)

這個表可以用來記錄訪問者進入和離開你網點的時間和日期。乙個datetime型的字段可以儲存的日期範圍

是從2023年1月1日第一毫秒到2023年12月31日最後一毫秒。如果你不需要覆蓋這麼大範圍的日期和時間,

你可以使用**alldatetime型資料。它與datetime型資料同樣使用,只不過它能表示的日期和時間範圍比datetime型資料小,

而且不如datetime型資料精確。乙個**alldatetime型的字段能夠儲存從2023年1月1日到2023年6月6日的日期,

它只能精確到秒。datetime型字段在你輸入日期和時間之前並不包含實際的資料,認識這一點是重要的。

在下一章,你將學習怎樣使用大量的sql函式來讀取和操作日期和時間(參見下面的「預設值」一節)。

你也以在vbscript和jscript 中使用日期和時間函式來向乙個datetime型字段中輸入日期和時間。

SQL取字段型別

存於每乙個資料庫的syscolumns表裡面的name就是列名,xtype就是資料型別,但是這個xtype是數字的,下面是數字和資料型別對應的關係 xtype 34 image xtype 35 text xtype 36 uniqueidentifier xtype 48 tinyint xtyp...

mysql欄位新增 型別修改 字段刪除sql語句

本文介紹產品上線資料庫更新常用sql語句,包括新增修改字段設定型別 長度 預設值 備註等操作,後續會持續更新alter table test add column create by varchar 10 not null default system comment 建立者 after id al...

SQL比較兩表字段和字段型別

業務需要把tb delete kysubproject表資料恢復到tb kysubproject,但提示錯誤,錯誤原因是兩表字段型別存在不一致 insert into tb kysubproject select from tb delete kysubproject where tb delete...