SQL语句知识点梳理——数据类型、约束及标识列

五、Mysql中的数据类型

1. 数值型

  • 有符号无符号设置: int unsigned,int ,默认有符号
  • 浮点型:float,double
  • 定点型:decimal(M,D)精度更高的小数,M位数,小数点后保留D位。如果不设置,默认M=10,D=0。

2. 字符型

  • char(M),M表示最长的字符数,固定长度的字符,耗费空间,效率高
  • varchar(M),M表示最长的字符数,可变长度的字符,节省空间,效率低
  • enum(a,b,c,d,......)枚举型
  • set(obj)集合型
  • 较长的文本(text,blob(较长的二进制数据))

3. 日期型

  • datetime:时间
  • timestamp:时间戳

六、约束

1. 分类

not null:非空,该字段的值必填
deafult:默认,该字段的值不用手动插入,用于保证该字段有默认值
primary key:主键,用于保证该字段具有唯一性,不可重复并且非空,如学号员工号  (相当于unique + not null)主键的选取一般是与业务无关的内容,否则当业务发生改变时,主键发生变化将产生严重的影响。
unique:唯一,用于保证该字段的值具有唯一性,不可重复,可以为空,如座位号
check:检查约束(mysql中不支持)
foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某列的值。即保证该字段的值是来自另一个表。(该字段的值引用了另外表的字段)
一个表中只能有一个主键,可以有多个唯一键。primary key(a,b)表示a,b联合主键,但其实还是一个主键。
列级约束:id int primary key,逗号在后
表级约束:primary key(id);

2. 创建表时添加约束

create table 表名(
字段1 字段类型 not null,
字段2 字段类型 primary key,
字段3 字段类型 unique,
字段4 字段类型 default 值,
constraint 约束别名 foreign key(字段名)references 主表(被引用列)
)

3. 修改表时添加或删除约束

(1)非空:
①添加非空:alter table 表名 modify column 字段名 字段类型 not null;
②删除非空:alter table 表名 modify column 字段名 字段类型;
(2)默认:
①添加默认:alter table 表名 modify column 字段名 字段类型 default 值;
②删除默认:alter table 表名 modify column 字段名 字段类型;
(3)主键:
①添加主键:alter table 表名 add primary key(字段名);
②删除主键:alter table 表名 drop primary key;
(4)唯一
①添加唯一:alter table 表名 add unique(字段名);
②删除唯一:alter table 表名 drop index 索引名(约束名);
(5)外键
①添加外键:alter table 表名 add foreign key(字段名)references 主表(被引用列);
②删除外键:alter table 表名 drop foreign key 约束名;

七、标识列

  • 又称为自增长列,可以不用手动的插入值,系统提供默认的序列值
  • 特点:
    1. ==标识列不一定要和主键搭配,但一定得是键==
    2. ==一个表至多一个自增长列==
    3. 标识列的类型只能是数值型,一般是int
    4. 标识列可以设置步长,也可以手动插入值,设置起始值。
(1)创建表时设置标识列
id int primary key auto_increment。关键字auto_increment。默认起始值为1,每次增长1。
insert into 表名 values(null,......)添加时自增长列可以写null。
mysql中可以设置标识列的步长,set auto_increment_increment=x
(2)修改表时设置自增长列
alter table 表名 modify column 字段名 字段类型 约束 auto_increment
(3)删除自增长列
alter table 表名 modify column 字段名 字段类型 约束

你可能感兴趣的:(SQL语句知识点梳理——数据类型、约束及标识列)