一、数值型(整数)的基本使用
1. 使用规范:在能够满足需求的情况下,尽量选择占用空间小的类型
#演示整型的使用 #使用tinyint来演示范围,有符号范围-128~127,无符号0~255 #1.如果没有指定 unsigned,则tinyint就是有符号 USE db_02; CREATE TABLE t3(id TINYINT UNSIGNED); INSERT INTO t3 VALUES(129); SELECt * FROM t3;
二、数值型(bit)的基本使用
1. bit(m):m范围1-64位
2. 显示为二进制数
3. 数据范围按指定位数来确定,如bit(8),表示范围为0-255
4. 添加和查询数据仍然可以按照十进制数来进行操作
#演示bit类的使用 #1.bit(m) m 范围在 1-64 #2.显示为二进制数 #3.添加数据范围按照指定位数来确定,如m=8表示一个字节,范围为0~255 #4.查询时,仍然可以按照十进制数来查询 use db_02; CREATE TABLE t4(num BIT(8)); INSERT INTO t4 VALUES (); SELECt * FROM t4 WHERe num=255;
三、数值型(小数)的基本使用
1. float:单精度
2. double:双精度
3. Decimal(M,D):可以支持更加精确的小数位。M是小数位数的总数,D是小数点后面的位数。如果D是0,则值没有小数点或分数部。M最大65,D最大30,如果D省略,默认是0。如果M省略,默认是10。
#演示decimal类型、float、double使用 #创建表 use db_02; CREATE table t5( num1 FLOAT, num2 DOUBLE, num3 DECIMAL(30,20)); #添加数据 INSERT INTO t5 VALUES(88.123456789123456,88.123456789123456,88.123456789123456); SELECt * FROM t5; #decimal可以存放很大的数 CREATE TABLE t6(num4 DECIMAL(65)); INSERT INTO t6 VALUES(15641254565545596255633322115564233654481534315); SELECt * FROM t6;二、字符串型
一、字符串的基本使用
char(size):固定长度字符串,最大255字符
varchar(size):可变长字符串,最大65532字节(utf8编码最大21844字节,1~3个字节用于记录大小)
#演示字符串类型使用cahr、varchar #CHAR(size) #固定长度字符串 最大255字符 #VARCHAR(size) 0~65535 #可变长字符串,最大65532字节(utf8 编码最大21844字符,1-3个字节用于记录大小) #如果表的编码是 utf8 varchar(size) size = (65535-3)/3 = 21844 #如果表的编码是 gbk varchar(size) size = (65535-3)/2 = 32766 USE db_02; CREATE TABLE t7(name char(255)); SELECt * FROM t7; CREATE TABLE t8(name VARCHAR(21844)); SELECt * FROM t8; CREATE TABLE t9(name VARCHAR(32766)) CHARACTER SET gbk; SELECt * FROM t9;
二、字符串使用细节
- char(4):这个4表示字符数(最大255),不是字节数,不管是中文还是字母都是放四个,按字符计算
varchar(4):这个4表示字符数,不管是字母还是中文都以定义好的表的编码来存放数据
不管是中文还是英文字母,都是最多存放四个,是按照字符来存放的 - char(4)是定长的,就是说即使插入’aa’,也会占用分配的4个字符
varchar(4)是变长,就是说,如果插入’aa’,实际占用空间大小并不是4个字符,而是按照实际占用空间来分配(varchar本身还需要占用1~3个字节来记录存放内容长度) - 什么时候使用char,什么时候使用varchar
如果数据是定长,推荐使用char,比如 md5 的密码、邮编、手机号、身份证号等
如果一个字段的长度不确定,我们使用varchar,比如留言、文章
查询速度:char>varchar - 在存放文本时,也可以使用Text数据类型,可以将TEXT列视为varchar列,注意TEXT不能有默认值,大小为0—2的16次方。如果希望存放更多字符,可以选择 MEDIUMTEXT,大小为0—2的24次方。或者LONGTEXT,大小为0—2的32次方
#演示字符串类型的使用细节
#char(4)和varchar(4)这个4表示的是字符,而不是字节
USE db_02;
CREATE TABLE t10(name CHAR(4));
CREATE TABLE t11(name VARCHAR(4));
INSERT INTO t10 VALUES("jack");
INSERT INTO t11 VALUES("mary");
SELECt * FROM t10,t11;
#如果varchar不够用可以考虑使用mediumtext或者longtext
#如果想简单点,可以直接使用text
CREATE TABLE t12(content text,content2 MEDIUMTEXT,content3 LONGTEXT);
INSERT INTO t12 VALUES('jack',"mary","tom");
SELECt * FROM t12;
日期类型
DATE:存放 年-月-日
DATETIME:存放 年-月-日 时:分:秒
TIMESTAMP:时间戳
#演示时间相关的类型
#创建一张表,date,datetime,timestamp
#如果希望timestamp自动更新,需要配置NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATe CURRENT_TIMESTAMP
USE db_02;
CREATE TABLE t13(
birthday date,
job_time datetime,
login_time timestamp
NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP);
INSERT INTO t13(birthday,job_time) VALUES('2011-11-13','2021-12-28 12:12:12');
SELECT * FROM t13;



