1. 程式人生 > 實用技巧 >lyt經典版MySQL基礎——常見的資料型別

lyt經典版MySQL基礎——常見的資料型別

  1 #常見的資料型別
  2 /*
  3 數值型:
  4     整型
  5     小數:
  6         定點數
  7         浮點數
  8 字元型:
  9     較短的文字:char、varchar
 10     較長的文字:text、blob(較長的二進位制資料)
 11 日期型:
 12     
 13     
 14 */
 15 
 16 #一、整型
 17 /*
 18 tinyint、smallint、mediumint、int/integer、bigint
 19    1         2         3          4          6
20 特點: 21 (1)如果不設定無符號還是有符號,預設是有符號,如果想設定無符號,需要新增unsigned關鍵字 22 (2)如果插入的數值超出了整型的範圍,會報out of range異常,並且插入臨界值 23 (3)如果不設定長度,會有預設的長度 24 長度代表了顯示的最大寬度,如果不夠會用0在左邊填充,但必須搭配zerofill使用 25 */ 26 27 #1.如何設定無符號和有符號 28 DROP TABLE IF EXISTS tab_int; 29 CREATE TABLE tab_int( 30 t1 INT(7) ZEROFILL, 31 t2 INT
(7) ZEROFILL 32 ); 33 34 DESC tab_int; 35 36 INSERT INTO tab_int VALUES(-123456,-123456); 37 INSERT INTO tab_int VALUES(2147183648,4294967296); 38 INSERT INTO tab_int VALUES(123,123); 39 SELECT * FROM tab_int; 40 41 #二、小數 42 /* 43 1.浮點型 44 float(M,D) 45 double(M,D) 46 2.定點型 47 dec(M,D)
48 decimal(M,D) 49 50 特點: 51 (1)M和D 52 M:整數部位+小數部位 53 D:小數部位 54 如果超過範圍,則插入臨界值 55 (2) 56 M和D都可以省略 57 如果是decimal,則M預設為10,D預設為0 58 如果是float和double,則會根據插入的數值的精度來決定精度 59 60 (3)定點型的精確度較高,如果要求插入數值的精度較高如貨幣運算等則考慮使用 61 */ 62 63 DROP TABLE tab_float; 64 CREATE TABLE tab_float( 65 f1 FLOAT, 66 f2 DOUBLE, 67 f3 DECIMAL 68 ); 69 SELECT * FROM tab_float; 70 INSERT INTO tab_float VALUES(123.4523,123.4523,123.4523); 71 INSERT INTO tab_float VALUES(123.456,123.456,123.456); 72 INSERT INTO tab_float VALUES(123.4,123.4,123.4); 73 INSERT INTO tab_float VALUES(1523.4,1523.4,1523.4); 74 75 #原則: 76 /* 77 所選擇的型別越簡單越好,能儲存數值的型別越小越好 78 */ 79 80 #三、字元型 81 /* 82 較短的文字: 83 char 84 varchar 85 86 其他: 87 binary和varbinary用於儲存較短的二進位制 88 enum用於儲存列舉 89 set用於儲存集合 90 91 較長的文字: 92 text 93 blob(較大的二進位制) 94 95 特點: 96 97 98 寫法 M的意思 特點 空間的耗費 效率 99 char char(M) 最大的字元數,可以省略,預設為1 固定長度的字元 比較耗費 高 100 varchar varchar(M) 最大的字元數,不可以省略 可變長度的字元 比較節省 低 101 102 */ 103 104 CREATE TABLE tab_char( 105 c1 ENUM('a','b','c') 106 ); 107 108 INSERT INTO tab_char VALUES('a'); 109 INSERT INTO tab_char VALUES('b'); 110 INSERT INTO tab_char VALUES('c'); 111 INSERT INTO tab_char VALUES('m'); 112 INSERT INTO tab_char VALUES('A'); 113 114 SELECT * FROM tab_char; 115 116 CREATE TABLE tab_set( 117 s1 SET('a','b','c','d') 118 ); 119 INSERT INTO tab_set VALUES('a'); 120 INSERT INTO tab_set VALUES('A,B'); 121 INSERT INTO tab_set VALUES('a,c,d'); 122 123 SELECT * FROM tab_set; 124 125 #四、日期型 126 /* 127 分類: 128 date只儲存日期 129 time只儲存時間 130 year只儲存年 131 132 datetime儲存日期+時間 133 timestamp儲存日期+時間 134 135 特點: 136 位元組 範圍 時區等的影響 137 datetime 8 1000-9999 不受 138 timestamp 4 1970-2038 受 139 140 */ 141 CREATE TABLE tab_date( 142 t1 DATETIME, 143 t2 TIMESTAMP 144 ); 145 146 INSERT INTO tab_date VALUES(NOW(),NOW()); 147 SELECT * FROM tab_date; 148 149 SHOW VARIABLES LIKE 'time_zone'; 150 151 SET time_zone='+9:00';