字符编码与配置文件

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 配置文件 字段类型的更多相关文章

  1. python之路35 MySQL 3 字段的约束条件 外键关系

    字段约束条件 无符号.零填充 unsigned id int unsigned zerofill id int(5) zerofill 非空 create table t1( id int, name ...

  2. python之路33 MySQL 1

    存取数据的演变 1.文本文件 文件路径不固定:C:\aaa.txt D:\bbb.txt E:\ccc.txt 数据格式不统一:jason|123 jason$123 jason 123 2.软件开发 ...

  3. MySQL开发——【字段类型、约束】

    创建数据表 基本语法: create table 数据表名称( 字段名称 字段类型 字段约束, ... )[表选项]; 字段类型 整数型 ,有符号型,可以表示 ,有符号型,可以表示 mediumint ...

  4. MySQL数据库中字段类型为tinyint,读取出来为true/false的问题

    由于MySQL中没有boolean类型,所以会用到tinyint类型来表示. 数据库一个表中有一个tinyint类型的字段,值为0或者1,如果取出来的话,0会变成false,1会变成true.

  5. mysql数据库修改字段类型

    修改字段类型: alter table 表名 modify column 字段名字 decimal(18, 4) ;

  6. 【python之路34】面向对象作业之学生选课系统

    一.需求: 1.可以注册管理员账号,管理员账号可以创建老师和课程 2.学生可以注册和登陆,学生可以从课程列表选课,可以进行上课登记查看 二.代码 1.文件目录 bin 存放可执行文件 config 存 ...

  7. python之路36 MySQL查询关键字

    报错及作业讲解 报错 1.粗心大意 单词拼写错误 2.手忙脚乱 不会看报错 思考错误的核心 作业讲解 '''表与表中数据的关系可能会根据业务逻辑的不同 发生改变 不是永远固定的''' 服务器表与应用程 ...

  8. mysql中存储字段类型的查询效率

    检索性能从快到慢的是(此处是听人说的): 第一:tinyint,smallint,mediumint,int,bigint第二:char,varchar第三:NULL 解释(转载): 整数类型1.TI ...

  9. mysql修改列名字段类型

    mysql> alter table lesson change title title varchar(100) charset utf8;

随机推荐

  1. day49-JDBC和连接池05

    JDBC和连接池05 11.BasicDAO 先来分析一个问题 前面我们使用了Apache-DBUtils和Druid简化了JDBC开发,但仍存在以下不足: SQL语句是固定的,不能通过参数传入,通用 ...

  2. 面向对象day02,作业学生类,电脑类

    学生类,电脑类,测试类 学生类:解释都写在注释里面 public class Student { public String name; public int id; public char gend ...

  3. 【Serverless】快速集成云函数HarmonyOS

    ​1.学习目标 什么是AppGallery Connect云函数 云函数是一项Serverless计算服务,提供FaaS(Function as a Service)能力,可以帮助开发者大幅简化应用开 ...

  4. 如何在Spring Boot开启事务

    说到事务,那什么是事务呢? 事务(Transaction),一般是指要做的或所做的事情. 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行. ...

  5. SpringBoot&MyBatisPlus

    5. SpringBoot 学习目标: 掌握基于SpringBoot框架的程序开发步骤 熟练使用SpringBoot配置信息修改服务器配置 基于SpringBoot完成SSM整合项目开发 5.1 入门 ...

  6. 04 uniapp/微信小程序 项目day04

    一.加入购物车 1.1 购物车数量 先创建购物车git 这里的数据肯定要做全局数据,因为不能只在details这个页面去操作他,他到底有几个也是由购物车页面获取到的 所以需要vuex 创建store文 ...

  7. Git配置和使用?Git你真的会用么?Git与SVN的主要区别

    1.Git环境配置    在学习Git之前,首先要知道什么是版本控制 1.1 版本控制:版本迭代.新的版本!版本管理器 版本控制是开发过程中用于管理我们的文件.目录或工程内容的修改内容,查看修改历史记 ...

  8. 大数据下一代变革之必研究数据湖技术Hudi原理实战双管齐下-上

    @ 目录 概述 定义 发展历史 特性 使用场景 编译安装 编译环境 编译Hudi 关键概念 TimeLine(时间轴) File Layouts(文件布局) 索引 表类型 查询类型 概述 定义 Apa ...

  9. 5、有一行电文,译码规律为: a ——> z b——> y c ——> x. 即把第一个字母变成第26个字母, 第i个字母变成第(26-i+1)个字母, 非字母字符不变

    /* 有一行电文,译码规律为: a --> z b--> y c --> x. 即把第一个字母变成第26个字母, 第i个字母变成第(26-i+1)个字母, 非字母字符不变 */ #i ...

  10. 【iOS逆向】某茅台App算法分析还原

    1.目标 某茅台软件的actParam算法分析还原. 2.使用工具 mac系统 frida-ios-dump:砸壳 已越狱iOS设备:脱壳及frida调试 IDA Pro:静态分析 Charles:抓 ...