01 初识mysql

TOC

mysql架构

mysql数据库: C----->S架构软件

  • mysql数据库本质就是一个基于网络网络通信的软件
  • 所有基于网络通信的软件,底层都是socket

关系型数据库和非关系型数据库

DBMS:数据库管理系统
关系型数据库:
MySQL、Oracle、DB2、sql server、....

  • 表结构
    • 需要哪些字段
    • 字段是什么类型
  • 字段与字段类型


    非关系型数据库:
    redis、mongodb...
  • 非关系型数据库一般以 key:value的形式存储

例如:

{
    'name': 'tank'
}

存储引擎

存储引擎是用于根据不同的机制处理不同的数据。
查看mysql中所有引擎:show engines;

mysql中的几种引擎

myisam: 5.5以前老的版本使用的存储引擎
blackhole: 黑洞引擎,存进去数据消失
innodb: 默认使用存储引擎

  • 支持事务
  • 行锁
  • 外键
    memory: 通电数据存在,断电丢失(数据放在内存中)



示例:
创建表的时候指定引擎

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

# 插入数据
insert into t1 values(1);
insert into t2 values(2);
insert into t3 values(3);
insert into t4 values(4);

设置严格模式

# 查看数据库配置中变量名包含mode的配置参数:
show variables like "%mode%";

# 修改安全模式:
set session; # 局部有效,只在你当前操作的窗口有效
set global session; # 全局有效,永久有效

# 修改完之后退出当前客户端重新登录即可
set global sql_mode = 'STRICT_TRANS_TABLES';

char和vachar

区别
1:char类型是指固定长度的存储方式,长度不足会在右侧补足
2:varchar是值不固定长度的存储方式,只存储:字符长度+1个byte长度存储信息长度

什么地方使用char呢?
1:存储字节小的,比如门牌号101、102,因为如果用varchar,本身字节长度就小,还要浪费一个byte去存长度信息
2:存储固定长度的,比如身份证号、手机号这些都是固定长度的
3:更新动作十分繁琐的,因为varchar还要去计算存储长度会浪费精力,而char是不需要的

另外还有根据存储引擎来区分使用
myisam 存储引擎 建议使用固定长度数据列 代替 可变长度的数据列。
memory存储引擎 目前都使用固定数据行存储,因此无论使用char varchar列都没关系,
innodb 存储引擎 建意使用varchar 类型





猜你喜欢

转载自www.cnblogs.com/cnhyk/p/12024895.html