MySQL学习笔记_2_MySQL创建数据表(上)
MySQL創(chuàng)建數(shù)據(jù)表(上)
一、創(chuàng)建數(shù)據(jù)表的SQL語句模型【弱類型】
CREATETABLE [IF NOT EXISTS] 表名稱(
字段名1列的類型[屬性][索引],
字段名2 列的類型[屬性][索引],
…
字段名n列的類型[屬性][索引],
)[表屬性][表字符集];
【表名稱,字段名需要自己來命名】
【SQL語句并不區(qū)分大小寫,但是一個文件名:在Windows下不區(qū)分大小寫,但是在 Linux/UNIX下是區(qū)分大小寫的】
【命名規(guī)則: 1、有意義(英文,英文組合或英文縮寫)
2、自己定的名稱最好小寫。
3、SQL語句最好大寫。】
1、 CREATETABLE users(
idINT,
nameCHAR(32)
);
2、 SHOWTABLES;
3、 DESCusers;
4、 SELECT* FROM users;
二、數(shù)據(jù)值與列類型
都以空間大小來細分,能夠存下即可!
1、數(shù)值型
整型(整數(shù)):
非常小整數(shù)型 1字節(jié) -128~127 0~255(無符號) TINYINIT
較小整數(shù)型 2字節(jié) -32768~32767 SMALLINIT
中等大小整數(shù)型 3字節(jié) 0~16777215 MEDIUMIINT
標準整數(shù)型 4字節(jié) -2147483648~2147483647 INT
大整數(shù)型 8字節(jié) BIGINT
【可以添加屬性:UNSIGNED】
浮點型(小數(shù)):
FLOAT(M,N) 4字節(jié) 【長度M,保留小數(shù)點后N位】
DOUBLE(M,N) 8字節(jié) 【五舍六入】
DECIMAL(M,N) M+2字節(jié) 【定點數(shù),以字符串形式存儲數(shù)據(jù), 更精確的保存數(shù)據(jù),但是效率會有所折扣。】【四舍五入】
【浮點數(shù)會存在誤差,因此在對數(shù)字敏感的時候,需要用定點數(shù)來存儲!】
3、字符型
MySQL支持以單引號與雙引號表示字符串類型。
如“MySQL”與 'MySQL'相同
char(M) 最大255 固定長度字符串
varchar(M) 最大255 可變長度字符串
char(4) varchar(4)// 永遠比字符多一個字節(jié)
'' 4 '' 1字節(jié)
'a' 4 'a' 2字節(jié)
'abcd' 4 'abcd' 5字節(jié)
'abcdefg' 4 'abcdefgh' 5字節(jié)
char類型會截取尾部的空格;
示例: CREATETABLE IF NOT EXISTS tab(v varchar(4),c char(4));
INSERTINTO tab(v,c) VALUES(“ab ”,”ab ”);
SELECTCONCAT(v,”#”),CONCAT(c,”#”) FROM tab;
最佳實踐:
固定長度,推薦使用char類型(可能會浪費一定空間)。
可變長度,推薦使用varchar類型(可能會付出一些性能損耗)
text 文本數(shù)據(jù):文章,日志 長度:2^16-1
MEDIUMTEXT
LONGTEXT
blob 二進制數(shù)據(jù):照片,電影 長度:2^16-1
MEDIUMBLOB
LONGBLOB
【雖然沒法通過SQL語句將照片,電影,壓縮包等二進制文件插入到數(shù)據(jù)庫中, 但是我們可以通過C++/Java等編程語言將二進制文件讀成二進制數(shù)據(jù)流,然 后保存到數(shù)據(jù)庫中】
ENUM 枚舉 1~2字節(jié)
ENUM(“one”,”two”,”three”,”four”)~65535
一次只能有一個值
SET集合 1,2,3,4,8字節(jié)
SET(“one”,”two”,”three”,”four”)~64
一次可以有多個值,用“,”隔開。
4、日期型
DATE YYYY-MM-DD //如果位數(shù)充足,可以不用加‘-’
TIME hh:mm:ss //位數(shù)充足,可以忽略‘:’,位數(shù)不足,從后面截取
DATETIME YYYY-MM-DDhh:mm:ss
TIMESTAMP YYYYMMDDhhmmss //位數(shù)不足時,不可忽略前導0
YEAR YYYY
【創(chuàng)建數(shù)據(jù)表時,最好不要使用這些時間值,最好使用C++/Java等編程語言中的整數(shù)來保存 時間,這樣更方便計算,如C++中的int,PHP中時間戳1970-1-10:0:0】
總結
以上是生活随笔為你收集整理的MySQL学习笔记_2_MySQL创建数据表(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2013ACM暑假集训总结-致将走上大三
- 下一篇: 《Linux内核设计与实现》读书笔记(十