Mysq表的创建和l数据类型
表的創建:
創建表時,由表的設計者在規定,表字段的命名規范有兩種,一種就是駝峰法(userName), 一種是下劃線法 (user_name)
快速入門案例:
create table staff( id int not null default 1 comment "序列號", name varchar(5) not null default '保密' comment '姓名', sex enum('男','女','保密') not null default '保密' comment '性別', birthday date comment '生日', entry_date date comment '入職日期', station varchar(20) not null default '保密' comment '職位', salary decimal(10,2) unsigned not null default 0 comment '薪資', resume text comment '文章' )charset=utf8 engine=myisam;整型:
基本介紹: 用于保存整數的數據類型,常見有(tinyint , smallint , mediumint, int , bigint)
| 類型 | 字節 | 最小值 | 最大值 |
| ? | ? | (帶符號的/無符號的) | (帶符號的/無符號的) |
| TINYINT | 1 | -128 | 127 |
| ? | ? | 0 | 255 |
| SMALLINT | 2 | -32768 | 32767 |
| ? | ? | 0 | 65535 |
| MEDIUMINT | 3 | -8388608 | 8388607 |
| ? | ? | 0 | 16777215 |
| INT | 4 | -2147483648 | 2147483647 |
| ? | ? | 0 | 4294967295 |
| BIGINT | 8 | -9223372036854775808 | 9223372036854775807 |
| ? | ? | 0 | 18446744073709551615 |
?
?
?
?
?
?
?
?
?
說明:
(1)?? 從表示的訪問來看 tinyint < samllint < mediumint <? int? < bigint?(多數情況下在項目中使用tinyint 和int)
(2)?? 數據類型占用的大小不一樣 tinyint(1個字節) < samllint(2個字節) < mediumint (3個字節)<? int(4個字節)? < bigint(8個字節)
(3)?? 整型分為兩種,一種是有符號的額,一種是無符號的。(字段名整型類型 unsigned? ?===> 這個就是無符號??字段名 整型類型? ?===> 這個就是有符號)?
zerofill:表示0填充
(1)當int(4) zerofill 使用,如果添加的整數不夠4位,則數值的左邊使用0進行填充.
(2)int(4) 不能理解成最大只能是4位的數,而應該理解成是0填充的寬度.
(3)當一個字段被zerofill 修飾時,那么這個字段就自動成為unsigned
bit :?bit類型就是位類型.
細節說明:
(1)?? bit 字段在顯示時,按ascii碼對應的字符顯示
(2)?? 查詢的時候仍然可以用數值
(3)?? 位類型。M指定位數,默認值1,范圍1-64位(bit(1-64), 可以通過bit(M) M值來控制我們填充數據的大小.)
(4)?? bit 類型, 只能是unsigned .?
浮點型:
基本介紹:使用的最多的是float , decimal.
float [ M , D ] [ unsigned ] ( M 指定顯示長度,D指定小數位數)
案例說明:float(4,2)表示的范圍是 -99.99 ~ 99.99? ?float(4,2) unsigned 表示的范圍是0~99.99
decimal [ M , D?] [ unsigned ] ( M 指定顯示長度,D指定小數位數)
案例說明:decimal?(4,2)表示的范圍是 -99.99 ~ 99.99? ?decimal?(4,2) unsigned 表示的范圍是0~99.99
說明:
(1)?? float 和 decimal 都可以定義成有符號的或者是無符號的.
(2)?? float(M,D) ,? decimal(M,D)? M: 表示顯示最大長度(即可以顯示多少個數, 包含小數位), D表示有幾位小數
(3)?? float(4,2) 范圍? -99.99-99.99
(4)?? float(4,2) unsigned 范圍? 0-99.99
(5)?? decimal(4,2) 范圍 -99.99-99.99
(6)?? decimal(4,2) unsigned范圍0-99.99
這兩個小數類型的比較說明
(1)?? 默認值不一樣.
float(M,D)? 如果M和D被省略,根據硬件允許的限制來保存值。單精度浮點數精確到大約7位小數位。
decimal(M,D) 如果D被省略, 默認是0。如果M被省略, 默認是10。相當于 decimal(10, 0)? 范圍是? -9999999999 -? 9999999999
(2)?? 如何選擇 :?如果我們希望保存精度較高的值,我們應該選擇 decimal .
字符串:
基本介紹: mysql的字符串類型,用于存放字符串,最主要的有三種, 分別是 char, varchar, text?
字符串使用的注意事項:
(1)char(n) 這里的 n 的范圍是 1-255, 最大255.
(2)varchar(n) 這里的 n的范圍是和表的字符集有關系.
如果表的字符集是 utf8 那么 n 最大是? (65535-3)/3 = 21844
如果表的字符集是 gbk 那么 n 最大是? (65535-3)/2 = 32766
如果表的字符集是 latin1 那么 n 最大是? (65535-3)/1 = 65532
varchar最大是有65535個字節, 但是需要預留3個字節.[有2個字節用于記錄varchar的數據大小,有1個字節標識是否允許為null]
(3)char(n) 是定長, varchar(n) 是變長.(char(4)? =>? 添加? 'aa' => 實際暫用的空間,就是4個字符占用的空間.??varchar(4) => 添加 'aa' =>實際暫用的空間,就是2個字符占用的空間+1)
? 當我們的某個字段的內容長度不確定,我們建議使用varchar.?
(4)?char(n) 會將存入的最后的空格自動刪除,而 varchar(n) 會保留空格. 所以如果你真的有這樣的需求,就是在字段內容的最后保存空格,則應該選用varchar
(5)?? text 數據類型可以視為varchar, 但是不用指定大小, 他可以存放varchar最大的范圍.
(6)?? 一個表的所有自定義的字段,他們定義長度加起來不能超過65535
(7)?? 如果我們字段的長度要大于 65535 字節大小.?我們可以使用 text 來替代 varchar
日期和時間:
基本介紹:?在mysql中,日期和時間類型主要有 (1. date, 2 datetime 3. timestamp)
使用格式:date的格式( 2019-7-14 )??datetime的格式 ( 2019-7-14 00 : 00 : 00 )?timestamp的格式( 2019-7-14 00 : 00 : 00 )?{時間中不能帶空格}
說明:(1)?? 對于date 類型只是接受 日期 , datetime timestamp 有日期和時間,如果你沒有給時間,那么默認是 00:00:00
(2)? ?timestamp 在insert 和 update 時會自動的更新.?添加后 login_time 字段就會自動的更新.
枚舉enum, 集合set:
基本語法:如果對于多選我們可以使用 set 數據類型? ?如果對于單選我們可以使用 enum 數據類型
CREATE TABLE `votes`( id tinyint unsigned not null default 1, hobby set('蘋果','香蕉','西瓜') not null default '蘋果' comment '喜歡的食物', sex enum('男','女','保密') not null default '保密' comment '性別' )charset=utf8 engine=myisam; insert into `votes` value(2,"蘋果,香蕉,西瓜","保密"); insert into `votes` value(2,"蘋果,香蕉","1");說明:
(1)?? 在添加set 和 enum 字段時需要注意幾個問題
(2)?? 首先你添加的選項都是表中規定好的, 添加? set 字段時 '選項1,選項2,選項3',但是中間不能給空格.
細節:
(1)?? 在enum 選項中,選項可以用數字表示:如上面案例中插入的最后一條語句中的 “1” 表示的是“男“
(2)?? 在set 選擇中,也可以使用數字來表示選項(當我們給一個set 賦值時, 這個數就是一個組合的 ('蘋果','西瓜','菠蘿') 對應 1, 2, 4, 然后組合可以進行多項, 比如 7 = 1 + 2 + 4? ,? 6 = 2 + 4 等等 。。。)案例演示:insert into `votes` value(2,"3","1")相當于insert into `votes` value(2,"蘋果 , 香蕉","男");
轉載于:https://www.cnblogs.com/rickyctbur/p/11183598.html
總結
以上是生活随笔為你收集整理的Mysq表的创建和l数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php组合设计模式(composite
- 下一篇: 滴滴CTO五轮面试真是太刺激了,Java