搜尋
首頁資料庫mysql教程如何理解MySQL中的資料類型概念?

這篇文章帶給大家的內容是關於如何理解MySQL中的資料類型概念,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

一、數據是什麼?

資料是一個資訊集合,以某種資料類型保存在資料庫裡。數據包括姓名、數字、貨幣、文字、圖像、小數、計算、統計等,幾乎涵蓋任何能夠想像的東西。資料客戶保存為大寫、小寫或大小寫混合,資料可以操作或修改,大多數資料在其生存週期中不會保持不變。

資料類型用於指定列所包含資料的規則,它決定了資料保存在列裡的方式,包括分配給列的寬度,以及值是否可以是字母、數字、日期和時間等。任何資料或資料的組合都有對應的資料類型,這些資料類型用於儲存像字母、數字、日期和時間、影像、二進位資料等。更詳細地說,數據可以包括姓名、描述、數字、計算、圖像、圖像描述、文件等。

資料是資料庫的意義所在,必須受到保護。資料的保護著就是資料庫管理員(DBA),但是每個資料庫使用者也有責任採取必要手段來保護資料。

二、基本資料型別

資料型別是資料本身的特徵,其特性被設定到表裡的欄位。舉例來說,我們可以指定某個欄位必須包含數字值,不允許輸入由數字或字母組成的字串;我們也不希望在儲存貨幣數值的欄位輸入字母。為資料庫裡每個欄位定義資料類型可以大幅減少資料庫裡由於錯誤而產生的錯誤資料。欄位定義(資料類型定義)是一種資料校驗方式,通知了每個欄位裡可以輸入的資料。

1.定長字串。

定長字串通常具有相同的長度,是使用定長資料類型保存的。以下是Sql定長字串的標準:

CHARACTER(n)

n是一個數字,定義了欄位裡能夠保存的最多字元數。

有些Sql實作使用CHAR資料型別來保存定長資料。字母可以保存到這種資料類型裡。

在定長資料型別裡,通常會使用空格來補充數量不足的字元。如果字元長度是10,而輸入的資料只有5位,那麼剩餘5位元就會被記錄為空格。填充空格確保了欄位裡每個值都具有相同的長度。

PS:不要使用定長資料類型來保存長度不定的數據,例如姓名,如果不恰當地使用定長資料類型,可能會導致浪費可用空間,以及影響對不同的資料進行精確比較。應該使用變長資料類型來保存長度不定的字串,從而節省資料庫空間。

2.變長字串。

Sql支援變長字串,也就是長度不固定的字串。以下是Sql變長字串的標準:

CHARACTER VARYING(n)

#n是一個數字,表示欄位裡能夠保存的最多字元數。

常見的變長字串資料型別有VARCHAR、VARINARY和VARCHAR2。 VARCHAR是ANSI標準,Microsoft Sql Server和MySql也使用它;VARINARY和VARCHAR2都是由Oracle使用的。定義為字元的欄位可以保存數字和字母,這表示資料中可能包含數字字元。 VARBINARY類似VARCHAR和VARCHAR2,只是它包含的是長度不定的位元組。這種數據類型通常被用來保存數位式數據,例如影像檔案。

定長資料型別利用空格來填滿欄位裡的空白,但變長字串不會這麼做。舉例來說,如果某個變長欄位的長度定義為10,而輸入的字串長度為5,那麼這個值的總長度也就是5,這時並不會使用空格來填滿欄位裡的空白。

3.大物件類型。

有些變長資料類型需要保存更長的數據,超過了一般情況下為VARCHAR欄位所保留的長度,例如現在常見的BLOB和TEXT資料類型。這些資料類型專門用於保存大數據集的。 BLOB是二進位大對象,它的資料是很長的二進位字串。 BLOB適合在資料庫中儲存二進位媒體文件,例如圖像和MP3.

TEXT資料類型是一種長字串類型,可以被看作一個大VARCHAR字段,通常用於在資料庫中保存大字符集,例如部落格網站的HTML輸入。在資料庫裡保存這種類型的資料可以實現網站的動態更新。

4.數值型別。

數值被保存在定義為某種數值類型的欄位裡,一般包括NUMBER、INTERGER、REAL/DECIMAL等。

蝦米是Sql數值的標準:

(1).BIT(n);

(2).BIT VARYING(n);

# (3).DECIMAL(p,s);

(4).INTEGER;

(5).SMALLINT;

(6).SIGINT;

(7).FLOAT(p,s);

(8).DOUBLE PRECISION(P,S);

(9).REAL(S);

P 表示欄位的最大長度。 s 表示小數點後面的位數。

Sql實作中一個通用的數值型別是NUMERIC,它符合ANSI標準。數值可以是0、正數、定點數和浮點數。以下是使用NUMERIC的範例:

NUMERIC(s),這個指令把字段能夠接受的最大值限制為99 999.在本書範例所涉及的資料庫實現總,NUMERIC都是以DECIMAL類型實現的。

5.小數型。

小數型別是數值的總體長度。舉例來說,在數值定義ZDECIMZAL(4,2)裡,有效位數是4,也就是說數值總位數是4.標度是小數點後面的位數,在前例中是2。如果實際數值的小數位數超過了定義的位數,則數值就會被四捨五入,例如34.33寫入到定義為DECIMAL(3,1)的欄位時,會被四捨五入34.3。

如果數值依照下列方式定義,其最大值就是99.99:

DECIMAL(4,2)

有效位元是4,表示數值的總體長度是4 ;標度是2,表示小數點後面保留2位。小數點本身並不算一個字元。

定義為DECIMAL(4,2)的欄位允許輸入的陣列包括:

(1).12

(2).12.4

# (3).12.44

(4).12.449

最後一個值12.449在儲存到欄位時會四捨五入為12.45。在這種定義,任何12.45~12.499之間的數值會被四捨五入為12.45。

6.整數。

整數是不包含小數點的數值(包括正數和負數)。

下面是一些有效的整數:

(1).1;

#(2).0;

(3).-1;

(4).99;

(5).-99;

(6).199;

7.浮點數。

浮點數是有效位數和標度都可變且沒有限制的小數數值,任何有效位數和標度都是可以的。資料型態REAL代表單一精確度浮點數值,而DOUBLE PRECISION表示雙精確度浮點數值。單精確度浮點數值的有效位數為1~21(包含),雙精確度浮點數值的有效位數為22~53(含)。以下是一些FLOAT資料型別的範例:

(1).FLOAT;

#(2).FLOAT(15);

(3).FLOAT(50) ;

8.日期和時間類型。

日期和時間資料類型很顯然是用來保存日期和時間資訊的。標準Sql支援DATETIME資料型別,它包含下列型別:

(1).DATE;

(2).TIME;

(3).DATETIME;

(4).TIMESTAMP;

DATETIME資料型別的元素包括:

(1).YEAR;

(2).MONTH;

(3).DAY;

(4).HOUR;

(5).SECOND;

ps:SECOND元素還可以再分解為幾分之一秒,其範圍是00.000~61.999,但並非所有Sql實作都支援這個範圍。多出來的1.999秒是用來實現閏秒的。
每種Sql實作可能都是具有自訂的資料類型來保存日期和時間。前面介紹的資料類型和元素是每個Sql廠商都應該遵守的標準,但大多數實作都具有自己的資料類型來保存日期值,其形式與實際儲存方式有所不同。

日期資料一般不指定長度。稍後我們會更詳細地介紹日期類型,包括日期資訊在某些實現中的保存方式、如何使用轉換函數操作日期和時間,並且用範例展示在實際工作中如何使用日期和時間。

9.直義字串。

直義字串就是一系列字符,例如姓名或電話號碼,這是有用戶或程式明確指定的。直義字串包含的資料與前面介紹的資料型別具有相同的屬性,但字串的值是已知的。列本身的值通常是不能決定的,因為每一列通常包含了欄位在全部記錄中的不同值。

其實並不需要把欄位指定為直義字串資料類型,而是指定字串。直義字串的範例如下所示:

(1).'Hello';

(2).45000;

(3).'45000';

(4).3.14;

(5).'November 1 ,1997';

字元型的字串由單引號包圍,數值45000沒有單引號包圍,而第二個45000用雙引號包圍了。一般來說,字元型字串需要使用單引號,而數值型不需要。

將一個資料類型成數值類型的過程過程術語隱含轉換。在這個過程中,資料庫會自動判斷應該使用哪種資料類型。所以,如果一個資料沒有使用單引號包圍起來,那麼Sql程式就會將其認定為數值類型。因此,必須特別留意數據的形式。否則,儲存結果可能會出現偏差,或報錯。稍後將介紹如何在資料庫查詢中使用直義字串。

10.NULL資料型別。

NULL值表示沒有值。 NULL值在Sql裡有廣泛的應用,包括表格的建立、查詢的搜尋條件,甚至是直義字串。

在使用NULL資料類型時,需要明確表示對應欄位不是必須要輸入資料的。如果某個欄位必須包含數據,就把它設為NOT NULL,只要欄位有可能不包含數據,最好就把它設為NULL。

11.布林值。

布林值的取值範圍是TRUE、FlASE和NULL,用來進行資料比較。舉例來說,在查詢中設定條件時,每個條件都會被求值,得到TRUE、FLASE或NULL。如果查詢中所有條件的值都是TRUE,資料就會被傳回;如果某個條件的值是FLASE或NULL,資料就不會回傳。例如下面這個範例:

WHERE NAME =‘SMITH’

這可能是查詢裡的一個條件,目標表裡每行資料都是根據這個條件求值。如果表裡某行的NAME欄位值是SMITH,條件的值就是TRUE,對應的記錄就會被傳回。

大多數資料庫實作並沒有一個嚴格意義上的BOOLEAN類型,而是代之以各自不同的實作方法。 MySql用於BOOLEAN類型,但實質上與其現有的TINYINT類型相同。 Oracle傾向於讓使用者使用一個CHAR(1)值來取代布林值,而Sql Server則使用BIT來取代。

12.自訂類型。

自訂類型是由使用者定義的類型,它允許使用者根據現有的資料類型來自訂自己的資料類型,從而滿足資料儲存的需求。自訂類型極大的豐富了資料儲存的可能性,使開發人員在資料庫程式開發過程中具有更大的靈活性。語句CREATE TYPE用於建立自訂類型。

舉例來說,在MySql和Oracle中,可以像下面這樣建立一個型別:

CREATE TYPE PERSON ASOBJECT

(NAME VARCHER (30),

SSN  VARCHAR(9);

)

然後可以像下面這樣引用自訂類型:

CREATE TABLE EMP_PAY

# (EMPLOYEE PERSON,

 SALARY DECIMAL(10,2),

HIRE_DATE DATE);

表EMP_PAY第一列EMPLOYEE的類型是PERSON,這正是在前面建立的自訂類型。

13.域。

域是能夠被使用的有效資料型別的集合。域與資料相關聯,從而只接受特定的資料。在網域建立之後,我們可以向網域新增約束。約束與資料類型共同發揮作用,從而進一步限製字段能夠接受的數據。域的使用類似於自訂類型。

像下面這樣就可以建立域:

CREATE DOMAIN MONEY_D AS NUMBER(0,2);

就像下面這樣為網域新增約束:

ALTER DOMAIN MONEy_D

ADD CONSTRAINT MONEY_CON

CHECK(VALUE>5);

然後像下面這樣引用域:

CREATE TABLE EMP_PAY

#(EMP_ID NUMBER(9),

EMP_NAME VARCHER2(30),

PAY_RATE MONEY_D);

#三、小結

Sql具有多種資料類型,對於使用過其他程式語言的人來說,這些都不算陌生。資料類型允許不同類型的資料保存到資料庫,例如單一字元、小數、日期和時間。無論是使用像c這樣的第三代程式語言,或是使用關係型資料庫實作Sql編碼,資料類型的概念都是一樣的。當然,不同實作中資料類型的名稱坑你有所不同,但其工作方式基本上是一樣的。另外,關係型資料庫管理系統並不是一定要實現,ANSI標準裡規定的全部資料類型才會被認為是與ANSI相容的,因此最好查看具體的文件來了解尅使用的資料類型。

在考慮資料類型、長度、標度和精確度時,一定要仔細地進行短期和長遠的規劃。另外,公司製度和希望使用者以什麼方式存取資料也是要考慮的因素。開發人員應該了解資料的本質。以及資料在資料庫裡是如何相互關聯的,從而使用恰當的資料型態。


本篇文章只是描述了Sql的資料型態!純文字描述!本篇文章摘錄自《Sql入門經典》。下篇文章說明Sql小白入門(三)管理資料庫對象 !


#

以上是如何理解MySQL中的資料類型概念?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
dint是什么数据类型dint是什么数据类型Sep 05, 2022 am 11:05 AM

dint是带符号位的32位整数类型;dint的表示方法及范围是“L#-2147483648~L#+2147483647”,定义为双整数或长整数,字节是电脑里的数据量单位,在计算机中,数据只用0和1这种表现形式。

Python时间序列数据操作的常用方法总结Python时间序列数据操作的常用方法总结Apr 24, 2023 pm 10:22 PM

时间序列数据是一种在一段时间内收集的数据类型,它通常用于金融、经济学和气象学等领域,经常通过分析来了解随着时间的推移的趋势和模式Pandas是Python中一个强大且流行的数据操作库,特别适合处理时间序列数据。它提供了一系列工具和函数可以轻松加载、操作和分析时间序列数据。在本文中,我们介绍时间序列数据的索引和切片、重新采样和滚动窗口计算以及其他有用的常见操作,这些都是使用Pandas操作时间序列数据的关键技术。数据类型Python在Python中,没有专门用于表示日期的内置数据类型。一般情况下都

mysql性别用什么类型mysql性别用什么类型Jun 13, 2023 am 11:33 AM

MySQL性别采用多种数据类型来表示性别字段,例如CHAR、ENUM等,最终采用哪种类型,取决于实际需求以及数据存储的大小和性能。

java的数据类型有哪些java的数据类型有哪些Jan 30, 2024 pm 03:23 PM

java数据类型:1、整型;2、浮点型;3、字符型;4、布尔型;5、其他数据类型;6、引用类型;7、原始类型与封装类;8、自动装箱与拆箱;9、可变参数;10、注解;11、枚举;12、原始类型和引用类型的选择。Java是一种强类型语言,因此每种数据都有其固定类型。

decimal是什么类型decimal是什么类型Mar 18, 2021 pm 04:03 PM

decimal是MySQL中存在的精准数据类型,语法格式“DECIMAL(M,D)”。其中,M是数字的最大数(精度),其范围为“1~65”,默认值是10;D是小数点右侧数字的数目(标度),其范围是“0~30”,但不得超过M。

MySQL数据类型详解:你需要知道的知识点MySQL数据类型详解:你需要知道的知识点Jun 15, 2023 am 08:56 AM

MySQL是世界上最流行的关系型数据库管理系统之一,因其可靠性、高安全性、高扩展性以及相对低的成本而得到了广泛应用。MySQL的数据类型定义了各种数据类型的存储方式,是MySQL的重要组成部分。本文将详解MySQL的数据类型,以及在实际应用中需要注意的一些知识点。一、MySQL的数据类型分类MySQL的数据类型可以分为以下几类:整数类型:包括TINYINT、

PHP8中支持的新数据类型可以让你的代码变得更加清新PHP8中支持的新数据类型可以让你的代码变得更加清新Jun 21, 2023 am 11:20 AM

随着PHP8的发布,这个流行的编程语言引入了新的数据类型,这些新类型可以大大简化代码并提高代码的可读性。在本文中,我们将介绍PHP8中的四种新类型:联合类型、命名参数、只读属性和允许为空的属性,并解释它们如何为开发者带来更好的编程体验。联合类型联合类型是PHP8中引入的一种新类型,它可以让开发者在一个变量中存储多种不同类型的值。例如,一个变量可以

mysql中银行卡号用什么类型mysql中银行卡号用什么类型Jun 14, 2023 pm 04:34 PM

mysql中银行卡号用“varchar”字符串类型,因为银行卡的号码较长并且全是数字,为了方便存储,就统一存储为字符串类型。如果用“number”类型,会超出“int”类型的最大值范围,必须用“bigInteger”存储,而它不利于数据的正常转换。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器