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

字符串类型

Char 和varchar

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

语法:

char(M); 最大长度为255

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

utf8最大为:21845

M为长度!

两者区别:

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

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

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

text

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

tinyText,text,mediumText,longtext

字符长度不需要定义

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

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

enum

单选项字符串类型

语法:

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

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

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

Set

多选项字符串类型

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

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

Binary,varbinary,blob

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

列属性

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

null和nonull

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 外键名;

时间: 2024-12-28 17:43:19

mysql字符串类型、列属性及外键的相关文章

MySQL基础day03 存储引擎和外键MySQL 5.6

MySQL基础day03_存储引擎和外键-MySQL 5.6 外键的条件: 1,表的存储引擎为innodb存储引擎 2,表中外键字段的类型要与参考表的字段类型一致 3,外键字段要是索引类型中的一种 MySQL数据库的存储引擎 存储引擎:是mysql结构中的组成部分 mysql体系结构: 由8部分组成:连接池.Sql接口.分析器.优化器.缓存和缓冲.存储引擎.管理工具.物理存储设备 1.客户端:mysql 2.连接器: NativeC API 本地C语言接口.JDBCJAVA的数据库连接器.ODB

mysql查询某张表的外键

mysql和oracle一样也是有数据字典表的,是存在单独的一个库叫INFORMATION_SCHEMA,要查看某张表的外键要从字典表中查找 如mysql查询某张表的外键,可以用下面的方式查询 use INFORMATION_SCHEMA; select TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE where table_name

史上最简单的 MySQL 教程(十四)「列属性 之 主键」

主键 主键:primary key,表中主要的键,每张表只能有一个字段(复合主键,可以多个字段)使用此属性,用来唯一的约束该字段里面的数据,不能重复. 增加主键 在 SQL 操作中,有 3 种方法可以给表增加主键,分别为: 第 1 种:在创建表的时候,直接在字段之后,添加primary key关键字 -- 增加主键 create table my_pri1( name varchar(20) not null comment '姓名', number char(10) primary key c

EF Code First 导航属性 与外键

一对多关系 项目中最常用到的就是一对多关系了.Code First对一对多关系也有着很好的支持.很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性.导航属性等检测到模型之间的关系,自动为我们生成外键.观察下面的类: public class Destination { public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; s

MySQL入门(alter语法 与 外键)

MySQL入门(三) 字段的修改.添加.与删除 修改表字段使用alter table语句,谨记! create table tf1( id int primary key auto_increment, x int, y int ); # 修改 alter table tf1 modify x char(4) default ''; alter table tf1 change y m char(4) default ''; # 增加 mysql>: alter table 表名 add 字段名

mysql字符串类型数据

字符串类型是在数据库中存储字符串的数据类型,字符串类型包括char,varchar,text,enum和set. OK,我们来一个一个的看下上面提到的几种类型. char类型和varchar类型 char类型和varchar类型都是在创建表时指定了最大长度,其基本形式如下:字符串类型(M).其中,字符串类型参数指定了数据类型是char类型还是varchar类型,M参数指定了该字符串的最大长度为M.举个例子,char(4)就是指数据类型是char类型,其最大长度为4. char类型的长度是固定的,

mysql字符串类型

字符串类型 char和varchar 1.char(M)M为该字符串占的最大长度,长度为0~255字节之间任意值,占用固定字节. 2.varchar(M)长度为0~65535字节之间任意值.实际占字节数为实际字符长度的基础上加1,因为最后有个结束标志符占用一个字节. 3.char和varchar中字符串最后有空格的话,char不保留空格,varchar保留空格. 4.如果插入字符串长度超过限制会提示不能插入 text类型 TINYTEXT 允许长度0~255字节 存储空间值的长度+2个字节 TE

学习笔记:MySQL字符串类型

字符串类型 a)         char和varchar 1.都需要指定字符的长度,char中的长度是字符的长度,而varchar的长度是字节的长度 2. char中指定的长度就是实际占用的长度,而varchar指定的长度只是一个范围,所以varchar还要拿1-2个字节存储该字符串到底有多少个字节,并且varchar中能够实际存储的字符跟编码有关(utf8编码20000多,gbk编码30000多) 3.varchar对存储空间的占用更灵活,但是char的效率更高 4.如果字符串的长度是固定已

mysql 触发器实现级联删除有外键的多张表

2019-10-12 10:17:44 1.数据,建表时有可能会报错,只需要把前三行注释删掉就行 -- ---------------------------- -- Table structure for tb_grade -- ---------------------------- DROP TABLE IF EXISTS `tb_grade`; CREATE TABLE `tb_grade` ( `grade_id` int(11) NOT NULL AUTO_INCREMENT, `g