1.约束条件:
create table `jn_01`(
`id` int unsigned not null auto_increment primary key,
`name` varchar(255) unique not null,
`like` set('football','basketball'),
`sex` enum('0','1','2') default '2'
)engine = innodb default charset=utf8;
--登录名,最大长度255,不能为空且唯一
int 整型
unsigned 无符号
not null 不能为空
unique 标记该字段必须唯一,如,帐户登录名
aoto_incremnt 自增
primary key 主键
标记对应数据的唯一性
必须配合自增使用
配合整型
insert into `jn_01`(`name`,`like`,`sex`) values('卡牌','football','1');
--not null 如果带有不能为空的约束性,会报wanrnings
insert into `jn_01`(`like` ,`sex` ) values('basketball','1');
--null 如果设置不能为空,则不插入数据,插入的类型就是null 类型
--not null的字段必须赋值,可以是''空值,但是不能为NULL
insert into `jn_01`(`name` ,`sex`) values('很好','0');
--default 默认值 如果没有插入数据,就取默认值
insert into `jn_01` (`name`) values('sb');
set names gbk;
2.表设计与修改表结构
--建表
create table `jn_user`(
`id` int unsigned not null auto_increment primary key,
`name` varchar(255) not null,
`sex` enum('0','1','2') not null default '2',
`age` int unsigned not null,
`tel` char(11) not null ,
`email` varchar(155) not null,
`major` varchar(255) not null,
`marry` enum('0','1') not null default '1',
`department` varchar(255) not null ,
`grade` enum('0','1','2','3') not null default 3 ,
`status` enum('0','1','2','3') not null default '0',
`addtime` int unsigned not null
)engine=innodb default charset=utf8;
insert into `jn_user`(`name`,`sex`,`age`,`tel`,`email`,`major`,`marry`,`department`,`grade`,`status`,`addtime`) values
('大勇7','1','22','12345678901','1234@qq.com','养猪专业','0','老板办公室',3,1,unix_timestamp()),
('提莫','0','22','12345678901','1234@qq.com','养猪专业','0','老板办公室',3,1,unix_timestamp()),
('提莫6','0','22','12345678901','1234@qq.com','养猪专业','0','老板办公室',3,1,unix_timestamp()),
('提莫1','0','22','12345678901','1234@qq.com','养猪专业','0','老板办公室',3,1,unix_timestamp()),
('提莫2','0','22','12345678901','1234@qq.com','养猪专业','0','老板办公室',3,1,unix_timestamp()),
('提莫3','0','22','12345678901','1234@qq.com','养猪专业','0','老板办公室',3,1,unix_timestamp());
查看表结构:
show create table `jn_user`;
修改表名: rename
alter table `jn_user` rename to `em_user`;
alter table `em_user` rename `jn_user`;
修改字段的类型 modify
`marry` enum('0','1') not null default '1',
alter table `jn_user` modify `marry` tinyint not null default '1';
如果修改了数据类型,会破坏原有数据,在修改,安全起见,请将数据库先备份!!
在修改之前,表中已经存在数据,当修改表结构时,该列的数据,也会相应地转换为与该列数据类型一致的!!
修改字段名
alter table `jn_user` change `marry` `new_marry` enum('0','1') not null default '1' first;
--first 放到第一位
alter table `jn_user` change `new_marry` `marry` enum('0','1') not null default '1' after `major`;
--after 放到什么的之后
增加字段 add
默认情况下排列在最后
alter table `jn_user` add `address` varchar(255) not null;
alter table `jn_user` add `address` varchar(255) not null first;
alter table `jn_user` add `address` varchar(255) not null after `name`;
删除字段 drop
alter table `jn_user` drop `address`;
修改位置
alter table `jn_user` add `address` varchar(255) not null;
alter table `jn_user` modify `address` varchar(255) NOT NULL after `addtime`;
查看表引擎
show create table `表名`;
show create table `jn_user`;
修改储存引擎
alter table `jn_user` engine=MyISAM;
alter table `jn_user` engine=innodb;
3.索引
创建索引的目的:
由于数据性能上的瓶颈,为了快速查找数据
1.primary key
主键索引
1.标记数据的唯一
2.最常用
3.每张表必须设置(效率高),每张表只能设置一个
4.效率最高的索引
5.最准确,快捷
2.unique
唯一索引
同一张表可以设置多个
3.index
普通索引或常规索引
1.缺点减慢插入,删除
2.多占空间
index索引,使用在经常查询的字段当中
4.fultext 全文索引
不支持中文
索引合适就可以
create table `jn01`(
`id` int,
`name` varchar(255),
`tel` char(11)
)engine=innodb default charset=utf8;
添加删除索引
-- 建表时,添加索引
create table if not exists `pj_user`(
`id` int unsigned not null auto_increment,
primary key(`id`) ,
`name` varchar(255) not null ,
unique un_name(`name`),
`tel` char(11) not null ,
index in_tel(`tel`),
`addtime` int unsigned not null default 1
)engine=innodb default charset=utf8;
唯一索引,可以有多个
普通索引,可以有多个
主键只能有一个
-- 查看索引
show indexes from `pi_user`;
-- 删除索引
-- 删除普通索引
drop index `in_tel` on `pj_user`;
-- 删除唯一索引
drop index `un_name` on `pj_user`;
-- 删除主键(极少删除主键)
1.去除自增属性(修改表结构)
alter table `pj_user` modify `id` int(10) unsigned not null comment '删除自增';
2.删除主键
alter table `pj_user` drop primary key;
添加主键的两步:
1.添加主键
alter table `jn01` add primary key(`id`);
2.添加自增
alter table `jn01` add modify `id` unsigned not null auto_increment;
添加唯一索引:
alter table `pj_user` add unique un_name(`name`) comment '将name字段设置为唯一';
添加普通索引:
alter table `pj_user` add index in_tel(`tel`) comment '将tel字段设置为普通索引';