ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL2

2022-08-15 20:35:06  阅读:179  来源: 互联网

标签: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
来源: https://www.cnblogs.com/NianBai/p/16589511.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有