mysql数据库2

字符编码与配置文件

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

my-default.ini # windows下MySQL默认的配置文件
拷贝上述文件并且重命名为my.ini

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

添加字符编码相关的配置(百度查看即可)
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
注意如果配置文件涉及到了mysqld相关的配置修改 那么需要重启服务端才可以生效

存储引擎

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

需要掌握的存储引擎

1.MyISAM

MySQL5.5及之前版本默认的存储引擎
存取数据的速度快 但是功能较少 安全性较低

2.InnoDB

MySQL5.5之后版本默认的存储引擎
存取数据的速度没有MyISAM快 但是支持事务、行锁、外键等诸多功能 
安全性较高

3.Memory

基于内存的存储引擎 存取数据极快 但是断电立刻丢失

4.BlackHole

黑洞 任何写进去的数据都会立刻丢失 类似于垃圾站

ps:MySQL中默认是大小写不敏感的(忽略大小写)
不同存储引擎之间底层文件的区别
create table d1(id int) engine=innodb;
create table d2(id int) engine=myisam;
create table d3(id int) engine=memory;
create table d4(id int) engine=blackhole;
ps:windows cmd终端鼠标右键的意思就是粘贴

InnoDB
.frm 表结构
.ibd 表数据、表索引(加快数据查询)
MyISAM
.frm 表结构
.MYD 表数据
.MYI 表索引(加快数据查询)
Memory
.frm 表结构
BlackHole
.frm 表结构

insert into d1 values(1);
insert into d2 values(1);
insert into d3 values(1);
insert into d4 values(1);

创建表的完整语法

create table 表名(
字段名1 字段类型(数字) 约束条件,
字段名2 字段类型(数字) 约束条件,
字段名3 字段类型(数字) 约束
)engine=存储引擎;

1.字段名和字段类型是必须的(至少写一个)

2.数字跟约束条件是可选的(可有可无)

3.约束条件可以写多个 空格隔开即可

4.最后一个字段的结尾千万不能加逗号

字段类型之整型

tinyint 1bytes -128~127 0~255(28-1)
smallint 2bytes -2
15 (216-1)
int 4bytes (2
32-1)
bigint 8bytes (2**64-1)

1.验证整型是否自带负号

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

2.自定义移除负号

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

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

方式1:命令临时修改
set session sql_mode=‘strict_trans_tables’ 当前客户端操作界面有效
set global sql_mode=‘STRICT_TRANS_TABLES’ 服务端不重启永久有效
方式2:配置文件永久修改
[mysqld]
sql_mode=‘STRICT_TRANS_TABLES’
“”"

字段类型之浮点型

float
double
decimal

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

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

验证精确度问题
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足够使用了
如果想追求非常完美的精确度 可以使用字符串来代替
“”"

字段类型之字符类型

char 定长
char(4)
最大只能存储四个字符 如果超过范围则直接报错
如果不超出范围 则用空格填充至四个字符

varchar 变长
varchar(4)
最大只能存储四个字符 如果超过范围则直接报错
如果不超出范围 则有几位就存几位

验证两者的区别
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在存储的时候针对没有满足固定位数的字符会自动填充空格
然后在读取的时候又会自动将填充的空格移除 如果想取消该机制 需要sql_mode
set global sql_mode=‘strict_trans_tables,pad_char_to_full_length’;
上述目录是替换 不是新增 所以之前的配置也要写上
“”"
3.char VS varchar
char
整存整取 速度快
浪费存储空间
varchar
节省存储空间
存取数据的速度慢于char
“”"
char(4)
a son jacktom lili
varchar(4)
1bytes+a1bytes+son1bytes+jack1bytes+tom1bytes+lili
存取数据都需要操作报头(耗时)

存储人的姓名>>>:varchar
"""
两者使用频率都很高 现在默认很多时候是varchar

数字的含义

数字大部分情况下都是用来限制字段的存储长度 但是整型除外!!!
不是用来限制存储的长度 而是展示的长度

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

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

字段类型之枚举与集合

枚举
多选一
eg:性别(男 女 其他)

create table t15(
id int,
name varchar(32),
gender enum(‘male’,‘female’,‘others’)
);
集合
多选多(包含多选一)
eg:爱好(唱 跳 rap)
create table t16(
id int,
name varchar(32),
hobbies set(‘read’,‘run’,‘music’,‘rap’)
);

字段类型之日期类型

date 年月日
datetime 年月日时分秒
time 时分秒
year 年份

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() # 可以自定义字段顺序
“”"
1.unsigned 无负号
id int unsigned
2.zerofill 零填充
id int zerofill
3.; 非空
name varchar(32) not null
4.default 默认值
name varchar(32) default ‘jason’
5.unique 唯一值
id int unique 单列唯一

host varchar(32)
port int		
unique(host,port)  联合唯一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值