四 数据字段
unsigned 无符号,可以让存储空间增加一倍 - 128-127 ===>0-255
只能用在数值型字段上
zerofill 自动0填充
create table t2(num int(5) zerofill,price float(7,2),name varchar(10));
该字段自动应用unsigned
auto_increment
只能是整数,数据每增加一条就会自动增1,字段值不允许重复。
当为设定自动增长的值为NULL 0 留空 时 为自动在前值的基础上加1
每个表最好都有一个ID字段,设置为自动增长,auto_increment
NULL和NOT NULL
MySQL默认是可以为空====>NULL
当数据表中存在NULL值时,程序将这个表中的NULL值进行转化时,转化出来的值不确定
建议:在创建表时每个字段都不要插入NULL
default 缺省值
create table t3(id int not null auto_inrement ,name varchar(30) not null defualt '');
五索引
1.主键索引 primary key =====>primary key(id)
主要作用是确定数据库表里一条特定数据记录的位置
最好为每张数据表定义一个主键
一个表只能指定一个主键
创建主键的方式:
create table t1(id int primary key);
create table t2(id int,primary key(i2));
2.唯一索引 unique
主要作用可以防止创建重复的值
每一个表都可以有多个唯一索引
3.常规索引
最重要的计数,能提升数据库的性能,可以提高查找的速度,缺点是:减慢数据列的插入、删除、修改
常规索引和表一样是独立的数据对象,可以单独使用
create index ind1 on users(name,age);
drop index ind1 on users;
也可以在创建表时创建
create table carts(id int not null,uid int not null,sid int not null,number int not null,primary key(id),index csid(sid),key cuid(uid));
其中index和key是同义词
指定索引可以是单列也可以是多列
4.全文索引
fulltext类型索引,只能在MyISAN表类型上使用,只有在varchar char text 文本字符串上使用。
create table books(
id int not null auto_increment,
bookname varchar(30),
detail text not null,
fulltext(detail,bookname),
index ind(price),
primary key(id)
);
六 数据表类型和存储位置
MySQL和大多数据库不同,MySQL有一个存储引擎概念。
MySQL可以针对不同的储存引擎需求可以选择最优的存储引擎。
引擎 数据表类型
show engines 查看引擎
MyISAM 和 InnoDB比较重要
create table () type=InnoDB;
create table () engine=InnoDB;
注意:在一个MySQL库中可以(创建表时)指定不同的表类型。
MyISAM表类型 成熟稳定易于管理,强调快速读取操作
optimze table 表名 -------用于整理数据库中的碎片
也有缺点:有一些功能不支持
InnoDB表类型
支持一些MyISAM所不支持的功能
缺点:占用空间大,读写速度慢,不支持全文检索
功能 MyISAM InnoDB
事务处理 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
表空间占用 相对小 相对大,最大2倍
全文索引 支持 不支持