Home  >  Article  >  Database  >  MySQL学习笔记_3_MySQL创建数据表(中)_MySQL

MySQL学习笔记_3_MySQL创建数据表(中)_MySQL

WBOY
WBOYOriginal
2016-06-01 13:19:05891browse

bitsCN.com

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

然后按照前面的语句插入

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倚,靠;

可以明显的查询速度!

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn