mysql字符串类型、列属性及外键

字符串类型

 

Char varchar

在定义char varchar时,都需要设置长度。

语法:

char(M); 最大长度为255

varchar(M); 最大长度为65532 不同编码长度不同 GBK最大为:32767

utf8最大为:21845

M为长度!

两者区别:

CharM是固定的,即使输入的字符长度小于M值,该字符长度也会被定义为M值;

效率更快,使用一些固定字符长度的时候可以使用,例:电话号码、身份证号码等!

VarcharM是范围性值,只要不超过M,输入的值长度为多少即为多少!存储空间更加灵活。

text

文本类型,主要分为四种:

tinyTexttextmediumTextlongtext

字符长度不需要定义

从左往右排序,越往后值越大,longtext的值几乎是无限大!

主要运用在文本框和其他自由输出区域(如:一篇文章、一篇新闻等)!

enum

单选项字符串类型

语法:

enum(选项字符串1,选项字符串n;

插入值的时候,只能插入选项字符串中的一个字符串,其他则无效,会出现报错!

因为enum在存储空间中是以整数的形式存储,所以我们可以在插入值的时候直接插入对应字符串的编号,从左往右开始,起始值为1.

Set

多选项字符串类型

语法方面与单选项一样,区别在于插入值的时候可以插入多个值!

同单选项一样,可以通过字符串编号来读取,只不过排序不同,排序规则,从左往右,依次为1.2.4.8.16.32.64   最多只能到64

Binary,varbinary,blob

二进制文本类型,想当计算机的话可以自己谷歌学习,那不是人学的!

列属性

语法格式:列属性是在创建表的时候,填写在字段类型后面的

nullnonull

null允许字段为空;

Nonull 不允许字段为空,如果字段设置了这个属性的话,系统会判断字段是否为空,如果有设置默认值(default),如果没有的话,系统会报错!

Default

字段默认值

语法:

default  默认值 默认值可以是整数也可以是字符串

primary key

主键

1.定义一个字段为主键后,该字段不能重复;

2.主键的内容不能为空

3.一个表中主键只能有一个

4.也叫做主键索引

定义主键的方法

1.定义一个字段的时候直接在后面加上primary key

2.定义完字段后再定义主键 语法:primary key(字段);

这种方法可以创造出组合主键,将两个字段组合成一个主键,但是要记住,主键只有一个

组合主键语法: primary key(字段名1,字段名2);

Unique key

唯一键

也叫作唯一索引

跟主键基本一样,定义方法也一样

区别:唯一键可以为空,主键不能为空!

auto_increment

自增长属性

作用是每次插入记录的时候,自动的为某个字段的值加1(基于上一个记录)

 

注意:

使用这个属性有两个条件:

1, 该字段类型必须为整型

2, 该字段上必须存在索引(后面讲,主键也叫作主键索引,唯一键也叫作唯一键索引)

auto_increment 自动增长初始值

语法格式:在定义完字段后增加auto_increment 初始值

comment

字段内注释

外键

一张表内的一个字段指向、引用着另外一张表内的另外一个字段

负责指向的表为子表,被指向的表为主表

作用:

1, 增加子表记录的时候,是否有与之对应的父表记录!

2, 当删除或更改父表记录的时候,从表应该如何处理相关的记录!

语法格式:

foreign key(子表字段) references 父表名(父表主键)

先有父表再有字表,语法写在创建字表的字段内;

定义外键名

定义外键名后方便删除

Constraint 外键名 foreign key(子表字段) references 父表名(父表主键)

外键名不能加引号!

如果想要修改父表的话需要再设置一个级联操作命令,当在操作父表时,子表会受到什么样的影响,如果没有设置级联操作,更改父表会报错!

级联操作

主表更新

语法形式为:on update[级联操作]

主表删除

语法形式为:on delete[级联操作]

这里的级联操作常见的有三种形式:

cascade同步操作,或者串联操作!也就是当主表记录删除或更新的时候,从表也进行相应的删除或更新!

 

set null设置为null,也就是当主表记录删除或更新的时候,从表中的外键字段设置为空

 

restrict拒绝主表的更新或删除

删除外键的语法

alter table 表名drop foreign key 外键名;

转载于:https://www.cnblogs.com/caiwenhao98/p/6103476.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值