MySQL数据库02

2022/5/5 2:14:34

本文主要是介绍MySQL数据库02,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

字符编码与配置文件

  • 查看MySQL默认字符编码:\s

如果是5.X系列,显示的编码有多种:latin1;gbk
如果是8.X系列,显示的统一是:utf8mb4;utf8mb4是utf8优化版本,支持存储表情。

  • 统一字符编码:

5.X默认编码有多种,可能会导致乱码的情况,所以应该统一编码。

使用my-default.ini配置文件来统一字符编码。

配置文件设置步骤:

  1. 拷贝一份该配置文件并修改名称为my.ini
  2. 清空my.ini文件内的内容
  3. 添加固定的配置信息即可
  4. 保存并重启服务端即可生效>>>:net stop mysql;net start mysql

固定的配置信息:

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

 

存储引擎

什么是存储引擎:

存储引擎可以理解为处理数据的不同方式。引擎决定数据库存取数据的方式==>不同的特点==>不同的用户体验。

引擎是建表时规定,提供给表使用的,不是数据库。

查看存储引擎:

show engines;展示所有引擎

MyISAM>>>:

5.1之前版本MySQL默认的存储引擎

特点:存取数据的速度快,但是功能很少,安全性较低。

InnoDB>>>:

5.1之后版本MySQL默认的存储引擎

特点:有诸多功能,安全性较高,但是存取速度没有MyISAM快。

自定义选择存储引擎:

create table t1(id int)engine=myisam;
create table t2(id int)engine=innodb;
create table t3(id int)engine=blackhole;
create table t4(id int)engine=memory;

创建表的完整语法

create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
)engine=innodb charset=utf8;

[]:表示可选参数

ps:

1.字段名和字段类型是必须的
2.数字和约束条件是可选的
3.约束条件可以写多个,空格隔开即可;eg:字段名1 字段类型(数字) 约束条件1 约束条件2 约束条件3
4.最后一行字段结尾不能加逗号!!!

MySQL的数据类型

Mysql数据库数据类型包括:整型,浮点型,字符类型,时间类型,枚举类型,集合类型。

  • 整型

  1. tinyint>>>:1bytes=8bit
  2. smallint>>>:2bytes=16bit
  3. mediumint>>>:3bytes=24bit
  4. int>>>:4bytes=32bit
  5. bigint>>>:8bytes=64bit

不同类型的整型所占的字节数不一样,决定所占空间及存放数据的大写,从上往下能够存储的数字范围越来越大!!!

整型需要考虑正负数的问题,如果需要存储负数,则需要占据一个比特位。

所有的整型都默认带有正负号。去除正负号则需要使用约束条件。

约束条件:

unsigned:无符号    eg:create table t1(id tinyint unsigned)

zerofill:位数不够用0填充    eg:create table t2(id interesting(3)zerofill)

  • 浮点型

  1. float>>>:float(255,30)     总共255位;小数位占30位   【精度最低;最常用】
  2. double>>>:double(255,30)    总共255位;小数位占30位  【精度高;占位多】
  3. decimal>>>:decimal(65,30)    总共65位;小数位占30位   【字符串存;全精度】

这三种浮点型:从上往下其精确度越来越高!!!decimal>double>float

(M,D)>>>:M为位数;D为小数位数。

  • 字符类型

  1. char>>>:定长     

char(4)>>>:最大只能存储四个字符,如果超出则报错;如果不够则用空格补全。

char的特点:整存整取,速度快;但是会造成一定的存储空间的浪费。

  1. varchar>>>:不定长     

varchar(4)>>>:最大只能存储四个,如果超出则报错;如果不够则有几个存几个。

varchar的特点:节省存储空间;但是存取数据的速度相较于char来说较慢。

ps:varchar的存取数据的方式:

varchar在存数据的时候会生成一个1bytes的报头,用来记录数据长度;varchar在取数据的时候先会读取1bytes的报头,然后再从中获取真实数据长度。

总结:数据长度相近的数据提倡用char来存放数据,数据需要高速存取,以空间换时间,采用char类型。

  • 枚举与集合

  1. 枚举(enum)>>>:单选
create table t14(
      id int,
    name varchar(32),
    gender enum('male','female','others')
  );
'''插入数据的时候 针对gender只能填写提前定义好的数值'''
  1. 集合(set)>>>:多选
create table t15(
      id int,
    name varchar(32),
    hobby set('篮球','足球','双色球','排球','水球','肉球')
  );
  • 时间类型

  1. date>>>:年月日
  2. datetime>>>:年月日时分秒
  3. time>>>:时分秒
  4. year>>>:年
create table t1(
    id int,
  name varchar(32),
  reg_time datetime,
  birth date,
  study_time time,
  join_time year
);

约束条件

字段类型与约束条件的关系:

约束条件是基于字段类型之上的额外限制。

eg:id int unsigned>>>:字段类型int规定了id字段只能存整数,约束条件unsigned指的是整数基础之上还必须是正数。

  • unsigned:无符号   

eg:create table t1(id tinyint unsigned)

  • zerofill:位数不够用0填充   

eg:create table t2(id interesting(3)zerofill)

  • not null:非空

eg:create table t3(id int ,name varchar(32)not null)

insert into t18(id) values(2);  # 报错
insert into t18(id,name) values(2,null);  # 报错
insert into t18(id,name) values(2,'');  # 不报错
  • default:默认值

eg:create table t4(id int ,name varchar(32)default 'jason')

  • unique:唯一值

单列唯一:某个字段下对应的数据不能重复,是唯一的。

create table t20(
    id int,
    name varchar(32) unique
  );

多列唯一:多个字段下对应的数据组合到一起的结果不能重复,是唯一的。

create table t21(
      id int,
    host varchar(32),
    port int,
    unique(host,port)
  );
  • primary key:主键

单从约束层面上看,primary key相当于not null + unique。>>>:(非空且唯一)。

eg:create table t6 (id int primary key)

InnoDB存储引擎规定的一张表,有且必须要有一个主键,用于构建表。主键可以加快数据的查询速度(类似于书的目录)。

如果创建表创建的时候没有设置主键也没有其他的键,那么InnoDB会采用一个隐藏的字段作为表的主键(隐藏就意味着而无法使用 即无法加快数据查询);
如果没有主键,但是有非空且唯一的字段,那么会自动升级成主键(从上往下的第一个)。

create table t23(
              tid int,
              pid int not null unique,
              cid int not null unique
          );

ps:

  1. 表默认都有主键,且只能拥有一个主键字段
  2. 没有设置主键的表,数据库系统会自上而下将第一个规定为unique not null字段自动提升为primary key 主键
  3. 如果整个表都没有unique not null 字段且没有primary key 字段,系统会默认创建一个隐藏字段作为主键
  4. 通常必须手动指定表的主键,一般用id字段,且id字段一般类型为int, 因为int类型可以为auto_increment
  • auto_increment:自增

专门配合主键一起使用,用户以后在添加数据的时候就不需要自己记忆主键值。

create table t25(
      id int primary key auto_increment,
    name varchar(32)
  );

总结:

以后在创建规范的表的时候,一般都会有一个主键字段的编写如下:
id int primary key auto_increment

 



这篇关于MySQL数据库02的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程