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 這兩個屬性跨越的兩個表,因此就需要將兩個表連線起來後在進行查詢。...