MySQL學習筆記(三) 資料與字段型別

2021-08-28 05:59:16 字數 3951 閱讀 7161

回顧資料庫系統組成。

資料表是乙個資料庫裡面用來儲存資料的基本單元,是由表結構、表資料組成。

sql語句不區分大小寫,但是表就是乙個檔名,windows不區分大小寫,linux區分大小寫,所以在命名時候,需要注意:

1、一定要有意義(英文或英文組合和多個單詞的縮寫)

2、 自己定義的名稱最好都是小寫

3、 sql語句關鍵字最好都大寫

表的作用:存放相同規則的資料

表是有由列和資料組成的。每行資料稱作乙個條目,每一列稱作乙個字段

create

table[if

notexists

] 表名稱(

欄位名1 列型別 [屬性]

[索引]

,欄位名2 列型別 [屬性]

[索引],.

....

.欄位名n 列型別 [屬性]

[索引]

)[表型別]

[表字符集型別]

;

表名稱和欄位名 需要使用者自定義名稱;

sql語句不區分大小寫,但是表就是乙個檔名,windows不區分大小寫,linux區分大小寫,所以在命名時候,需要注意:

一定要有意義(英文或英文組合和多個單詞的縮寫,避免使用拼音)

自己定義的名稱最好都是小寫

sql語句關鍵字最好都大寫

建表過程中,每個字段需要提供型別,屬性,約束等描述資訊描述和規範這個字段。

型別

型別就用來描述欄位所儲存的什麼型別的資料,在sql中,主要有以下幾種資料型別:

日期型字元型

3.1.1 整型

標註1:unsigned 代表有無符號

zerofill代表:

1、 插入資料時,當該字段的值的長度小於定義的長度時,會在該值的前面補上相應的0

2.、zerofill預設為int(10)

3.、當使用zerofill 時,缺省會自動加unsigned(無符號)屬性,使用unsigned屬性後,數值範圍是原值的2倍,例如,有符號為-128+127,無符號為0256。

標註2:(m)代表現實的位數

tinyint[(m)] [unsigned] [zerofill]

smallint[(m)] [unsigned] [zerofill]

mediumint[(m)] [unsigned] [zerofill]

int[(m)] [unsigned] [zerofill]

integer[(m)] [unsigned] [zerofill]

bigint[(m)] [unsigned] [zerofill]

總結1:

佔空間大小:1,2,3,4,8位元組分別對應:

*tinyint 非常小

*smallint 較小

*mediuint 中等

*int 標準

*bigint 大整形

3.1.2浮點型

float[(m,d)] [zerofill]

double[(m,d)] [zerofill]

double precision[(m,d)] [zerofill]

real[(m,d)] [zerofill]

decimal[(m[,d])] [zerofill]

numeric(m,d) [zerofill]

總結:float 4位元組。 double 8 位元組

m:整個數值的長度 d:小數的長度

例:float[(m,d)][zerofill]

create table t4(float(4,2)); - 99.99

定點數(本質上是按照字串來進行儲存),沒有四捨五入,對於精度要求高的,推薦使用

decimal(m,d) m+2位元組

浮點數和定點數區別:

浮點數相對於定點數優點是在長度一定的情況下,浮點數表示範圍更寬,但其存在誤差問題,對於貨幣等精度敏感的資料,應該使用定點數表示,程式設計過程中尤其注意浮點數誤差問題。

另外,由於浮點數存在誤差,所以在專案裡面盡可能少的不要用浮點數做=進行比較判斷。

mysql>

create

table test (c1 float(10

,2),c2 decimal(10

,2))

;query ok,

0rows affected (

0.29 sec)

mysql>

insert

into test values

(131072.32

,131072.32);

query ok,

1row affected (

0.07 sec)

mysql>

select

*from test;

+-----------+-----------+

| c1 | c2 |

+-----------+-----------+

|131072.31

|131072.32|+

-----------+-----------+

1row

inset

(0.00 sec)

3.2日期型

舉例:

mysql>

create

table tab10(

one date

,two time

,three datetime

,four timestamp

,five year);

mysql>

insert

into tab10(one)

values

(「20101201」)

;//2010-12-01 2010/12/01

mysql>

insert

into tab10(one,two,three)

values

(「20101201」,『13:12:11』,』11-02

-0911:11:11』)

;

3.3.1字元型

是最基本的型別,可以表示任何一種型別的值,「mysql」 『mysql』都是可以的;

char 和 varchar

應用場景:

blob

blob代表位元組流,用來儲存二進位制資料,**、電影、壓縮包。一般我們並不在資料庫中直接存放多**資料,而是將資源存在伺服器,資料庫中只儲存儲存的路徑即可。

3.3.2列舉和集合

mysql>

create

table tab9(one enum

(『a』,』b』,』c』,』d』)

,two set

(『a』,』b』,』c』,』d』));

mysql>

insert

into tab9 values

(『a』,』b』)

;//ok

mysql>

insert

into tab9 values

(『c』,』c,d』)

;//ok

set(『value1』,『value2』,…)

乙個集合。能有零個或多個值的乙個字串物件,其中每乙個必須從值列表』value1』, 『value2』, …選出。乙個set最多能有64個成員。

列舉和集合的區別:

列舉一次只能使用乙個列舉元素值,而集合可以一次使用多個值,中間使用」,」隔開即可。

mysql學習筆記 字段型別(一)

mysql欄位型別研究,字段型別有下面幾個大類 數值型別 日期和時間型別 string型別 mysql支援所有標準sql數值資料型別。這些型別包括嚴格數值資料型別 integer smallint decimal和numeric 以及近似數值資料型別 float real和double precis...

Mysql學習筆記(三)

所謂的子查詢,就是在 乙個查詢中巢狀了其他的若干查詢 即在乙個select查詢語句中的where和from子句中包含另乙個select查詢語句。在查詢語句中,外層的select查詢語句稱為 主查詢 where子句中的select查詢語句被稱為 子查詢 也稱巢狀查詢。列子查詢是指查詢結果返回的結果集是...

MySQL學習筆記(三)

一 修改提示操作符的命令 prompt 用法 prompt 後面接入 u 使用者名稱 h 伺服器的名字 d 當前開啟的資料庫 問題 但是這個命令有個問題是,當你在設定了你的 提示符的格式後,你退出了資料庫,等你下次再進來資料庫的時候提示符又變為了系統預設的,如何才能夠一次設定好,就不會變了呢?解決 ...