首页 > 数据库 >MySQL2

MySQL2

时间:2022-08-15 20:26:21浏览次数:59  
标签:MySQL2 int create 存储 类型 table id

目录

一、字符编码与配置文件

1.配置文件

\s  # 查看数据库基本信息(用户、字符编码)

my-default.ini  # windows下MySQL默认的配置文件

拷贝my-default.ini并且重命名为my.ini

由于5.6版本编码不统一 会造成乱码,我们需要统一修改为utf8

2.添加字符编码相关的配置(百度查看就好)

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8  

注意:如果配置文件涉及到了mysqld相关的配置修改,那么需要重启服务端才可以生效

二、存储引擎

1.简介

存储引擎可以简单的理解为针对相同的数据采用的不同存取策略

相关语句:

show engines;  # 查看所有的存储引擎

2.需掌握的存储引擎

存储引擎 描述
MyISAM MySQL5.5及之前版本默认的存储引擎
存取数据的速度快 但是功能较少 安全性较低
InnoDB MySQL5.5之后版本默认的存储引擎
存取数据的速度没有MyISAM快,但是支持事务、行锁、外键等诸多功能,安全性较高
Memory 基于内存的存储引擎,存取数据极快,但是断电立刻丢失
BlackHole 黑洞,任何写进去的数据都会立刻丢失,类似于垃圾站

3.不同存储引擎之间底层文件的区别

3.1.InnoDB

  • .frm:表结构
  • .ibd:表数据、表索引(加快数据查询)

3.2.MyISAM

  • .frm:表结构
  • .MYD:表数据
  • .MYI:表索引(加快数据查询)

3.3.Memory

  • .frm:表结构

3.4.BlackHole

  • .frm:表结构

3.5.应用示例

create table t1(id int) engine=innodb;
insert into t1 values(1);

create table t2(id int) engine=myisam;
insert into t2 values(1);

create table t3(id int) engine=memory;
insert into t3 values(1);

create table t4(id int) engine=blackhole;
insert into t4 values(1);

注意:

  • MySQL中默认是大小写不敏感的(忽略大小写)
  • windows cmd终端鼠标右键的意思就是粘贴

三、创建表的完整语法

create table 表名(
	 字段名1 字段类型(数字) 约束条件,
	 字段名2 字段类型(数字) 约束条件,
    字段名3 字段类型(数字) 约束条件
)engine=存储引擎;
  1. 字段名和字段类型是必须的(至少写一个)
  2. 数字跟约束条件是可选的(可有可无)
  3. 约束条件可以写多个,用空格隔开
  4. 最后一个字段的结尾加逗号

四、字段类型之整型

1.类型简介

类型
tinyint 1bytes
smallint 2bytes
int 4bytes
bigint 8bytes
  1. 验证整型是否自带负号

    create table t6(id tinyint);
    insert into t6 values(-129),(256);
    
    • 注意:发现自动填写为两个边界值,数据失真,没有实际意义,上述所有的整型类型默认都会带有负号
  2. 自定义移除负号

    • unsigned:约束条件之一,意思是不需要负号
    create table t7(id tinyint unsigned);
    insert into t7 values(-129),(256);
    

2.修改配置文件的方式

插入的数据值超出了数据类型的范围,不应该让其插入并自动修改,没有意义,数据库应该直接报错(这个特性其实是有的,只是被我们改了配置文件)

  • 方式1:命令临时修改

    set session sql_mode='strict_trans_tables'  # 当前客户端操作界面有效
    set global sql_mode='STRICT_TRANS_TABLES'  # 服务端不重启永久有效
    
  • 方式2:配置文件永久修改

    [mysqld]
    sql_mode='STRICT_TRANS_TABLES'
    

五、字段类型之浮点型

1.类型简介

三者都可以存储浮点型数据,但是各自的精确度不一致

浮点型 属性
float 存储浮点型数据
double 存储浮点型数据
decimal 存储浮点型数据

2.使用方式

float(255,30)  # 第一个数表示总共多少位 第二个数表示小数占多少位
double(255,30)
decimal(65,30)

3.验证精确度问题

create table t8(id float(255,30));
create table t9(id double(255,30));
create table t10(id decimal(65,30));
insert into t8 values(1.11111111111111111111111111111);
insert into t9 values(1.11111111111111111111111111111);
insert into t10 values(1.11111111111111111111111111111);

三者精确度对比:float < double < decimal

注意:一般情况下float足够使用,如果想追求非常完美的精确度,可以使用字符串代替

六、字段类型之字符类型

1.类型简介

字符类型 功能 属性
char 定长 char(4):最大只能存储四个字符,超过范围直接报错,不超出范围则用空格填充至四个字符
varchar 变长 varchar(4):最大只能存储四个字符,超过范围直接报错,不超出范围有几位就存几位

注意:默认情况下char在存储的时候针对没有满足固定位数的字符会自动填充空格,然后在读取的时候又会自动将填充的空格移除,如果想取消该机制需要sql_mode

set global sql_mode='strict_trans_tables,pad_char_to_full_length';

上述目录是替换不是新增,所以之前的配置也要写上

2.验证char和varchar两者区别

create table t11(id int, name char(4));
create table t12(id int, name varchar(4));
  1. 结果验证,超出范围两者都报错

    • 注意:sql_mode='strict_trans_tables'
  2. 验证定长和变长特性

    char_length()  # 统计字段数据的长度
    
字符类型 区别
char 优点:整存整取,速度快
缺点:浪费存储空间
varchar 优点:节省存储空间
缺点:存取数据的速度慢于char

注意:两者使用频率都很高,现在默认很多时候是varchar

七、数字的含义

1.简介

数字大部分情况下都是用来限制字段的存储长度(整型除外

  • 不是用来限制存储的长度,而是展示长度

2.应用示例

create table t13(id int(3)); 
create table t14(id int(3) zerofill);

总结:涉及到整型字段的定义,类型后面不需要加括号写数字,除非有业务需求必须固定位数

八、字段类型之枚举与集合

1.枚举

简介:多选一

  • 例:男、女、其他

应用示例:

create table t15(
	id int,
 	name varchar(32),
	gender enum('male','female','others')
);

2.集合

简介:多选多(包含多选一)

  • 例:爱好(唱、跳、rap、篮球)

应用示例:

create table t16(
	id int,
	name varchar(32),
	hobbies set('read','run','music','rap')
);

九、字段类型之日期类型

1.类型简介

日期类型 描述
date 年月日
datetime 年月日时分秒
time 时分秒
year 年份

2.应用示例

create table t17(
	id int,
	name varchar(32),
 	birth date,
  	reg_time datetime,
 	study_time time,
 	join_time year
);
insert into t17 values(1,'jason','2022-11-11','2000-11-11 11:11:11','11:11:11','1995');

十、字段约束条件

insert into 表名 vlaues()  # 默认按照创建表的字段顺序添加
insert into 表名(字段) vlaues()  # 可以自定义字段顺序
约束条件 属性 应用示例
unsigned 无负号 id int unsigned
zerofill 零填充 id int zerofill
not null 非空 name varchar(32) notnull
default 默认值 name varchar(32) defailt ‘jason’
unique 唯一值 单列为一:id int unique
联合唯一:
host varchar(32)
port int
unique(host,port)

标签:MySQL2,int,create,存储,类型,table,id
From: https://www.cnblogs.com/NianBai/p/16589511.html

相关文章