欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql学习之基础篇03

程序员文章站 2022-07-10 13:39:46
我们今天来进行建表的基本操作: 首先要建表就要了解列类型,因为建表就是声明列的过程,列声明完成了,表也就建好了。 mysql中列分为三大类: 一、数值型 数值型又分为整型和浮点型两种。 先来看整型: tinyint:占据空间:1个字节;存储范围:带符号数:-2^7(-128)~2^7-1(127), ......

我们今天来进行建表的基本操作:

首先要建表就要了解列类型,因为建表就是声明列的过程,列声明完成了,表也就建好了。

mysql中列分为三大类:

一、数值型

数值型又分为整型和浮点型两种。

先来看整型:

tinyint:占据空间:1个字节;存储范围:带符号数:-2^7(-128)~2^7-1(127),无符号数:0~255

smallint:占据空间:2个字节;存储范围:带符号数:-2^15(-32768)~2^15-1(32767),无符号数:0~65535

mediumint:占据空间:3个字节;存储范围:带符号数:-2^23(-8388608)~2^23-1(8388607),无符号数:0~16777215

int:占据空间:4个字节;存储范围:带符号数:-2^31(-2147483648)~2^31-1(2147483647),无符号数:0~4294967295

bigint:占据空间8个字节;存储范围:带符号数:-2^63(-9,223,372,036,854,775,808)~2^63-1(9,223,372,036,854,775,807),无符号数:0~18446744073709551615

int 系列声明时的参数:

unsigned:无符号,在mysql中声明int类参数为无符号数,如果不声明unsigned,则默认为带符号数。

(m)zerofill m只有和zerofill配合在一起使用才有效果,即指定数据的长度,不够的话用0填充

例如 我们声明一个 id int(5)zerofill 一个id2 int(5):

mysql学习之基础篇03

我们给里面插入同样的数据:

mysql学习之基础篇03

我们可以看到,同样是500,id就在前面补两个0,因为我们指定了它的数据长度是5。

那如果我们插入的数据长度超过了5怎么办?

mysql学习之基础篇03

我们可以看到如果我们插入的数据长度超过了我们设定的m值,那么就按实际长度来插入。

然后我们来看浮点型:

m叫做精度,代表这个小数的总位数,d叫做标度,代表小数点后面的位数。

float(m,d)单精度浮点型,占据空间:4个字节。

double float(m,d) 双精度浮点型,占据空间:8个字节。

浮点型在存储的时候存的是近似值,还有一种小数类型是定点型,它是把整数部分和小数部分分开存储的 。

定点型:

decimal(m,d)

我们来看具体的区别:我们声明一个num float(9,2)和一个num2 decimal(9,2):

然后给num插入1234567.23,给num2插入1234567.25,然后我们来看一下结果:

mysql学习之基础篇03

我们发现,num栏下面的数字变成了1234567.25。原因就是上面说的float类型存储时是存的近似值。

所以如果涉及到金融,账户等等对数字变化比较敏感的时候需要存小数我们就用decimal。

二、字符串型

char(m) 是定长类型 例如char(6)只能存储6个字符,内容不够6个字符的在尾部用空格补齐,取出时再把右侧所有的空格删除。

varchar(m) 是变长类型 例如varchar(20),可存储0~20个字符长度,但是列内容前有1~2个字节来标志该列内容长度。

我们声明两个变量,分别是name name2,一个用char,一个用varchar

 mysql学习之基础篇03

插入数据,张三后面有个空格,李四后面也有个空格

mysql学习之基础篇03

mysql学习之基础篇03

直接查看的话看不出来大的差别,我们把它和另一个字符连接起来:

mysql学习之基础篇03

我们可以看到张三后面的空格被删除了。

text 文本类型,一般用来储存文章内容,新闻内容等。声明text列类型时不用给默认值。

blob 二进制类型,一般用来存储图像音频等二进制信息。blob在于防止字符集的问题导致信息丢失。比如:一张图片中有0xff字节,这个在ascii字符集中认为非法,在入库的时候被过滤。使用blob就可以防止信息丢失。

三、日期时间型

date 日期 存储年--日 存储范围是1000-01-01~9999-12-31

time 时间 存储时:分:秒 存储范围是-8385959~8385959

datetime 日期时间类型年--日 时:分:秒 范围是1000-01-01 000000~9999-12-31 235959

year 年类型 yyyyyy(不推荐)范围是1901~2155 还能存一个特殊的0000

 mysql学习之基础篇03

建表的语法不重要,重要的是要学会合理的选择列类型并为其声明参数。

 建表的语法:

create table 表名 (

1 列类型 列参数,

2 列类型 列参数,

......

n 列类型 列参数

engine myisam charset utf8;

 最后一句是声明引擎和字符集的,那个我们会在后面讲到。

如果一张表建好了,我们需要增加列怎么办?

alter table 表名 add 列名 列类型 列参数

我们就给上面的test2表增加一列:

mysql学习之基础篇03

由于之前没有salary列,因此增加后原来的行在salary列的值为空。

这是默认增加在最后一列的,我们想在birth后面增加一列怎么办?

alter table 表名 add 列名 列类型 列参数 after birth;

mysql学习之基础篇03

我们想在把列增加最前面,该怎么办?

alter table 表名 add 列名 列类型 列参数 first;

mysql学习之基础篇03

删除列:

alter table 表名 drop 列名;

mysql学习之基础篇03

修改列类型:

alter table 表名 modify 列名 新列类型 列参数;

 mysql学习之基础篇03

 我们看到这张表的结构:star是varchar(20)。

我们给它改成varchar(30):

mysql学习之基础篇03

 mysql学习之基础篇03

修改列名:

 alter table 表名 change 旧列名 新列名 列类型 列参数;

mysql学习之基础篇03