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

如何理解MySQL中的資料類型概念?

Sep 15, 2018 am 11:15 AM

這篇文章帶給大家的內容是關於如何理解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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MySQL的角色:Web應用程序中的數據庫 MySQL的角色:Web應用程序中的數據庫 Apr 17, 2025 am 12:23 AM

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

docker怎麼啟動mysql docker怎麼啟動mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

laravel入門實例 laravel入門實例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

解決數據庫連接問題:使用minii/db庫的實際案例 解決數據庫連接問題:使用minii/db庫的實際案例 Apr 18, 2025 am 07:09 AM

在開發一個小型應用時,我遇到了一個棘手的問題:需要快速集成一個輕量級的數據庫操作庫。嘗試了多個庫後,我發現它們要么功能過多,要么兼容性不佳。最終,我找到了minii/db,這是一個基於Yii2的簡化版本,完美地解決了我的問題。

centos7如何安裝mysql centos7如何安裝mysql Apr 14, 2025 pm 08:30 PM

優雅安裝 MySQL 的關鍵在於添加 MySQL 官方倉庫。具體步驟如下:下載 MySQL 官方 GPG 密鑰,防止釣魚攻擊。添加 MySQL 倉庫文件:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm更新 yum 倉庫緩存:yum update安裝 MySQL:yum install mysql-server啟動 MySQL 服務:systemctl start mysqld設置開機自啟動

centos安裝mysql centos安裝mysql Apr 14, 2025 pm 08:09 PM

在 CentOS 上安裝 MySQL 涉及以下步驟:添加合適的 MySQL yum 源。執行 yum install mysql-server 命令以安裝 MySQL 服務器。使用 mysql_secure_installation 命令進行安全設置,例如設置 root 用戶密碼。根據需要自定義 MySQL 配置文件。調整 MySQL 參數和優化數據庫以提升性能。

laravel框架安裝方法 laravel框架安裝方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

MySQL和PhpMyAdmin:核心功能和功能 MySQL和PhpMyAdmin:核心功能和功能 Apr 22, 2025 am 12:12 AM

MySQL和phpMyAdmin是強大的數據庫管理工具。 1)MySQL用於創建數據庫和表、執行DML和SQL查詢。 2)phpMyAdmin提供直觀界面進行數據庫管理、表結構管理、數據操作和用戶權限管理。

See all articles