MySQL學習筆記_3_MySQL建立資料表(中),學習筆記_3_mysql
MySQL建立資料表(中)三、資料欄位屬性
1、unsigned【無符號】
可以讓空間增加一倍比如可以讓-128~127增加到0~255
注意:只能用在數值型欄位
2、zerofill【前置字元為零】
e.g. createtable if not exists t2(num int(5) zerofill,price float(7,2)zerofill,name varchar(10));
注意:只能用在數值型欄位,自動加上無符號屬性
3、auto_increment【自增】 #auto自動;increment增量,增加
當插入值為:NULL,0,留空時,會自動+1;當插入已經存在的值時,則會報錯
注意:只能用於整數,欄位值不允許重複(需要結合其他屬性實現,如:primarykey) #primary主要的;初級的,基本的。
e.g. createtable if not exists t3(id int auto_increment primary key,namechar(10));
insertinto t3(id,name) values(null,”xiaofang”); #可以連續插入n次,null可以換成0
insertinto t3(name) values(“xiaofang”);
插入時,會按照最大的數加1的順序插入
e.g. deletefrom t3 where id >1 and id <9;
然後按照前面的語句插入
select* from t3 order by id;
deletefrom t3;
insertinto t3(name) values(“xiaofang”); # * 5
select* from t3;
insertinto t3(id,name) values(100,”ashun”);
insertinto t3(name) values(“jichang”) # * 5
select* from t3 order by id;
最佳實務:每個表最好都設定一個ID欄位,設定為自增長屬性,auto_increment
4、NULL和NOTNULL
NULL:預設是空
建議:在建立表時,每個欄位都不要插入空值,因為NULL值在轉換為其他程式語言時存在很多不確定因素。
NOTNULL:非空
e.g. createtable if not exists t4(id int not null,name varchar(10) notnull,price double(7,2) not null) ;
5、default【預設值】
e.g. createtable if not exists t5(id int not null default 0,name varchar(10) notnull default “NULL”,price double(7,2) not null default 0.00);
6、綜合
createtable users(
idint unsigned not null auto_increment primary key,
namevarchar(30) not null default “”,
heightdouble(10,2) not null default 1.00,
ageint unsigned not null default 1,
sexvarchar(5) not null default ”man”);
四、建立索引
1、主鍵索引【primarykey】 #duplicate複製,使加倍 entry進入,侵入
作用:確定資料庫表裡一條特定資料記錄的位置,一個表只能有一個主鍵,並且,主鍵的值不可為空。
建議:最好為每一個資料表定義一個主鍵!
e.g. 1)create table t7(id int not null auto_increment primary key,namevarchar(10));
2) createtable t7(
idint not null auto_increment,
namevarchar(10) not null '',
primarykey(id)); #在最後指定主鍵索引
2、唯一索引【unique】 #unique唯一的,獨一無二的
都可以防止建立重複的值,但是,每個表可以有多個唯一索引
createtable if not exists users(id int not null auto_increment,namevarchar(30) not null default '' unique,age int,primary key(id));
3、常規索引【index/key】
是最重要的技術,可以提升資料庫的效能,是資料庫最佳化最先考慮的方面。索引可以提高尋找的速度,但是會減慢插入,刪除,修改的速度
和表一樣是獨立的資料對象,可以在建立表時使用,也可單獨使用
單獨使用時:createindex ind1 on users(name,age);
dropindex ind1 on users; #刪除索引
建立時使用:createtable carts(
idint not null auto_increment,
uidint not null,
sidint not null,
primarykey(id),
keycuid(uid),
indexcsid(sid));
4、全文索引
fulltext類型索引,只能MyISAM表類型上使用,只有在varchar,char,text上使用。也可以在多個資料列上使用。
createtable books(
idint not null auto_increment,
booknamevarchar(30) not null unique,
pricedouble,
detailtext not null,
fulltext(detail),
indexind(bookname),
primarykey(id));
原始查詢:select* from books where bookname like '%C++%';
現在查詢:selectbookname,price from books where match(detail)against('C++');
select match(detail) against('C++') from books; #match匹配;against倚,靠;
可以明顯的查詢速度!