MySQL基礎回顧 三 資料庫中的資料型別

2021-10-03 15:26:12 字數 3045 閱讀 9477

1.int型

在mysql中int型是使用頻率很高的型別,常用int型別來表示標準的整數,它的大小為四個位元組。

在mysql的資料型別中是這樣定義的:

整型型別(顯示寬度)
所以int(3),這個3不是說最大儲存3位數,而是最大顯示寬度,比如int(1)可以插入1,11,1111或者更大的數。而int(3)分別插入2,20,200分別顯示為002,020,200。所以整型的顯示寬度僅僅用於顯示補0。

2.float、double和decimal型

float和double屬於浮點型,decimal屬於定點型。

格式均為:

資料型別(m,d)
m:精度,表示資料的總長度;

d:標度,表示小數點後的長度;

關於他們的大小:

float佔4個位元組,double佔8個位元組,decimail(m,d)佔m+2個位元組。

區別:

對於精度比較高的東西,比如money,我會用decimal型別,不會考慮float,double,因為他們容易產生誤差。

float和double如果不寫精度和標度,會按照實際精度值儲存,如果有精度和標度,則會自動將四捨五入後的結果插入,系統不會報錯。如果用flocat型別的去存與金額有關的資料的時候就會出現問題。decimail如果不寫精度和標度,則按照預設值decimal(10,0)來操作,如果資料超過了精度和標度值,系統會報錯。

3.不常用的數值型別

1.char和varchar型別

定義方式:

字串型別(m)
在這裡這個m是長度的意思,插入該列的字串長度將不允許超過m所指定的長度。

大小:

char和varchar的區別

1、 char一定會使用指定的空間,varchar是根據資料來定空間

2、 char的資料查詢效率比varchar高:varchar是需要通過後面的記錄數來計算。

3.如果確定資料一定是佔指定長度,那麼使用char型別;如果不確定資料到底有多少,那麼使用varchar型別。如果資料長度超過255個字元,不論是否固定長度,都會使用text,不再使用char和varchar。

2.其他字串型別

文字型別:本質上mysql提供了兩種文字型別,分別為text和blob。

二者區別:

text型別:

系統中提供的四種text

mysql中有五種表示日期和時間的資料型別。其中year型別表示時間,date型別表示日期,time型別表示時間,datetime和timestamp表示日期和時間。

1.year

year型別使用1個位元組來表示年份,mysql中以yyyy的形式來顯示year型別的值。

關於year的使用有以下幾點要注意:

2.date

date型別使用4個位元組來表示日期。mysql中是以yyyy-mm-dd的形式顯示date型別的值。

其中,yyyy表示年,mm表示月,dd表示日。date型別的範圍可以從『1000-01-01』----『9999-12-31』。

在mysql中對於date型別的賦值格式不是很嚴格。

小結:date型別值大小4個位元組,如果只需要記錄日期,選擇date型別是最合適的。雖然mysql支援的data型別的一些不嚴格的語法格式,但是,在實際應用中,最好還是選擇標準形式。

3.time

time型別使用3個位元組來表示時間。mysql中以hh:mm:ss的形式顯示time型別的值。其中,hh表示時;mm表示分,取值範圍為0-59;ss表示秒,取值範圍是00–59。

time型別的範圍可以從『-838:59:59』–『838:59:59』。雖然,小時的範圍是0~~23,但是為了表示某種特殊需要的時間間隔,將time型別的範圍擴大了。而且還支援了負值。

於time型別的總結:

1,乙個合法的time值,如果超出了time的範圍,將被裁為範圍最接近的端點。舉個例子,『880:00:00』將轉換為838:59:59。

2.如果插入的time值是無效的,系統會提示報錯,即使這個無效值被插入到表中了,其值也會被轉換為00:00:00。

3.time型別專門用來儲存時間資料,而且只佔3個位元組,所以如果只需要記錄時間,選擇time型別是最合適的。

4.datetime

datetime型別使用8個位元組來表示日期和時間。mysql中以『yyyy-mm-dd hh:mm:ss』的形式來顯示datetime型別的值。

從其形式上可以看出,datetime型別可以直接用date型別和time型別組合而成。

與date型別很像,在mysql中對於datetime型別的賦值格式也不是很嚴格。

小結:最常用的時間格式,如果需要同時記錄日期和時間,選擇datetime型別是個很好的選擇。

5.timestamp

timestamp型別使用4個位元組來表示日期和時間。timestamp型別的範圍是從1970-01-01 08:00:01~~2038-01-19 11:14:07。

mysql中也是以『yyyy-mm-dd hh:mm:ss』的形式顯示timestamp型別的值。從其形式可以看出,timestamp型別與datetime型別顯示的格式是一樣的。值得注意的是,timestamp型別範圍比較小,沒有datetime型別的範圍那麼大。所以輸入值時要保證在timestamp型別的有效範圍內。

注意點:

所以需要的時間範圍比較大時,還是選擇datetime型別比較安全。

資料庫基礎回顧 DQL

dql 查詢操作 1.多個字段查詢 select 欄位1,欄位2.from 表名 查詢所有 select from 表名 2.去重關鍵字 distinct 3.計算列 一般可以使用四則運算計算一些列的值 ifnull 表示式1,表示式2 null參與計算的運算,結果都為null,表示式1 哪個字段需...

MySQL資料庫基礎 六 資料庫三正規化

資料庫的設計正規化是資料庫設計所需要滿足的規範,滿足這些規範的資料庫是簡潔的 結構明晰的,同時,不會發生插入 insert 刪除 delete 和更新 update 操作異常。反之則是亂七八糟,不僅給資料庫的程式設計人員製造麻煩,而且面目可憎,可能儲存了大量不需要的冗餘資訊。所謂第一正規化 1nf ...

資料庫常用操作回顧三

接著上次的常用操作二補充涉及多個表的查詢。首先用乙個問題引導情景,目前有兩個表,分別是用於存放教學安排資訊的teaches表和用於存放課程資訊的course表,表結構描述如下 現在要查詢在夏季 summer 開課的課程名稱 title 這兩個屬性跨越的兩個表,因此就需要將兩個表連線起來後在進行查詢。...