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配置文件来统一字符编码。
配置文件设置步骤:
- 拷贝一份该配置文件并修改名称为my.ini
- 清空my.ini文件内的内容
- 添加固定的配置信息即可
- 保存并重启服务端即可生效>>>: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数据库数据类型包括:整型,浮点型,字符类型,时间类型,枚举类型,集合类型。
-
整型
- tinyint>>>:1bytes=8bit
- smallint>>>:2bytes=16bit
- mediumint>>>:3bytes=24bit
- int>>>:4bytes=32bit
- bigint>>>:8bytes=64bit
不同类型的整型所占的字节数不一样,决定所占空间及存放数据的大写,从上往下能够存储的数字范围越来越大!!!
整型需要考虑正负数的问题,如果需要存储负数,则需要占据一个比特位。
所有的整型都默认带有正负号。去除正负号则需要使用约束条件。
约束条件:
unsigned:无符号 eg:create table t1(id tinyint unsigned)
zerofill:位数不够用0填充 eg:create table t2(id interesting(3)zerofill)
-
浮点型
- float>>>:float(255,30) 总共255位;小数位占30位 【精度最低;最常用】
- double>>>:double(255,30) 总共255位;小数位占30位 【精度高;占位多】
- decimal>>>:decimal(65,30) 总共65位;小数位占30位 【字符串存;全精度】
这三种浮点型:从上往下其精确度越来越高!!!decimal>double>float
(M,D)>>>:M为位数;D为小数位数。
-
字符类型
- char>>>:定长
char(4)>>>:最大只能存储四个字符,如果超出则报错;如果不够则用空格补全。
char的特点:整存整取,速度快;但是会造成一定的存储空间的浪费。
- varchar>>>:不定长
varchar(4)>>>:最大只能存储四个,如果超出则报错;如果不够则有几个存几个。
varchar的特点:节省存储空间;但是存取数据的速度相较于char来说较慢。
ps:varchar的存取数据的方式:
varchar在存数据的时候会生成一个1bytes的报头,用来记录数据长度;varchar在取数据的时候先会读取1bytes的报头,然后再从中获取真实数据长度。
总结:数据长度相近的数据提倡用char来存放数据,数据需要高速存取,以空间换时间,采用char类型。
-
枚举与集合
- 枚举(enum)>>>:单选
create table t14( id int, name varchar(32), gender enum('male','female','others') ); '''插入数据的时候 针对gender只能填写提前定义好的数值'''
- 集合(set)>>>:多选
create table t15( id int, name varchar(32), hobby set('篮球','足球','双色球','排球','水球','肉球') );
-
时间类型
- date>>>:年月日
- datetime>>>:年月日时分秒
- time>>>:时分秒
- 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:
- 表默认都有主键,且只能拥有一个主键字段
- 没有设置主键的表,数据库系统会自上而下将第一个规定为unique not null字段自动提升为primary key 主键
- 如果整个表都没有unique not null 字段且没有primary key 字段,系统会默认创建一个隐藏字段作为主键
- 通常必须手动指定表的主键,一般用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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:新手必读指南
- 2024-11-20部署MySQL集群教程:初学者指南
- 2024-11-20部署MySQL集群项目实战:新手教程
- 2024-11-20部署MySQL集群资料:新手入门教程
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程