導航:首頁 > 數據處理 > sql的字元數據類型是哪個

sql的字元數據類型是哪個

發布時間:2024-05-22 16:49:57

Ⅰ sql鐨勯氱敤鏁版嵁綾誨瀷


鏁版嵁綾誨瀷瀹氫箟浜嗘暟鎹搴撹〃鐨勫垪涓瀛樻斁鐨勫肩殑縐嶇被銆
鏁版嵁搴撹〃涓鐨勬瘡涓鍒楅兘瑕佹眰鏈夊悕縐板拰鏁版嵁綾誨瀷銆係QL 寮鍙戜漢鍛樺繀欏誨湪鍒涘緩 SQL 琛ㄦ椂鍐沖畾琛ㄤ腑鐨勬瘡涓鍒楀皢瑕佸瓨鍌ㄧ殑鏁版嵁鐨勭被鍨嬨傛暟鎹綾誨瀷鏄涓涓鏍囩撅紝鏄渚誇簬 SQL 浜嗚В姣忎釜鍒楁湡鏈涘瓨鍌ㄤ粈涔堢被鍨嬬殑鏁版嵁鐨勬寚鍗楋紝瀹冧篃鏍囪瘑浜 SQL 濡備綍涓庡瓨鍌ㄧ殑鏁版嵁榪涜屼氦浜掋
涓嬮潰鐨勮〃鏍煎垪鍑轟簡 SQL 涓閫氱敤鐨勬暟鎹綾誨瀷錛
鏁版嵁綾誨瀷
鎻忚堪
CHARACTER(n)瀛楃/瀛楃︿覆銆傚滻瀹氶暱搴 n銆俈ARCHAR(n) 鎴
CHARACTER VARYING(n)瀛楃/瀛楃︿覆銆傚彲鍙橀暱搴︺傛渶澶ч暱搴 n銆侭INARY(n)浜岃繘鍒朵覆銆傚滻瀹氶暱搴 n銆侭OOLEAN瀛樺偍 TRUE 鎴 FALSE 鍊糣ARBINARY(n) 鎴
BINARY VARYING(n)浜岃繘鍒朵覆銆傚彲鍙橀暱搴︺傛渶澶ч暱搴 n銆侷NTEGER(p)鏁存暟鍊礆紙娌℃湁灝忔暟鐐癸級銆傜簿搴 p銆係MALLINT鏁存暟鍊礆紙娌℃湁灝忔暟鐐癸級銆傜簿搴 5銆侷NTEGER鏁存暟鍊礆紙娌℃湁灝忔暟鐐癸級銆傜簿搴 10銆
BIGINT鏁存暟鍊礆紙娌℃湁灝忔暟鐐癸級銆傜簿搴 19銆侱ECIMAL(p,s)綺劇『鏁板礆紝綺懼害 p錛屽皬鏁扮偣鍚庝綅鏁 s銆備緥濡傦細decimal(5,2) 鏄涓涓灝忔暟鐐瑰墠鏈 3 浣嶆暟灝忔暟鐐瑰悗鏈 2 浣嶆暟鐨勬暟瀛椼侼UMERIC(p,s)綺劇『鏁板礆紝綺懼害 p錛屽皬鏁扮偣鍚庝綅鏁 s銆傦紙涓 DECIMAL 鐩稿悓錛塅LOAT(p)榪戜技鏁板礆紝灝炬暟綺懼害 p銆備竴涓閲囩敤浠 10 涓哄熀鏁扮殑鎸囨暟璁℃暟娉曠殑嫻鐐規暟銆傝ョ被鍨嬬殑 size 鍙傛暟鐢變竴涓鎸囧畾鏈灝忕簿搴︾殑鍗曚竴鏁板瓧緇勬垚銆俁EAL榪戜技鏁板礆紝灝炬暟綺懼害 7銆侳LOAT榪戜技鏁板礆紝灝炬暟綺懼害 16銆侱OUBLE PRECISION榪戜技鏁板礆紝灝炬暟綺懼害 16銆侱ATE瀛樺偍騫淬佹湀銆佹棩鐨勫箋俆IME瀛樺偍灝忔椂銆佸垎銆佺掔殑鍊箋俆IMESTAMP瀛樺偍騫淬佹湀銆佹棩銆佸皬鏃躲佸垎銆佺掔殑鍊箋侷NTERVAL鐢變竴浜涙暣鏁板瓧孌電粍鎴愶紝浠h〃涓孌墊椂闂達紝鍙栧喅浜庡尯闂寸殑綾誨瀷銆侫RRAY鍏冪礌鐨勫滻瀹氶暱搴︾殑鏈夊簭闆嗗悎MULTISET鍏冪礌鐨勫彲鍙橀暱搴︾殑鏃犲簭闆嗗悎XML瀛樺偍 XML 鏁版嵁

Ⅱ SQL Server的常用數據類型(字元型)詳解

對於程序中的string型欄位,SQLServer中有char、varchar、nchar、nvarchar四種類型來對應(暫時不考慮text和ntext),開建立資料庫中,對這四種類型往往比較模糊,這里做一下對比。

定長或變長
所謂定長就是長度固定的,當輸入的數據長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到相應的長度;有var前綴的,表示是實際存儲空間是變長的,比如varchar,nvarchar變長字元數據則不會以空格填充,比較例外的是,text存儲的也是可變長。
Unicode或非Unicode
資料庫中,英文字元只需要一個位元組存儲就足夠了,但漢字和其他眾多非英文字元,則需要兩個位元組存儲。如果英文與漢字同時存在,由於佔用空間數不同,容易造成混亂,導致讀取出來的字元串是亂碼。Unicode字元集就是為了解決字元集這種不兼容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。而前綴n就表示Unicode字元,比如nchar,nvarchar,這兩種類型使用了Unicode字元集。
基於以上兩點來看看欄位容量
char,varchar 最多8000個英文,4000個漢字
nchar,nvarchar 可存儲4000個字元,無論英文還是漢字

使用(個人偏好)
如果數據量非常大,又能100%確定長度且保存只是ansi字元,那麼char
能確定長度又不一定是ansi字元或者,那麼用nchar;
對於超大數據,如文章內容,使用nText
其他的通用nvarchar
char、varchar、nchar、nvarchar特點比較
CHAR
CHAR存儲定長數據很方便,CHAR欄位上的索引效率級高,比如定義char(10),那麼不論你存儲的數據是否達到了10個位元組,都要佔去10個位元組的空間。
VARCHAR
存儲變長數據,但存儲效率沒有CHAR高,如果一個欄位可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。為什麼"+1"呢?這一個位元組用於保存實際使用了多大的長度。
從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。
TEXT
text存儲可變長度的非Unicode數據,最大長度為2^31-1(2,147,483,647)個字元。
NCHAR、NVARCHAR、NTEXT
這三種從名字上看比前面三種多了個"N"。和char、varchar比較起來,nchar、nvarchar最多存儲4000個字元,不論是英文還是漢字;而char、varchar最多能存儲8000個英文,4000個漢字。可以看出使用nchar、nvarchar數據類型時不用擔心輸入的字元是英文還是漢字,較為方便,但在存儲英文時數量上有些損失。
所以一般來說,如果含有中文字元,用nchar/nvarchar,如果純英文和數字,用char/varchar

Ⅲ SQL的數據類型

【三】SQL的數據類型(表的欄位類型)

3.1 四種基本的常用數據類型(表的欄位類型)

1、字元型,2、數值型,3、日期型,4、大對象型

3.1.1 字元型:

字元類型char和varchar2的區別

SCOTT@ prod> create table t1(c1 char(10),c2 varchar2(10));

SCOTT@ prod> insert into t1 values('a','ab');

SCOTT@ prod> select length(c1),length(c2) from t1; char和varchar2默認以byte為計算單位

LENGTH(C1) LENGTH(C2)

---------- ----------

10 2

3.1.2 數值型:

3.1.3 日期型:

系統安裝後,默認日期格式是DD-MON-RR, RR和YY都是表示兩位年份,但RR是有世紀認知的,它將指定日期的年份和當前年份比較後確定年份是上個世紀還是本世紀(如表)。

當前年份 指定日期 RR格式 YY格式

------------------------------------------------------------------------------

1995 27-OCT-95 1995 1995

1995 27-OCT-17 2017 1917

2001 27-OCT-17 2017 2017

2013 27-OCT-95 1995 2095

3.1.4 LOB型:

大對象是10g 引入的,在11g中又重新定義,在一個表的欄位里存儲大容量數據,所有大對象最大都可能達到4G。CLOB,NCLOB,BLOB都是內部的LOB類型,沒有LONG只能有一列的限制。

保存圖片或電影使用BLOB最好、如果是小說則使用CLOB最好。雖然LONG、RAW也可以使用,但LONG是oracle將要廢棄的類型,因此建議用LOB。

雖說將要廢棄,但還沒有完全廢棄,比如oracle 11g里的一些視圖如dba_views,對於text(視圖定義)仍然沿用了LONG類型。

Oracle 11g重新設計了大對象,推出SecureFile Lobs的概念,相關的參數是db_securefile,採用SecureFile Lobs的前提條件是11g以上版本,ASSM管理等,符合這些條件的。BasicFile Lobs也可以轉換成SecureFile Lobs。較之過去的BasicFile Lobs, SecureFile Lobs有幾項改進:

1)壓縮,2)去重,3)加密。

當create table定義LOB列時,也可以使用LOB_storage_clause指定SecureFile Lobs或BasicFile Lobs,而LOB的數據操作則使用Oracle提供的DBMS_LOB包,通過編寫PL/SQL塊完成LOB數據的管理。

3.2 數據類型的轉換

3.2.1 轉換的需求

什麼情況下需要數據類型轉換

1)如果表中的某欄位是日期型的,而日期又是可以進行比較和運算的,這時通常要保證參與比較和運算的數據類型都是日期型。

2)當對函數的參數進行抽(截)取、拼接,或運算等操作時,需要轉換為那個函數的參數要求的數據類型。

3)製表輸出有格式需求的,可將date類型,或number類型轉換為char類型

4)轉換成功是有條件的,有隱性轉換和顯性轉換兩種方式

3.2.2隱性類型轉換:

是指oracle自動完成的類型轉換。在一些帶有明顯意圖的字面值上,可以由Oracle自主判斷進行數據類型的轉換。

一般規律:

①比較、運算或連接時:

SQL> select empno,ename from emp where empno='7788'

empno本來是數值類型的,這里字元'7788'隱性轉換成數值7788

SQL> SELECT '12.5'+11 FROM al;

將字元型『12.5』運轉成數字型再求和

SQL> SELECT 10+('12.5'||11) FROM al;

將數字型11隱轉成字元與『12.5』合並,其結果再隱轉數字型與10求和

②調用函數時

SQL> select length(sysdate) from al;

將date型運轉成字元型後計算長度

③向表中插入數據時

create table scott. t1 (id int,name char(10),birth date);

insert into scott.t1 values('123',456,'2017-07-15');

按照欄位的類型進行隱式轉換

3.2.3 顯性類型轉換

即強制完成類型轉換(推薦),有三種形式的數據類型轉換函數:

TO_CHAR

TO_DATE

TO_NUMBER

1)日期-->字元

SQL> select ename,hiredate, to_char(hiredate, 'DD-MON-YY') month_hired from emp

where ename='SCOTT';

ENAME HIREDATE MONTH_HIRED

---------- ------------------- --------------

SCOTT 1987-04-19 00:00:00 19-4月 -87

fm壓縮空格或左邊的'0'

SQL> select ename, hiredate, to_char(hiredate, 'fmyyyy-mm-dd') month_hired from emp

where ename='SCOTT';

ENAME HIREDATE MONTH_HIRED

---------- ------------------- ------------

SCOTT 1987-04-19 00:00:00 1987-4 19

其實DD-MM-YY是比較糟糕的一種格式,因為當日期中天數小於12時,DD-MM-YY和MM-DD-YY容易造成混亂。

以下用法也很常見:

SQL> select to_char(hiredate,'yyyy') FROM emp;

SQL> select to_char(hiredate,'mm') FROM emp;

SQL> select to_char(hiredate,'dd') FROM emp;

SQL> select to_char(hiredate,'DAY') FROM emp;

2)數字-->字元:9表示數字,L本地化貨幣字元

SQL> select ename, to_char(sal, 'L99,999.99') Salary from emp where ename='SCOTT';

ENAME SALARY

---------- --------------------

SCOTT 3,000.00

以下四個語句都是一個結果:

SQL> select to_char(1890.55,'$99,999.99') from al;

SQL> select to_char(1890.55,'$0G000D00') from al;

SQL> select to_char(1890.55,'$99G999D99') from al;

SQL> select to_char(1890.55,'$99G999D00') from al; 9和0可用,其他數字不行

3)字元-->日期

SQL> select to_date('1983-11-12', 'YYYY-MM-DD') tmp_DATE from al;

4)字元-->數字:

SQL> SELECT to_number('$123.45','$9999.99') result FROM al;

使用to_number時如果使用較短的格式掩碼轉換數字,就會返回錯誤。不要混淆to_number和to_char轉換。

SQL> select to_number('123.56','999.9') from al;

報錯:ORA-01722: 無效數字

練習:建立t1表,包括出生日期,以不同的日期描述方法插入數據,顯示小於15歲的都是誰

SQL> create table t1 (id int,name char(10),birth date);

insert into t1 values(1,'tim',sysdate);

insert into t1 values(2,'brian',sysdate-365*20);

insert into t1 values(3,'mike',to_date('1998-05-11','yyyy-mm-dd'));

這一句也可以寫成insert into t1 values(3,'mike',to_date('1998-05-11')),因為'1998-05-11'是和當前日期格式匹配的。

insert into t1 values(4,'nelson',to_date('15-2月-12','dd-mon-rr'));

SQL> select * from t1;

ID NAME BIRTH

---------- ---------- -------------------

1 tim 2016-02-25 17:34:00

2brian 1996-03-01 17:34:22

3 mike 1998-05-11 00:00:00

4 nelson 2012-02-15 00:00:00

SQL> select name||'的年齡是'||to_char(months_between(sysdate,birth)/12,99) age from t1

where months_between(sysdate,birth)/12<15;

AGE

-------------------------

tim 的年齡是 0

nelson 的年齡是 4

the end !!!

@jackman 共築美好!

Ⅳ SQL 瀛楁電被鍨(瀛楃﹀瀷)

char,varchar,nvarchar.娌℃湁寰堝ぇ鐨勫尯鍒銆俷varchar涓鐩樼敤鏉ュ瓨鍌ㄦ眽瀛楋紝濡傛灉鐢ㄥ畠鏉ュ瓨鍌ㄨ嫳鏂囦細嫻璐逛竴涓瀛楄妭鐨勭┖闂淬
char鍜寁archar鐨勫尯鍒鍦ㄤ簬錛寁archar鍗犵敤鐨勭┖闂翠細鑷鍔ㄨ皟鑺傦紝鐢ㄤ簬涓嶇『瀹氱殑瀛楃﹂暱搴︺傛瘮濡備綘瀹氫箟varchar(20),浣嗘槸鍦ㄦ彃鍏ユ暟鎹鐨勬椂鍊欏彧鎻掑叆'aa',閭d箞瀹冨彧鍗犵敤2涓瀛楄妭鐨勭┖闂達紝濡傛灉鏄痗ahr鍒欐槸20

Ⅳ SQL 資料庫的類型有哪些

SQL 資料庫分為:系統數據類型和用戶自定義類型
系統數據類型:整形(int\smallint\tinyint)\浮點數據(real\decimal和numeric)\字元(char\varchar\nchar\nvarchar)\日期和時間數據類型(datetime\smalldatetime)\文本和圖形數據類型(text\ntext\image)\貨幣數據類型(money\smallmoney)\位數據類型\二進制數據類型(binary\varbinary)\特殊(timestamp\uniqueidentifier)\新增數據(bigint\sql_varant\table)

閱讀全文

與sql的字元數據類型是哪個相關的資料

熱點內容
獸葯什麼時候在哪招代理 瀏覽:730
保時捷水溫數據流怎麼看 瀏覽:80
如何進行建築工程技術鑒定 瀏覽:15
公主家產品有哪些明星代言 瀏覽:190
程序員的朋友圈是什麼樣的 瀏覽:33
小程序如何添加點擊效果 瀏覽:278
外資代理記賬價格多少 瀏覽:442
城市軌道車輛應用技術專升本可以報什麼 瀏覽:761
如何搭建數據平台 瀏覽:822
重慶哪裡有冷凍食品批發市場 瀏覽:255
保險代理人資格證怎麼取得 瀏覽:144
東莞莞城區哪個市場豆腐好吃 瀏覽:447
定製屬於什麼技術 瀏覽:224
拼多多在哪裡看數據進行分析 瀏覽:483
產品質量診斷有哪些種類 瀏覽:723
什麼產品充電器好用 瀏覽:428
數據未備份會有什麼後果 瀏覽:362
word狀態欄的信息不包括什麼 瀏覽:971
刑事案簡易程序要多久 瀏覽:213
各視頻會員怎麼代理 瀏覽:425