回顧資料庫系統組成。
資料表是乙個資料庫裡面用來儲存資料的基本單元,是由表結構、表資料組成。
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:3.1.2浮點型佔空間大小:1,2,3,4,8位元組分別對應:
*tinyint 非常小
*smallint 較小
*mediuint 中等
*int 標準
*bigint 大整形
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 當前開啟的資料庫 問題 但是這個命令有個問題是,當你在設定了你的 提示符的格式後,你退出了資料庫,等你下次再進來資料庫的時候提示符又變為了系統預設的,如何才能夠一次設定好,就不會變了呢?解決 ...