目录
字符编码与配置文件
1.字符编码的修改-防止乱码(5.6版本编码不一致)
修改配置文件-复制配置文件修改配置文件内容-统一将字符编码修改为utf8(复制的配置文件的命名与原文件开头必须一致)
2.配置文件my-default.ini-复制命名my.ini(苹果电脑或Linux系统后缀可能不一致)
存储引擎
1.存储引擎:针对数据的不同存取方法
2.查看所有引擎命令:show engines;
3.类型
3.1 MyISAM:MySQL5.5及以前版本默认的存储引擎
存取速度很快 但是安全性较低 功能较少
3.2 InnoDB:MySQL5.6以后版本的默认存储引擎
存取速度没有MyISAM快 但数据安全性较高 并且支持事务、行锁、外健等诸多功能
3.3 Memory:基于内存的存储引擎
存取速度很快 但是断电及丢失
3.4 BlackHole(黑洞):任何数据写进去都会丢失 类似于垃圾桶
注:MySQL中对字母大小写不敏感
windows cmd终端的右键-粘贴
4.引擎设置:创建表时指定
create table 表名(列名称 数据类型) engine=引擎类型
5.产生的表
MyISAM:
.frm 表结构
.MYD 表数据
.MYI 表索引(方便数据查询)
InnoDB:
.frm 表结构
.ibd 表数据、表索引(方便数据查询)
Memory:
.frm 表结构
BlackHole:
.frm 表结构
约束条件
1.约束条件:对表中字段进行约束 一般写在字段某个字段后面 如果有多个约束条件用逗号隔开
create table 表名(字段名 数据 约束条件1,约束条件2,约束条件3)
2.类型
2.1 unsigned-无符号(字符长度中带正负号)
create table 表名(字段名 数据类型 unsigned)
2.2 zerofill-零填充(需要一定数据长度可用0补足)
create table 表名(字段名 数据类型(长度) zerofill)
2.3 not null-非空(规定一些字段不能为空时)
create table 表名(字段名 数据类型(长度) not null)
2.4 default-默认值(提前定义好一些数据类型 如性别等)
create table 表名(字段名 数据类型(长度) default)
2.5 unique-唯一值(设置该字段不能重复 如编号等)
create table 表名(字段名 数据类型(长度) unique)-单列唯一
create table 表名(字段名1 数据类型,字段名2 数据类型 unique(字段名1,字段名2))-联合唯一
创建表的完整语法
1.完整语法
cerate table 表名(字段名称 数据类型) 约束条件 engine=存储引擎;
注:一个表必须要有一个字段名称及数据类型
约束条件与存储引擎不是必要条件(需要添加)
约束条件可以是多个 用逗号隔开
添加多个字段时 最后不加逗号
字段类型
一、字段类型之整型
1.类型(根据字符长度不同分类)
tinyint 1bytes
smallint 2bytes
int 3bytes
bigint 4bytes
2.存在符号整数范围(其余类型使用方法一致)
2.1 存在符号时范围(-128~127)
新建表格:create table info1(num tinyint);
添加负数数据:insert into info1 values(-256);
添加整数数据:insert into info1 values(256);
结果:-128 127
2.2 取消符号范围(0~255)
新建表格:create table info2(num tinyint unsigned);
添加负数数据:insert into info2 values(-256);
添加正数数据:insert into info2 values(256);
结果:0 255
注:符号占据比特位
3.存在的问题:插入的数据超出范围时自动修改-使输入的数据不存在任何意义(应该直接报错不然添加)
3.1 原因:修改配置文件时为将限制命令加入
3.2 解决办法:
命令临时修改:set session sql_mode='STRICT_TRANS_TABLES' 当前客户端界面有效
set global sql_mode='STRICT_TRANS_TABLES' 服务端不重启永久有效
配置文件永久修改:[mysqld]
sql_mode='STRICT_TRANS_TABLES' 修改后需要重启服务端
二、字段类型之浮点型
1.类型(根据精确度不同分类)
float
double
decimal
2.使用方式
float(255,30) # 255-总占位数 30-小数占位数
double(255,30)
decimal(65,30)
3.精确度
新建表格:create table info3(mun float(255,30)); # 数据类型括号里需写位数
create table info4(num double(255,30));
create table info5(num decimal(65,30));
添加数据:insert into info3 values(1.111111111111111111111111);
insert into info4 values(1.111111111111111111111111);
insert into info5 values(1.111111111111111111111111);
结果: info3:1.111111164093017600000000
info4:1.111111111111111200000000
info5:1.111111111111111111111110
注:float < double < decimal 一般情况下float就可以了 如果需要精准度可以用字符串
三、字段类型之字符型
1.类型
char(长度) 定长
varchar(长度) 变长
2.使用方法
char(4):最大只能存储四个字符 如果超出范围则直接报错 不超出用空格补足(占空间)
varchar(4):最大只能存储四个字符 如果超出范围之间报错 不超过有几位保存几位
3.长度
新建表格:create table info6(name char(4));
create table info7(name varchar(4));
添加数据:insert into info6 values('jason') # 报错
insert into info7 values('jason') # 报错
insert into info6 values('tom') # tom
insert into info7 values('lili') # lili
查看字符串长度命令:selent char_length(字符串)
注:默认情况下char在存储的时候针对没有满足固定位数的字符会自动填充空格
在读取时自动会将空格移除 如果要查看(此方法为替换 不是新增 因此需要写上原有配置)
set global sql_mode='strict_trans_tables,pad_char_to_full_length';
4.优劣
char 优点:整存整取 速度快
缺点:浪费内存
varchar 优点:节省内存
缺点:存取速度慢与char(需要操作报头耗时) -会发生黏包
注:两者使用频率都很高 现在默认很多时候是varchar
四、字段类型之枚举与集合
1.区别
枚举enum 多选一(如性别)
集合set 多选多(如爱好)
2.使用
新建表格:create table info8(neme varchar(32),gender enum('male','female'))
create table info9(name varchar(32),hobbies set('read','music'))
五、字段类型之日期
1.类型
datetime 年月日时分秒
date 年月日
time 时分秒
year 年
2.使用
新建表格:create table info10(id int,
name varchar(32),
reg_time datetime,
bith date,
study_time time,
join_time year);
添加数据:insert into info10 values(1,'lili','2022-11-11 11:11:11','2022-11-11','11:11:11', '2022');
数字的含义
数字大部分情况下都是用来限制字段的存储长度
整型:不是用来限制长度而是展示长度(一般不加括号写数字除非是业务需要)
create table t1(id int(3));
create table t2(id int(3) zerofill);
标签:02,insert,数据库,数据类型,values,table,create,字段名
From: https://www.cnblogs.com/040714zq/p/16589417.html