python之路34 MySQL 2 配置文件 字段类型
字符编码与配置文件
1.\s查看MySQL相关信息
当前用户、版本、编码、端口号
MySQL5.6及之前的版本编码需要人为统一 之后的版本已经全部默认统一
如果想要永久修改编码配置 需要操作配置文件
2.默认的配置文件是my-default.ini
拷贝上述文件并重命名为my.ini
直接拷贝字符编码相关配置即可无需记忆
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
sql_mode=STRICT_TRANS_TABLES (这一行是为了限制填入数据时因为有没有符号会改动数据 配置文件内有了这条语句不会自动修改数据)
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
ps:
1.utf8mb4 能够存储表情 功能更强大
2.utf8与utf-8是有区别的 MySQL中只有utf8
修改了配置文件中关于[mysqld]的配置 需要重启服务端
"""
利用配置文件我们可以偷懒
将管理员登录的账号直接写在配置文件中 之后使用mysql登录即可
[mysql]
user = 'root'
password=123
"""
数据库存储引擎
存储引擎
数据库针对数据采取的多种存取方式
查看常见存储引擎的方式
show engines
需要了解的四个存储引擎
MyISAM
MySQL5.5之前默认的存储引擎
存取数据的速度快 但是功能较少 安全性较低
InnoDB
MySQL5.5之后默认的存储引擎
支持事务、行锁、外键等操作 存取速度没有MyISAM快 但是安全性更高
Memory
基于内存存取数据 仅用于临时表数据存取
BlcakHole
任何写入进去的数据都会立刻丢失
了解不同存储引擎底层文件个数
create database db2;
create table t1(id int) engine=innodb;
create table t2(id int) engine=myisam;
create table t3(id int) engine=memory;
create table t4(id int) engine=blackhole;
'''
1.innodb两个文件
.frm 表结构
.ibd 表数据(表索引)
2.myisam三个文件
.frm 表结构
.MYD 表数据
.MYI 表索引
3.memory一个文件
.frm 表结构
4.blackhole一个文件
.frm 表结构
'''
insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);
ps:MySQL默认忽略大小写
创建表的完整语法
create table 表名(
字段名 字段类型(数字) 约束条件,
字段名 字段类型(数字) 约束条件,
字段名 字段类型(数字) 约束条件
);
1.字段名和字段类型是必须的
2.数字和约束条件是可选的
3.约束条件也可以写多个 空格隔开即可
4.最后一行结尾不能加逗号
ps:编写SQL语句报错之后不要慌 仔细查看提示 会很块解决
near ')' at line 7
字段类型之整型
tinyint 1bytes 正负号(占1bit)
smallint 2bytes 正负号(占1bit)
int 4bytes 正负号(占1bit)
bigint 8bytes 正负号(占1bit)
验证整型默认是否携带正负号
create table t5(id tinyint);
insert into t5 values(-129),(128);
结果是-128和127 也就意味着默认自带正负号
我们也可以取消正负号
create table t6(id tinyint unsigned);
insert into t6 values(-129),(128),(1000);
严格模式
当我们在使用数据库存储数据的时候 如果数据不符合规范应该直接报错而不是擅自修改数据 这样会导致数据的失真(没有实际意义)
正常都应该报错 但是我们之前不小心改了配置文件
show variables like '%mode%';
1.临时修改
set session
sql_mode = 'strict_trans_tables';
在当前客户端有效
set global sql_mode = 'strict_trans_tables';
在当前服务端有效
2.永久修改
直接修改配置文件
字段类型之浮点型
float(20,10)
总共存储20位数 小数点后面占10
double(20,10)
总共存储20位数 小数点后面占10
decimal(20,10)
总共存储20位数 小数点后面占10
create table t7(id float(20,10));
create table t8(id double(20,10));
create table t9(id decimal(20,10));
insert into t7 values(1.11111111111);
insert into t8 values(1.11111111111);
insert into t9 values(1.11111111111);
三者核心区别在于精确度不同
float < double < decimal
字段类型之字符类型
char
定长
char(4) 最多存储四个字符 超出就报错 不够四个空格填充至四个
varchar
变长
carchar(4) 最多存储四个字符 超出就报错不够则有几位存几位
create table t10(id int, name char(4));
create table t11(id int, name varchar(4));
insert into t10 values(1, 'jason1');
insert into t11 values(1, 'jason2');
ps: char_length() 获取字段存储得数据长度
默认情况下MySQL针对char的存储会自动填充空格和删除空格
set global
sql_mode= 'strict_trans_tables,pad_char_to_full_length';
char VS varchar
char
优势:整存整取 速度快
劣势:浪费存储空间
varchar
优势:节省存储空间
劣势:存取数据的速度较char慢
jacktonyjasonkevintomjerry
1bytes+jack1bytes+tony1bytes+jason1bytes+kevin1bytes+tom1bytes+jerry
"""
char与varchar的使用需要结合具体应用场景
"""
数字的含义
数字在很多地方都是用来表示限制存储数据的长度
但是在整型中数字却不是用来限制存储长度的
create table t12(id int(3)); 不是用来限制长度
insert into t12 values(12345);
create table t13(id int(5) zerofill); 而是用来控制展示的长度
insert into t13 values(123),(123456789);
create table t14(id int);
"""以后写整型无需添加数字"""
字段类型之枚举与集合
枚举
多选一
create table t15(
id int,
name varchar(32),
gender enum('male','female','others')
);
insert into t15 values(1,'tony','猛男');报错
insert into t15 values(2,'jason','male');正常写入
insert into t15 values(3,'kevin','others');
集合
多选多(多选一)
create table t16(id int, name varchar(16), hobbies set('basketball','football','doublecolorball'));
insert into t16 values(1,'jason','study');
insert into t16 values(2,'tony','doublecolorball');
insert into t16 values(3,'kevin','doublecolorball,football');
字段类型之日期类型
datetime 年月日时分秒
date 年月日
time 时分秒
year 年
create table t17(
id int,
name varchar(32),
register_time datetime,
birthday date,
study_time time,
work_time year
);
insert into t17 values(1, 'jason','2000-11-11 11:11:11','1998-01-21','11:11:11','2000');
ps:以后涉及到日期相关字段一般都是系统自动回复 无需我们操作 数据库内有内置函数
python之路34 MySQL 2 配置文件 字段类型的更多相关文章
- python之路35 MySQL 3 字段的约束条件 外键关系
字段约束条件 无符号.零填充 unsigned id int unsigned zerofill id int(5) zerofill 非空 create table t1( id int, name ...
- python之路33 MySQL 1
存取数据的演变 1.文本文件 文件路径不固定:C:\aaa.txt D:\bbb.txt E:\ccc.txt 数据格式不统一:jason|123 jason$123 jason 123 2.软件开发 ...
- MySQL开发——【字段类型、约束】
创建数据表 基本语法: create table 数据表名称( 字段名称 字段类型 字段约束, ... )[表选项]; 字段类型 整数型 ,有符号型,可以表示 ,有符号型,可以表示 mediumint ...
- MySQL数据库中字段类型为tinyint,读取出来为true/false的问题
由于MySQL中没有boolean类型,所以会用到tinyint类型来表示. 数据库一个表中有一个tinyint类型的字段,值为0或者1,如果取出来的话,0会变成false,1会变成true.
- mysql数据库修改字段类型
修改字段类型: alter table 表名 modify column 字段名字 decimal(18, 4) ;
- 【python之路34】面向对象作业之学生选课系统
一.需求: 1.可以注册管理员账号,管理员账号可以创建老师和课程 2.学生可以注册和登陆,学生可以从课程列表选课,可以进行上课登记查看 二.代码 1.文件目录 bin 存放可执行文件 config 存 ...
- python之路36 MySQL查询关键字
报错及作业讲解 报错 1.粗心大意 单词拼写错误 2.手忙脚乱 不会看报错 思考错误的核心 作业讲解 '''表与表中数据的关系可能会根据业务逻辑的不同 发生改变 不是永远固定的''' 服务器表与应用程 ...
- mysql中存储字段类型的查询效率
检索性能从快到慢的是(此处是听人说的): 第一:tinyint,smallint,mediumint,int,bigint第二:char,varchar第三:NULL 解释(转载): 整数类型1.TI ...
- mysql修改列名字段类型
mysql> alter table lesson change title title varchar(100) charset utf8;
随机推荐
- Linux Block模块之IO合并代码解析
1 IO路径 从内核角度看,进程产生的IO路径主要有三条: 缓存IO:系统绝大部分IO走的这种形式,充分利用文件系统层的page cache所带来的优势.应用程序产生的IO经系统调用落入page ca ...
- 任务清单小功能的实现(任务的增、删、改、查、存储)使用Vue实现
文章目录 1.实现的效果(视频演示) 2.重点讲解(编辑的实现) 2.1 提示(官网介绍nextTick的用法) 3.编辑功能的核心代码 4.完整的代码 5.以往练习 任务清单案例(纯Vue) 实现的 ...
- HTML基础知识(3)浮动、塌陷问题
1.浮动 1.1 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...
- Istio(十一):向istio服务网格中引入虚拟机
目录 一.模块概览 二.系统环境 三.虚拟机负载 3.1 虚拟机负载 3.2 单网络架构 3.3 多网络架构 3.4 Istio 中如何表示虚拟机工作负载? 四.实战:向istio Mesh中引入虚拟 ...
- JWT中token的理解
今天我们来聊一聊关于JWT授权的事情. JWT:Json Web Token.顾名思义,它是一种在Web中,使用Json来进行Token授权的方案. 既然没有找好密码,token是如何解决信任问题的呢 ...
- 基于LZO的高性能无损数据压缩IP
LZOAccel-C LZO Data Compression Core/无损数据压缩IP Core LZOAccel-C是一个无损数据压缩引擎的FPGA硬件实现,兼容LZO 2.10标准. Core ...
- Websocket集群解决方案
最近在项目中在做一个消息推送的功能,比如客户下单之后通知给给对应的客户发送系统通知,这种消息推送需要使用到全双工的websocket推送消息. 所谓的全双工表示客户端和服务端都能向对方发送消息.不使用 ...
- go工具pprof部署
在做内存分析时,用到了pprof,这里做一下部署介绍和入门级别的使用. pprof是golang的性能工具,有两种交互方式:命令行交互和web交互,同时还支持性能分析数据的图形化展示. 部署pprof ...
- Excel表格复制填写
=if(A1<>"",A1,"") #A1可以为任意表格单元
- java集合类 collection接口,List集合
java集合类:collection接口,List集合 在java.util包中提供了一些集合类,集合类又被称为容器,常用的有List集合,Set集合,Map集合.下面将介绍collection接口和 ...