mysql 键值类型

mysql 键值类型
普通索引 index (id name sex age loves)
唯一索引 unique
主键 primary key
外键 foreign key
全文索引 fulltext
一, 字段约束条件
null //允许为空,默认设置
not null //不允许为空
key //索引类型
default //设置默认值,缺省为null
extra //额外设置,字段是否设置为自动增加,默认没有自动增长功能

二, 修改表结构
语法结构
alter table 表名 执行动作;
执行动作:
add 添加字段
modify 修改字段类型
change 修改字段名
drop 删除字段
rename 修改表名
添加新字段
alter table 表名
add 字段名 类型(宽度) 约束条件;
可加 after 字段名;
或者 first;
修改字段类型
alter table 表名
modify 字段名 类型(宽度) 约束条件;
可加 after 字段名;
或者 first;
modify只能修改Type,Null,Default
修改字段名
alter table 表名
change 源字段名 新字段名 类型(宽度) 约束条件;
(当跟新类型和约束条件时,也可修改字段类型)
删除字段
alter table 表名
drop 字段名;
(表中有多条记录时,所有列的此字段的值都会删除)
修改表名
alter table 表名
rename 新表名;
(表对应的文件名,也会改变)

#

普通索引index
索引:是对记录集的多个字段进行排序的方法
类似于书的目录
索引类型包括 btree、B+tree、hash
优点:通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性
可以加快数据的检索速度
缺点:当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度
索引需要占物理空间
使用说明:
一个表中可以有多个index字段
字段的值允许有重复,切可以赋 Null 值
经常把在做查询条件的字段设置为 index 字段
index 字段的 KEY 标志是 MUL
在已有的表中设置index字段
create index 索引名 on 表名(字段名);
如果是char,varchar类型,length可以小于字段实际长度;如果是 blob 和 text 类型,必须指定 length
mysql> create index name on stuinfo(name);
删除指定表的索引字段
drop index 索引名 on 表名;
mysql> drop index name on t22;
查看表的索引信息
show index from 表名;
mysql> show index from stuinfo;
建表的时候指定索引字段
index (字段1,字段2… …)

三, primary key 主键
一个表中只能有一个primary key 字段
对应的字段值不允许有重复,且不允许赋null值
如果有多个字段都作为primary key , 称为复合主键,必须一起创建
主键字段的key 标志是 PRI
通常与auto_increment 连用
经常把表中能够唯一标识记录的字段设置为主键字段[记录编号字段]
建表的时候指定主键字段
create table 表名( 字段列表,primary key (字段名) );
在已有的表中设置primary key 字段
alter table 表名 add primary key (字段名);
移除表中的主键
alter table 表名 drop primary key;
复合主键
mysql> create table jfb(
name char(10) ,
stu_id int,
pay float(7,2),
status enum(“yes”,”no”) default “no”,
class char(7),
primary key(name,stu_id,class)
);
insert into jfb values(“bob”,1,2100,”yes”,”nsd1805”);

主键与auto_increment(让字段的值自动增长 i++)
主键primary key 通常和 auto_increment 连用
要使用 auto_increment 的字段必须满足是主键且是数值类型
create table t25(
id int primary key auto_increment,
name char(10),
age tinyint unsigned default 19,
class char(7) not null default “nsd1805”,
birthday date
);
desc t25;
id name age class birthday
1 bob 19 nsd1805 20181120
2 bob 19 nsd1905 20181120
3 bob 19 nsd1905 20181120
insert into t25(name,age,class,birthday) values(“bob”,19,”nsd1807”,”20181120”);
insert into t25(name,age,class,birthday) values(“bob”,19,”nsd1807”,”20181120”);
insert into t25(name,age,class,birthday) values(“bob”,19,”nsd1807”,”20181120”);
select * from t25;
insert into t25(name,brithday) values(“jarry”,20181121);
select * from t25;
删除主键
alter table t25 modify id int(11) not null;
//先去除auto_increment,才可以删除主键。因为auto_increment依赖于primary key
alter table t25 drop primary key;
查id 第3行
select * from t25 where id=3;

#

四, 外键 foreign key
作用:限制给字段赋值的
给当前表的字段赋值时,值只能在指定的表中的某个字段值里选择
使用外键的条件;
表的存储引擎必须是innodb
字段类型要一致
被参照字段必须要是索引类型的一种(primary key)

基本用法
1, 建表的时候指定外键
create table 表 (
foreign key (表A的字段名) references 表B(字段名)
on update cascade //同步更新
on delete cascade //同步删除
) engine=innodb;
2, 在已有表创建外键
alter table 表1 ( add
foreign key(字段名) references 表2(字段名)
on update cascade
on delete cascade;

删除外键字段
show create table 表名; //查看外键名称
alter table 表名 drop foreign key 约束名;

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值