⑴ sql數據類型nchar,char,varchar與nvarchar區別
nchar與char是相似的,nvarchar與varchar是相似的。
char類型:
對英文(ASCII)字元佔用1個位元組,對一個漢字佔用2個位元組,CHAR存儲定長數據很方便,CHAR欄位上的索引效率級高,比如定義
char(10),那麼不論你存儲的數據是否達到了10個位元組,都要佔去10個位元組的空間,不夠的字元用空格去填。因為是固定長度,所以速度效率高。
Varchar類型:Varchar
的類型不以空格填滿,比如varchar(100),但它的值只是"qian",則它的值就是"qian"
而char
不一樣,比如char(100),它的值是"qian",而實際上它在資料庫中是"qian
"(qian後共有96個空格,就是把它填滿為100個位元組)。
由於char是以固定長度的,所以它的速度會比varchar快得多!但程序處理起來要麻煩一點,要用trim之類的函數把兩邊的空格去掉!
VARCHAR存儲變長數據,但存儲效率沒有CHAR高。如果一個欄位可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為
VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。為什麼「+1」呢?這一個位元組用於保存實際使用了多大的長度。
nchar類型和Nvarchar類型是怎麼一回事呢?為了與其他多種字元的轉換,如中文,音標等,對每個英文(ASCII)字元都佔用2個位元組,對一個漢字也佔用兩個位元組,所有的字元都佔用2個位元組。
關於長度與漢字
varchar(100)/char(100)能存50個漢字,nvarchar(100)/nchar(100)能存100個漢字。
⑵ mysql和sql數據類型對比
MySql和SQL Server數據類型各有不同,使用腳本進行數據定義時,這些類型說明還是有用。 My Sql 數據類型SQL Server 數據類型Yes/NobitSmallint(位元組型)tinyintInteger(長整型)intReal(單精度浮點型) realFloat(雙精度浮點型)floatCurrencymoneysmallmoney Decimal/numericdecimalnumeric Date/(增量)int(帶有定義的 Identity 屬性)Text (n)varchar(n)nvarchar(n)MemotextIMAGE(OLE Object)圖像Replication ID(也稱作全球唯一標識符 (GUID))uniqueidentifier (僅適於 SQL Server 7.0)Hyperlinkntext(但超級鏈接沒有激活)(無等價的數據類型)nchar(無等價的數據類型)varbinary(無等價的數據類型)用戶定義(無等價的數據類型)smallint(無等價的數據類型)timestamp(無等價的數據類型)charnchar
⑶ 在線等。。SQL 兩個數值類型的欄位之間的比較
selece a=case when f1>f2 then f1 else f2 end from table
a是結果別名,你隨便寫.
f1是你第一個欄位,f2是你第二個欄位.
以上語句經過測試,結果正確.
selece f1,f2,a=case when f1>f2 then f1 else f2 end from table
你可以用這個語句來看,a是不是f1,f2中的較大的值.
⑷ SQL中數據類型float與real的區別
一、意思不同
FLOAT浮點型數據類型,FLOAT 數據類型用於存儲單精度浮點數或雙精度浮點數。浮點數使用IEEE(電氣和電子工程師協會)格式。real是不精確的雙精度浮點型,float 和 real 數據類型被稱為近似的數據類型。
二、位元組不同
real型數據的存儲大小為4個位元組,可精確到小數點後第7位數字。這種數據類型的數據存儲范圍為從-3.40E+38~-1.18E-38,0和1.18E-38~3.40E+38。
float型的數據存儲大小為8個位元組,可精確到小數點後第15位數字。這種數據類型的數據存儲范圍為從-1.79E+308~-2.23E-308,0和2.23E+308~1.79E+308。 FLOAT(size,d) 帶有浮動小數點的小數字。在括弧中規定最大位數。在 d 參數中規定小數點右側的最大位數。
二、寫法
float型的數據可寫成float[(n)]的形式。其中n是1~15之間的整數值,指定float型數據的精度。當n為1~7時,實際上用戶定義了一個real型的數據,系統用4個位元組存儲;當n為8~15時,系統認為它是個float型的數據,用8個位元組存儲它。這樣既增強了數據定義的靈活性,又節省了空間。
float 和 real 的使用遵循有關近似數值數據類型的 IEEE 754 規范。
⑸ sql資料庫中常用的數據類型有什麼
一、整數數據類型:整數數據類型是最常用的數據類型之一。
1、INT(INTEGER)
INT (或INTEGER)數據類型存儲從-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之間的所有正負整數。每個INT 類型的數據按4 個位元組存儲,其中1 位表示整數值的正負號,其它31 位表示整數值的長度和大小。
2、SMALLINT
SMALLINT 數據類型存儲從-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之間的所有正負整數。每個SMALLINT 類型的數據佔用2 個位元組的存儲空間,其中1 位表示整數值的正負號,其它15 位表示整數值的長度和大小。
二、浮點數據類型:浮點數據類型用於存儲十進制小數。浮點數值的數據在SQL Server 中採用上舍入(Round up 或稱為只入不舍)方式進行存儲。
1、REAL數據類型
REAL數據類型可精確到第7 位小數,其范圍為從-3.40E -38 到3.40E +38。 每個REAL類型的數據佔用4 個位元組的存儲空間。
2、FLOAT
FLOAT數據類型可精確到第15 位小數,其范圍為從-1.79E -308 到1.79E +308。 每個FLOAT 類型的數據佔用8 個位元組的存儲空間。 FLOAT數據類型可寫為FLOAT[ n ]的形式。n 指定FLOAT 數據的精度。n 為1到15 之間的整數值。
當n 取1 到7 時,實際上是定義了一個REAL 類型的數據,系統用4 個位元組存儲它;當n 取8 到15 時,系統認為其是FLOAT 類型,用8 個位元組存儲它。
三、二進制數據類型
1、BINARY
BINARY 數據類型用於存儲二進制數據。其定義形式為BINARY( n), n 表示數據的長度,取值為1 到8000 。在使用時必須指定BINARY 類型數據的大小,至少應為1 個位元組。BINARY 類型數據佔用n+4 個位元組的存儲空間。
在輸入數據時必須在數據前加上字元「0X」 作為二進制標識,如:要輸入「abc 」則應輸入「0xabc 」。若輸入的數據過長將會截掉其超出部分。若輸入的數據位數為奇數,則會在起始符號「0X 」後添加一個0,如上述的「0xabc 」會被系統自動變為「0x0abc」。
2、VARBINARY
VARBINARY數據類型的定義形式為VARBINARY(n)。 它與BINARY 類型相似,n 的取值也為1 到8000, 若輸入的數據過長,將會截掉其超出部分。
不同的是VARBINARY數據類型具有變動長度的特性,因為VARBINARY數據類型的存儲長度為實際數值長度+4個位元組。當BINARY數據類型允許NULL 值時,將被視為VARBINARY數據類型。
四、邏輯數據類型
1、BIT:BIT數據類型佔用1 個位元組的存儲空間,其值為0 或1 。如果輸入0 或1 以外的值,將被視為1。 BIT 類型不能定義為NULL 值(所謂NULL 值是指空值或無意義的值)。
五、字元數據類型:字元數據類型是使用最多的數據類型。它可以用來存儲各種字母、數字元號、特殊符號。一般情況下,使用字元類型數據時須在其前後加上單引號』或雙引號」 。
1、CHAR
CHAR 數據類型的定義形式為CHAR[ (n) ]。 以CHAR 類型存儲的每個字元和符號佔一個位元組的存儲空間。n 表示所有字元所佔的存儲空間,n 的取值為1 到8000, 即可容納8000 個ANSI 字元。
若不指定n 值,則系統默認值為1。 若輸入數據的字元數小於n,則系統自動在其後添加空格來填滿設定好的空間。若輸入的數據過長,將會截掉其超出部分。
(5)sql數據類型比較擴展閱讀:
SQL包括了所有對資料庫的操作,主要是由4個部分組成:
1、數據定義:這一部分又稱為「SQL DDL」,定義資料庫的邏輯結構,包括定義資料庫、基本表、視圖和索引4部分。
2、數據操縱:這一部分又稱為「SQL DML」,其中包括數據查詢和數據更新兩大類操作,其中數據更新又包括插入、刪除和更新三種操作。
3、數據控制:對用戶訪問數據的控制有基本表和視圖的授權、完整性規則的描述,事務控制語句等。
4、嵌入式SQL語言的使用規定:規定SQL語句在宿主語言的程序中使用的規則。
⑹ SQL中如何進行數據的比較
是完全匹配,還是部分匹配呢?
匹配"王"字
前面匹配,select * from [a] where 姓名 like '王%'
後面匹配,select * from [a] where 姓名 like '%王'
包含匹配,select * from [a] where 姓名 like '%王%'
完全相等,select * from [a] where 姓名 = '王'
⑺ 簡述sql資料庫表的三種類型及它們的區別
物理數據獨立性是指DB內模式的改變盡量不影響邏輯模式,或DB物理結構的改變盡量不影響應用程序。邏輯數據獨立性是指DB邏輯模式的改變盡量不影響外模式和應用程序,或DB邏輯結構的改變不影響應用程序。 27.候選鍵與超鍵有哪些聯系和區別? 答:聯系:候選鍵也是超鍵,兩者都是唯一標識元組的屬性集 區別:候選鍵中不含有多餘的屬性。 28.有如下部門信息表,試判斷該表是否可以直接作為關系資料庫中的關系,並說明原因。 部門號 部門名稱 負責人 部門成員 Dl 財務部 張軍 劉爽、王方 D2 人事部 李強 徐剛、張玉 D3 工程部 王洪 蔡鑫明、陳藝 該表不可以直接作為關系資料庫中的關系。 因為屬性「項目成員」的分量並不是原子數據項,該表不滿足關系的最低要求,即1NF要求。
29.簡述嵌入式SQL中引入游標的原因。 SQL語言是面向集合的,主語言是面向記錄的,需要用游標機制把集合操作轉換成單記錄處理方式。
30.資料庫的並發操作會帶來哪些問題? 丟失數據,讀臟數據,不可重復讀 31.用戶對資料庫模式有哪些修改許可權? 修改資料庫模式的許可權有四種:索引。資源、修改、撤銷 32.什麼是角色?其作用是什麼? 一組具有相同許可權的用戶稱為角色。 角色的作用是為了便於對用戶及許可權的管理。 33.簡述SQL Server 2000中Msdb資料庫的作用。 Msdb資料庫主要用於SQL server 2000存儲任務計劃信息、時間處理信息、備份恢復信息以及異常報告 34簡述PowerBuilder中數據窗口對象的功能。 數據窗口對象可以實現對資料庫的各種操作,並按照不同的風格顯示數據。 35.述SQL/CLI中描述記錄的功能。 保存元祖或參數的有關信息,如元祖中的屬性個數及其類型,或某個函數調用中的參數個數及其類型
⑻ 在sql中字元串怎麼與數值類型比較
Oracle比較字元串是根據ASCII碼來的,第一個字母的ASCII大小比較如果相等再比較下一個,類推。
字元串和數字進行操作是會報異常的,因為類型不一樣不能進行比較。
Oracle在執行SQL的時候有些時候會自動轉換,比如:
select * from chan_customer cc where cc.customer_id = '1';
即使customer_id是數字型的也可以查出來,但是Oracle有區分字元和數字
就是通過加不加單引號來區分。
⑼ SQL中varchar和nvarchar有什麼區別
SQL中varchar和nvarchar區別:輸入不同,含義不同。
一、輸入不同:
varchar(4)可以輸入4個字線,也可以輸入兩個漢字。
nvarchar(4)可以輸四個漢字,也可以輸4個字母,但最多四個。
二、含義不同:
varchar(n)長度為n個位元組的可變長度且非Unicode的字元數據。n必須是一個介於1和8,000之間的數值。存儲大小為輸入數據的位元組的實際長度,而不是n個位元組。
nvarchar(n)包含n個字元的可變長度Unicode字元數據。n的值必須介於1與4,000之間。位元組的存儲大小是所輸入字元個數的兩倍。
字元數據類型
Varchar是變長字元數據,其長度不超過8KB。Char是定長字元數據,其長度最多為8KB。超過8KB的ASCII數據可以使用Text數據類型存儲。例如,因為Html文檔全部都是ASCII字元,並且在一般情況下長度超過8KB,所以這些文檔可以Text數據類型存儲在SQLServer中。
在SQLServer中,Unicode數據以Nchar、Nvarchar和Ntext數據類型存儲。使用這種字元類型存儲的列可以存儲多個字元集中的字元。當列的長度變化時,應該使用Nvarchar字元類型,這時最多可以存儲4000個字元。
以上內容參考:網路-SQL數據類型
⑽ sql資料庫和access資料庫的數據類型對比
將access資料庫轉換成sql
server資料庫。
試試以下方法
1、打開「控制面板」下「管理工具」中的「資料庫源」。
2、按「添加」添加一個新的數據源,在選擇欄里選「driver
do
microsoft
access
(*.mdb)」,完成後將出現一個框,在「資料庫源」裡面輸入你想寫的名稱,我取名叫「abc」,說明不需要填,接著,按下面的選擇,尋找你的資料庫地址和選中(注意,請先備份自己的access資料庫),然後確定。數據源在這里建好了,剩下轉換了。
3、打開sql2000企業管理器,進入資料庫,新建一個空的資料庫「abc」。
4、選擇新建立的資料庫,按滑鼠右鍵,選擇「所有任務」下「導入數據」,按「下一步」繼續。
5、在資料庫源下拉但中選擇「driver
do
microsoft
access(*.mdb)」,在「用戶/系統dsn」中,選種你剛才添加的「abc」,按「下一步」。
6、「目的」不需要修改,選擇伺服器(一般下為自己的本機local,也可以選擇伺服器地址或者區域網地址,確定你的許可權是否可以操作,),使用windows身份驗證指用自己的系統管理員身份操作,使用sql身份操作驗證可以用於網站的操作,推薦用後者。
7、選上使用sql身份操作驗證後,填寫你的用戶名和密碼,我自己選擇的是系統默認號碼sa,****,資料庫選擇剛新建的abc,按下一步。
8、這一步的兩個單項選擇,從數據源復製表和視圖與用一條查詢指令指定要傳輸的數據,選擇前者,按下一步繼續。
9、這里將出現你自己access資料庫的表,按全選後,下一步。
10、dts導入/導出向導,看立即運行被選中按下一步。
11、按完成繼續。
12、這個步驟你將看到你的數據被導入sql
2000裡面,當出現已經成功把xxx個表導入到資料庫的字樣,而且所有的表前面都有綠色的勾,就表示成功導入所有數據,如果中途出現問題或者表前面有紅色的*的話,說明該表沒有成功導入,這時就要回去查看自己的操作是否正確了。
數據修改
1、由於sql2000裡面沒有自動編號,所以你的以自動編號設置的欄位都會變成非空的欄位,這就必須手工修改這些欄位,並把他的標示選擇是,種子為1,增量為1。
2、另外,access
2000轉換成sql
2000後,原來屬性為是/否的欄位將被轉換成非空的bit,這時候你必須修改成自己想要的屬性了。
3、另外,大家要注意對時間函數的把握access與sql是有很多不同的。
資料庫轉換的經驗
1.access的資料庫中的自動編號類型在轉化時,sql
server並沒有將它設為自動編號型,我們需在sql創建語句中加上identity,表示自動編號!
2.轉化時,跟日期有關的欄位,sql
server默認為smalldatetime型,我們最好將它變為datetime型,因為datetime型的范圍比smalldatetime型大。我遇見這種情況,用smalldatetime型時,轉化失敗,而用datetime型時,轉化成功。
3.對此兩種資料庫進行操作的sql語句不全相同,例如:在對access資料庫進行刪除紀錄時用:
delete
*
from
user
where
id=10,
而對sql
server資料庫進行刪除是用:delete
user
where
id=10。
4.日期函數不相同,在對access資料庫處理中,可用date()、time()等函數,但對sql
server資料庫處理中,只能用datediff,dateadd等函數,而不能用date()、time()等函數。
5.在對access資料庫處理中,sql語句中直接可以用一些vb的函數,像cstr()函數,而對sql
server資料庫處理中,卻不能用。