A. sql中欄位長度的問題
同意樓上的說法,能用的情況下,盡量小點..
如果20就夠用的話,你把它設定為100,編譯系統就要為它預留長度為100的空間,會造成內存空間的浪費..
B. SQL資料庫中Numeric(10,2)是什麼意思
SQL資料庫中Numeric(10,2)是指欄位是數值型,Numeric(10,2)表示總位數為10,小數點後為2位的數,也就是說這個欄位的整數位最大是8位。
SQL中的五種數據類型:字元型,文本型,數值型,邏輯型和日期型
numeric(p,s)p 為精度(有效位),表示可儲存數值的最大位數,小數點左右兩側都包括在內,默認最大位為38 位;s為小數位數,標識小數點後 面所能儲存的最大位數,默認最小位為0位。
(2)sql長度為空擴展閱讀:
以下為其它SQL中的欄位的屬性:
bit 0或1的整型數字
int 從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數字
smallint 從-2^15(-32,768)到2^15(32,767)的整型數字
tinyint 從0到255的整型數字
decimal 從-10^38到10^38-1的定精度與有效位數的數字
C. 用T_SQL語句在學生表中添加新列電子郵件,類型為字元型,長度為二十個字元,允許為空
alter table 學生表 add email char(20)
D. SQL建立常用約束,要最簡最節省空間的,試以舉例說明(如:時間,數據大小,長度,等等)
其實很簡單,你就知道一下幾點就可以了,在以後的工作中就足夠了。
1,主鍵非空,也就是說被設定為主鍵的列在插入數據的時候就不能為空,如果為空SQL就會報錯。
2,主鍵是唯一的,一個表通過一個主鍵可以確定一條記錄,有一條記錄的主鍵是SF110如果你再向裡面插入SF110的記錄SQL就會報錯。
3,有時可以用兩個欄位來建立主鍵,這叫聯合主鍵。這種情況出現在當一個欄位無法唯一的時候要藉助另一個欄位來確保唯一性的時候。
答復:
主鍵一般都是挑選能夠唯一表示一條記錄的欄位來做,你比如說現在有一個「學生表」裡面有「學生編號」「學生姓名」「學生年齡」等
根據原則肯定要以「學生編號」為主鍵。
還有一個原則就是不經常被修改的欄位也可以做主鍵。「學生編號」在對表操作的時候肯定不會被修改所以也比較符合。
主鍵沒有什麼隨便不隨便設,一個表最好有一個主鍵,因為這是個好習慣而且如果你不設置主鍵在SQL的企業管理器中無法對他進行添加刪除等操作。不知道這些補充可不可以?
E. sql2005中 int類型的欄位下空值怎麼表示
注意:很省空間的一種數據類型,如果能夠滿足需求應該盡量多用。
tinyint 整型
tinyint 數據類型能存儲從0到255 之間的整數。它在你只打算存儲有限數目的數值時很有用。這種數據類型在資料庫中佔用1 個位元組.
注意:如果bit類型太單調不能滿足您的需求,您可以考慮用tinyint類型,因為這個類型相對也是比較安全的,不接受惡意腳本內容的嵌入。
smallint 整型
smallint 數據類型可以存儲從- 2的15次冪(-32768)到2的15次冪(32767)之間的整數。這種數據類型對存儲一些常限定在特定范圍內的數值型數據非常有用。這種數據類型在資料庫里佔用2 位元組空間.
注意:如果tinyint類型太單調不能滿足您的需求,您可以考慮用smallint類型,因為這個類型相對也是比較安全的,不接受惡意腳本內容的嵌入。
int 整型
int 數據類型可以存儲從- 2的31次冪(-2147483648)到2的31次冪 (2147483 647)之間的整數。存儲到資料庫的幾乎所有數值型的數據都可以用這種數據類型。這種數據類型在資料庫里佔用4個位元組.
注意:如果smallint也不能夠滿足您的需求,您可以考慮用長度更大的int類型。
decimal 精確數值型
decimal 數據類型能用來存儲從-10的38次冪-1到10的38次冪-1的固定精度和范圍的數值型數據。使用這種數據類型時,必須指定范圍和精度。 范圍是小數點左右所能存儲的數字的總位數。精度是小數點右邊存儲的數字的位數
numeric 精確數值型
numeric數據類型與decimal 相似。
smallmoney 貨幣型
smallmoney 數據類型用來表示錢和貨幣值。這種數據類型能存儲從-214748.3648 到214748.3647 之間的數據,精確到貨幣單位的萬分之一
money 貨幣型
money數據類型用來表示錢和貨幣值。這種數據類型能存儲從-9220億到9220 億之間的數據,精確到貨幣單位的萬分之一
float 近似數值型
float 數據類型是一種近似數值類型,供浮點數使用。說浮點數是近似的,是因為在其范圍內不是所有的數都能精確表示。浮點數可以是從-1.79E+308到1.79E+308 之間的任意數
real 近似數值型
real 數據類型像浮點數一樣,是近似數值類型。它可以表示數值在-3.40E+38到3.40E+38之間的浮點數
Smalldatetime 日期時間型
smalldatetime 數據類型用來表示從1900年1月1日到2079年6月6日間的日期和時間,精確到一分鍾
datetime 日期時間型
datetime數據類型用來表示日期和時間。這種數據類型存儲從1753年1月1日到9999年12月31日間所有的日期和時間數據, 精確到三百分之一秒或3.33毫秒 .
cursor 特殊數據型
cursor 數據類型是一種特殊的數據類型,它包含一個對游標的引用。這種數據類型用在存儲過程中,而且創建表時不能用
timestamp 特殊數據型
timestamp 數據類型是一種特殊的數據類型,用來創建一個資料庫范圍內的唯一數碼。 一個表中只能有一個timestamp列。每次插入或修改一行時,timestamp列的值都會改變。盡管它的名字中有「time」, 但timestamp列不是人們可識別的日期。在一個資料庫里,timestamp值是唯一的
Uniqueidentifier 特殊數據型
Uniqueidentifier數據類型用來存儲一個全局唯一標識符,即GUID。GUID確實是全局唯一的。這個數幾乎沒有機會在另一個系統中被重建。可以使用NEWID 函數或轉換一個字元串為唯一
標識符來初始化具有唯一標識符的列 .
char 字元型
char數據類型用來存儲指定長度的定長非統一編碼型的數據。當定義一列為此類型時,你必須指定列長。當你總能知道要存儲的數據的長度時,此數據類型很有用。例如,當你按郵政編碼加4個字元格式來存儲數據時,你知道總要用到10個字元。此數據類型的列寬最大為8000 個字元.
varchar 字元型 varchar數據類型,同char類型一樣,用來存儲非統一編碼型字元數據。與char 型不一樣,此數據類型為變長。當定義一列為該數據類型時,你要指定該列的最大長度。 它與char數據類型最大的區別是,存儲的長度不是列長,而是數據的長度 .
text 字元型
text 數據類型用來存儲大量的非統一編碼型字元數據。這種數據類型最多可以有231-1或20億個字元.
nchar 統一編碼字元型
nchar 數據類型用來存儲定長統一編碼字元型數據。統一編碼用雙位元組結構來存儲每個字元,而不是用單位元組(普通文本中的情況)。它允許大量的擴展字元。此數據類型能存儲4000種字元,使用的位元組空間上增加了一倍.
nvarchar 統一編碼字元型
nvarchar 數據類型用作變長的統一編碼字元型數據。此數據類型能存儲4000種字元,使用的位元組空間增加了一倍.
ntext 統一編碼字元型
ntext 數據類型用來存儲大量的統一編碼字元型數據。這種數據類型能存儲230 -1或將近10億個字元,且使用的位元組空間增加了一倍
binary 二進制數據類型
binary數據類型用來存儲可達8000 位元組長的定長的二進制數據。當輸入表的內容接近相同的長度時,你應該使用這種數據類型.
varbinary 二進制數據類型
varbinary 數據類型用來存儲可達8000 位元組長的變長的二進制數據。當輸入表的內容大小可變時,你應該使用這種數據類型
image 二進制數據類型
image 數據類型用來存儲變長的二進制數據,最大可達231-1或大約20億位元組
---------------------------------------------------
(1)二進制數據類型
二進制數據包括 Binary、Varbinary 和 Image
Binary 數據類型既可以是固定長度的(Binary),也可以是變長度的。
Binary[(n)] 是 n 位固定的二進制數據。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4 個位元組。
Varbinary[(n)] 是 n 位變長度的二進制數據。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4個位元組,不是n 個位元組。
在 Image 數據類型中存儲的數據是以位字元串存儲的,不是由 SQL Server 解釋的,必須由應用程序來解釋。例如,應用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把數據存儲在 Image 數據類型中。
(2)字元數據類型
字元數據的類型包括 Char,Varchar 和 Text
字元數據是由任何字母、符號和數字任意組合而成的數據。
Varchar 是變長字元數據,其長度不超過 8KB。Char 是定長字元數據,其長度最多為 8KB。超過 8KB 的ASCII 數據可以使用Text數據類型存儲。例如,因為 Html 文檔全部都是 ASCII 字元,並且在一般情況下長度超過 8KB,所以這些文檔可以 Text 數據類型存儲在SQL Server 中。
(3)Unicode 數據類型
Unicode 數據類型包括 Nchar,Nvarchar 和Ntext
在 Microsoft SQL Server 中,傳統的非 Unicode 數據類型允許使用由特定字元集定義的字元。在 SQL Server安裝過程中,允許選擇一種字元集。使用 Unicode 數據類型,列中可以存儲任何由Unicode 標準定義的字元。在 Unicode 標准中,包括了以各種字元集定義的全部字元。使用Unicode數據類型,所戰勝的窨是使用非 Unicode 數據類型所佔用的窨大小的兩倍。
在 SQL Server 中,Unicode 數據以 Nchar、Nvarchar 和 Ntext 數據類型存儲。使用這種字元類型存儲的列可以存儲多個字元集中的字元。當列的長度變化時,應該使用Nvarchar 字元類型,這時最多可以存儲 4000 個字元。當列的長度固定不變時,應該使用 Nchar 字元類型,同樣,這時最多可以存儲4000 個字元。當使用 Ntext 數據類型時,該列可以存儲多於 4000 個字元。
(4)日期和時間數據類型
日期和時間數據類型包括 Datetime 和 Smalldatetime兩種類型
日期和時間數據類型由有效的日期和時間組成。例如,有效的日期和時間數據包括「4/01/98 12:15:00:00:00 PM」和「1:28:29:15:01AM 8/17/98」。前一個數據類型是日期在前,時間在後一個數據類型是霎時間在前,日期在後。在 Microsoft SQL Server中,日期和時間數據類型包括Datetime 和 Smalldatetime 兩種類型時,所存儲的日期范圍是從 1753 年 1 月 1 日開始,到9999 年12 月 31 日結束(每一個值要求 8 個存儲位元組)。使用 Smalldatetime 數據類型時,所存儲的日期范圍是 1900年 1 月 1日 開始,到 2079 年 12 月 31 日結束(每一個值要求 4 個存儲位元組)。
日期的格式可以設定。設置日期格式的命令如下:
Set DateFormat {format | @format _var|
其中,format | @format_var 是日期的順序。有效的參數包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認情況下,日期格式為MDY。
例如,當執行 Set DateFormat YMD 之後,日期的格式為年 月 日 形式;當執行 Set DateFormat DMY 之後,日期的格式為日 月有年 形式
(5)數字數據類型
數字數據只包含數字。數字數據類型包括正數和負數、小數(浮點數)和整數
整數由正整數和負整數組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數存儲的數據類型是 Int,Smallint和 Tinyint。Int 數據類型存儲數據的范圍大於 Smallint 數據類型存儲數據的范圍,而 Smallint 據類型存儲數據的范圍大於Tinyint 數據類型存儲數據的范圍。使用 Int 數據狗昔存儲數據的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求4個位元組存儲空間)。使用 Smallint 數據類型時,存儲數據的范圍從 -32 768 到 32 767(每一個值要求2個位元組存儲空間)。使用Tinyint 數據類型時,存儲數據的范圍是從0 到255(每一個值要求1個位元組存儲空間)。
精確小婁數據在 SQL Server 中的數據類型是 Decimal 和 Numeric。這種數據所佔的存儲空間根據該數據的位數後的位數來確定。
在SQL Server 中,近似小數數據的數據類型是 Float 和 Real。例如,三分之一這個分數記作。3333333,當使用近似數據類型時能准確表示。因此,從系統中檢索到的數據可能與存儲在該列中數據不完全一樣。
(6)貨幣數據表示正的或者負的貨幣數量 。
在 Microsoft SQL Server 中,貨幣數據的數據類型是Money 和 Smallmoney
Money數據類型要求 8 個存儲位元組,Smallmoney 數據類型要求 4 個存儲位元組。
(7)特殊數據類型
特殊數據類型包括前面沒有提過的數據類型。特殊的數據類型有3種,即 Timestamp、Bit 和 Uniqueidentifier。
Timestamp 用於表示SQL Server 活動的先後順序,以二進投影的格式表示。Timestamp 數據與插入數據或者日期和時間沒有關系。
Bit 由 1 或者 0 組成。當表示真或者假、ON 或者 OFF 時,使用 Bit 數據類型。例如,詢問是否是每一次訪問的客戶機請求可以存儲在這種數據類型的列中。
Uniqueidentifier 由 16 位元組的十六進制數字組成,表示一個全局唯一的。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種數據類型可以區別不同的客戶。
2.用戶定義的數據類型
用戶定義的數據類型基於在 Microsoft SQL Server 中提供的數據類型。當幾個表中必須存儲同一種數據類型時,並且為保證這些列有相同的數據類型、長度和可空性時,可以使用用戶定義的數據類型。例如,可定義一種稱為 postal_code 的數據類型,它基於 Char 數據類型。
當創建用戶定義的數據類型時,必須提供三個數:數據類型的名稱、所基於的系統數據類型和數據類型的可空性。
(1)創建用戶定義的數據類型
創建用戶定義的數據類型可以使用 Transact-SQL 語句。系統存儲過程 sp_addtype 可以來創建用戶定義的數據類型。其語法形式如下:
sp_addtype {type},[,system_data_bype][,'null_type']
其中,type 是用戶定義的數據類型的名稱。system_data_type 是系統提供的數據類型,例如 Decimal、Int、Char 等等。 null_type 表示該數據類型是如何處理空值的,必須使用單引號引起來,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:
Use cust
Exec sp_addtype ssn,'Varchar(11)',"Not Null'
創建一個用戶定義的數據類型 ssn,其基於的系統數據類型是變長為11 的字元,不允許空。
例子:
Use cust
Exec sp_addtype birthday,datetime,'Null'
創建一個用戶定義的數據類型 birthday,其基於的系統數據類型是 DateTime,允許空。
例子:
Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'
創建兩個數據類型,即 telephone 和 fax
(2)刪除用戶定義的數據類型
當用戶定義的數據類型不需要時,可刪除。刪除用戶定義的數據類型的命令是 sp_droptype {'type'}。
例子:
Use master
Exec sp_droptype 'ssn'
注意:當表中的列還正在使用用戶定義的數據類型時,或者在其上面還綁定有默認或者規則時,這種用戶定義的數據類型不能刪除。
SQL SERVER的欄位類型說明
以下為SQL SERVER7.0以上版本的欄位類型說明。SQL SERVER6.5的欄位類型說明請參考SQL SERVER提供的說明。
欄位類型 描述
bit 0或1的整型數字
int 從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數字
smallint 從-2^15(-32,768)到2^15(32,767)的整型數字
tinyint 從0到255的整型數字
decimal 從-10^38到10^38-1的定精度與有效位數的數字
numeric decimal的同義詞
money 從-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的貨幣數據,最小貨幣單位千分之十
smallmoney 從-214,748.3648到214,748.3647的貨幣數據,最小貨幣單位千分之十
float 從-1.79E+308到1.79E+308可變精度的數字
real 從-3.04E+38到3.04E+38可變精度的數字
datetime 從1753年1月1日到9999年12日31的日期和時間數據,最小時間單位為百分之三秒或3.33毫秒
smalldatetime 從1900年1月1日到2079年6月6日的日期和時間數據,最小時間單位為分鍾
timestamp 時間戳,一個資料庫寬度的唯一數字
uniqueidentifier 全球唯一標識符GUID
char 定長非Unicode的字元型數據,最大長度為8000
varchar 變長非Unicode的字元型數據,最大長度為8000
text 變長非Unicode的字元型數據,最大長度為2^31-1(2G)
nchar 定長Unicode的字元型數據,最大長度為8000
nvarchar 變長Unicode的字元型數據,最大長度為8000
ntext 變長Unicode的字元型數據,最大長度為2^31-1(2G)
binary 定長二進制數據,最大長度為8000
varbinary 變長二進制數據,最大長度為8000
image 變長二進制數據,最大長度為2^31-1(2G)
-------------------------------------
Bit
1位,值為0或1
Int
Integer
4位元組,值為-2^31~2^31-1
Smallint
2位元組,值為-2^15~2^15-1
Tinyint
1位元組,值為0~255
Decimal (p,s)
數字數據,固定精度為P,寬度為S
Numeric
Money
8位元組,存放貨幣類型,值為-2^63~2^63-1
Small money
4位元組,存放貨幣類型,值為-214748.3648~+214748.3647近似數值數據類型
Float (n)
N在1~24之間,4位元組,7位精度
N=1~7為real
N在25~53之間,8位元組,15位精度
=8~15為float
Datetime
8位元組,描述某天的日期和時刻,值的精確度為1/300秒
Smalldatetime
4位元組,描述某天的日期和時刻,精度為分鍾
Cursor
對游標的引用
Timestamp
8位元組,存放在資料庫內唯一的數據
Uniqueidentifier
16位元組,存放全局唯一標識(GUID)
Char (n)
非unicode字元串的固定長度,n=1~8000
Character (n)
Varchar (n)
可變長度,非unicode字元串n=1~8000
Char varying(n)
Text
伺服器代碼頁中可變長度非unicode數據。最大長度為231-1個字元
Nchar
固定長度unicode字元串n=1~4000
National character (n),
National char(n)
Nvarchar
固定長度unicode字元串n=1~4000
National character varying(n)
Ntext
可變長度unicode數據,最大長度為230-1個字元
National text
Binary (n)
固定長度二進制數據,n在1~8000之間,存儲空間為n+4位元組
Varbinary (n)
可變長度二進制數據,n=1~8000
Binary varying (n)
Tmage
可變長度二進制數據,大小為0~231-1
注意:
1) 對於數值型數據類型,寬度(scale)是指存儲在小數點後的數字位數,而精度(precision)是指能存儲的包含小數點在內的所有數字位數。
2) money和small money的存儲寬度為4。
3) 時間戳列值在每一行更新時系統自動更新,時間戳列不能是關鍵字或關鍵字的一部分。
4) 唯一標識數據類型不能使用算術操作符(如+、-等),這種數據類型只能使用相等比較操作。Unicode是所有字元集的一致存儲數據的標准。它要使用兩倍於非Unicode數據存儲的存儲空間。
F. sql2008r2 插入的列數據為空字元串時,列數據卻不為空
這個,sqlserver和oracle有些區別
空字元串'',我換一個說法:0長度字元串。 就是一個字元串,長度為0。
空值,null,就是不可知;和空字元串是兩個意思的。
在Oracle中,默認是把空字元串 當作 null存儲的,所以用慣oracle的人可能會把中兩個東西混淆了。
而在sqlserver中,這兩個沒有被當成一個東西存儲,所以你存儲的'' 不是 null。
G. 用SQL語句查詢員工名稱順序生成10位長度的序號,前4位以部門編碼(為空,則以0000補足)補足,後6位以0補足
存儲過程,很簡單.但是題意不明,什麼樣子順序...沒有部門編號全0?
H. sql資料庫delete刪除的欄位如果為空字元串怎麼刪除
假設表有4個欄位為FIELD1-FIELD4
只有有一個欄位為空就刪除
DELETE
BIAO
WHERE
FIELD1
IS
NULL
OR
FIELD2
IS
NULL
OR
FIELD3
IS
NULL
OR
FIELD4
IS
NULL
所有欄位為空才刪除:
DELETE
BIAO
WHERE
FIELD1
IS
NULL
and
FIELD2
IS
NULL
and
FIELD3
IS
NULL
and
FIELD4
IS
NULL
第二個問題,看不出您的日期欄位格式是什麼格式,也沒看清您想要什麼樣的結果,相距的時間是什麼?是天,還是月,還是年?
假設您的日期欄位是DATETIME類型,我列舉了您需求的多種情況:
--如果是要幾年或幾天或幾個月,下面三行分別得到總年數或總月數或總天數(如果是一年就會得到365或366)
select
datediff(year,注冊時間,getdate())--總年數(整數)
select
datediff(month,注冊時間,getdate())--總月數(整數)
select
datediff(day,注冊時間,getdate())--總天數(整數)
--如果是要得到幾年和幾個月和幾天的組合結果(與上面的總數結果不同,這里日不會過31,月不會過12,年月日結果是進位關系),按下面的方法得到.
select
cast(datename(year,getdate()-注冊時間)-1900
as
varchar)+'年'
+cast(datename(month,getdate()-注冊時間)-1
as
varchar)+'個月'
+cast(datename(day,getdate()-注冊時間)-1
as
varchar)+'日'
注意:上面兩例中,注冊時間是您的欄位名,GETDATE()是求出的當前日期和時間,如果是別的什麼時間欄位,如最後登錄時間,直接用登錄時間替換GETDATE()就行了.
=====================
sql
server中的空值就是這樣的(NULL),您說的,應該即不是空值,也不是零長度的字元串,也不是數值零.
所以,當不是空值時,您必須要告訴我們欄位是什麼類型的.
如果您的欄位是VARCHAR,NVARCHAR或CHAR類型的,
那麼可能就有三種情況,
1.是空格.
2.是零長度字串.
3.是不可顯示的亂字元.
但無論哪一種情況情況,只要是字元型的,用您的語句都不會報錯,就是這一句:
delete
biao
where
field1=''
除非欄位或表名有錯誤.
建議:
如果是字元型欄位(VARCHAR,NVARCHAR或CHAR類型等)
delete
biao
where
RTRIM(field1)=''
如果是數值型欄位(INT,FLOAT,DECIMAL等類型,甚至日期型)都可以用下面的語句刪除0值.
delete
biao
where
RTRIM(field1)=0
就是說:
如果不是空值(NULL),就必須要知道欄位是什麼類型才能確定語法格式.
====================
==============================
最後提醒您,我費了好長時間回答您的問題,為了使用我們下次還有這么大的積極性,最少要加到200分才行啊!
I. SQL語句查詢問題需要查詢某一欄位長度為0和NULL的
可以在where 後加上條件:len(is null(isReconciliation,』』))=0
你可以這樣做,望採納。
J. 如何用sqL語句創建表,要完整的語句 表名 ufdd 列名 數據類型 長度 允許空 id int 4 否
create table ufdd ( id int(4) not null, )