標籤:ar os sp strong on 檔案 資料 bs ad
所謂建表,就是聲明列的過程:
資料是以檔案的形式放在硬碟中(也有放在記憶體裡的)
列:不同的列類型占的空間不一樣
選列的原則:夠用又不浪費;
mysql的資料類型:
整形:Tinyint(1位元組) Smallint(2個位元組) Mediumint(3個位元組) int(4個位元組) bigint(8個位元組);
Tinyint在mysql預設是有符號的(-128----127);
Tinyint(M) unsigned zerofill
unsigned : 是無符號,影響儲存範圍;
M代表寬度,(必須配合zerofill時才有意義)
Zerofill 零填充,如果某列是zerofill,預設是unsigned(類似00005);
insert into classs (name, age4)values (‘zhaoliu‘, 9);
列可以聲明預設值,而且推薦聲明預設值
Not NULL default 0
alter table class add age5 tinyint not null default 0;
小數型/浮點型定點型:
Float(M, D)
decimal(M, D)
//M:精度(總位元,不包含點) D:標度(小數位)
create table goods(
name varchar(10) not null default ‘‘,
price float(6, 2) not null default 0.00) //9999.99, -9999.99
//price float(6, 2) unsigned not null default 0.00) //0-9999.99,
charset utf8;
inert into goods
(name, price)
values
(‘跑步機‘, ‘688,896’)
//記錄在表中price的值為688.90
alter table goods add bigprice float(9.2) not null default 0.0;
alter table goods add deciprice decimal(9.2) not null default 0.0;
alter table goods (name, bigprice, deciprice)
values
(‘單車‘, 1234567.23, 1234567.23);
字元型
char 定長字串 char(M),M代表寬度,即可容納的字元數;
Varchar 變長字串 Varchar(M),M代表寬度,即可容納的字元數;
區別:
char定長: M個字元如果存的小於M個字元,實占M個字元;利用率是100%
varchar變長: M個字元如果存的小於M個字元,假設為N,實占N個字元;
實占的字元需要記錄消耗1--2個字元;實際佔有(N+1~2)個字元;
char 與varchar選擇原則:
1、空間利用效率;
2、速度;
四字成語表,char(4);
個人微博, varchar(140);
使用者名稱:char,犧牲空間,提供速度;
text 文本串,比較大段文本,速度稍慢;
注意:text不要加預設值,加了也不生效;
create table stu(
name char(8) not null default ‘‘,
waihao varchar(16) not null default ‘‘
)charset utf8; //name最多容納8個utf8字元;
insert into stu(name, waihao)
values
(‘zhangxiaosan‘, ‘saner‘); //拆入不進去,zhangxiaosan太長了;
insert into stu(name, waihao)
values
(‘zhangsan‘, ‘saner‘);
insert into stu(name, waihao)
values
(‘默罕默德買買提‘,‘非同步拉欣’);
select concat (name, ‘!‘), concat(waihao, ‘!‘) from stu;
alter table std add info text not null default ‘‘;
//執行錯誤;不能預設值;
mysql之資料類型