数据库列属性

2017-07-26  本文已影响0人  pomelo_西

列属性:真正约束字段的是数据类型,但是数据类型的约束很单一,需要有一些额外的约束,来更加保证数据的合法性。
列属性有很多:NULL/NOT NULL, default, Primary key, unique key, auto_increment, comment

空属性

两个值:NULL(默认的)和NOT NULL(不为空)
实际开发时,尽可能的要保证所有的数据不应该为空,空数据没有意义,空数据没有办法参与运算。
例:

create table my_class(
name varchar(20) not null, 
room varchar(20) null  -- 允许为空,不写默认
)charset utf8;

主键

Primary key,一张表只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复

1.增加主键
--复合主键
create table my_pri(
number char(10) comment '学号:itcast + 0000',
course char(10) comment '课程编号',
score tinyint unsigned default 60 comment '成绩'
--添加主键限制:学号和课程应该是对应的,具有唯一性
primary key(number,course)
)charset utf8;
2.主键约束

主键对应的字段中的数据不允许重复,一旦重复,数据操作失败(增和改)。

3.主键删除

alter table 表名 drop primary key;

默认值

默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。
默认关键字:default

create table my_default(
name varchar(20) not null,
age tinyint unsigned default 0,
gender enum('男', '女', '保密') default '男'
)charset utf8;

默认值生效:在数据进行插入的时候,不给该字段赋值。
想要使用默认值,可以不一定去指定列表,故意不使用字段列表,可以使用default关键字代替值。

列描述

列描述:comment,描述,没有实际含义:是专门用来描述字段,会根据表创建语句保存,用来给程序员(数据库管理员)来进行了解的。

create table my_teacher(
name varchar(20) not null comment ' 姓名',
money decimal(10, 2) not null comment '工资'
)charset utf8;

自增长

auto_increment
自增长通常和主键搭配
特点:

1.创建自增长
create table my_autoincrement(
id int primary key auto_increment comment '逻辑主键自增长',
name varchar(10) not null comment '姓名'
)charset utf8;
2.自增长的使用

当自增长被给定的值为NULL或者默认值的时候,就会触发自动增长。
自增长第一个元素默认是1,每次都是自增1。
自增长如果对应的字段输入了值,那么自增长失效,但是下一次还是能够正确的自增长(从最大值+1)

3.修改自增长

自增长如果是涉及到字段改变,必须先删除,后增加(一张表只能有一个自增长)
修改当前自增长已经存在的值:修改只能比当前已有的自增的最大值大,不能小(小不生效)
alter table 表名 auto_increment = 值;(表选项直接这么改)
查看自增长变量语句:
show variable like 'auto_increment%';
还可以修改自增长的初始值,以及步长(但没什么意义)

4.删除自增长

自增长是字段的一个属性,可以通过modify来进行修改(保证字段没有auto_increment即可)
alter table 表名 modify 字段 类型;

唯一键

一张表往往有很多字段具有唯一性,数据不能重复,但是一张表中只能有一个主键,唯一键(unique key)就可以解决表中有多个字段需要唯一性约束的问题。
唯一键的本质与主键差不多,唯一键默认的允许自动为空,而且可以多个为空(空字段不参与唯一性比较)

1.增加唯一键
2.唯一键约束

唯一键与主键本质相同,唯一的区别就是唯一键默认允许为空,而且是多个为空。
如果唯一键也设置成了not null,那么和主键的约束作用是一致的。

3.删除唯一键

唯一键可以有多个。
alter table 表名 drop index 索引名;
--唯一键默认的使用字段名作为索引名字。

索引

几乎所有的索引都是建立在字段之上。
索引:系统根据某种算法,将已有的数据(未来可能新增的数据),单独建立一个文件,文件能够实现快速的匹配数据,并且能够快速的找到对应表中的记录。

索引的意义:
1、提升查询数据的效率
2、约束数据的有效性(唯一性等)
增加索引的前提条件:索引本身会产生索引文件(有时候可能比数据文件还大),会非常耗费磁盘空间。
Mysql中提供了多种索引

全文索引:针对文章内部的关键字进行索引

上一篇下一篇

猜你喜欢

热点阅读