第二篇:初始mysql
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: 通电数据存在,断电丢失(数据放在内存中)
**示例:** 创建表的时候指定引擎 ```mysql # 创建表 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);
# 设置严格模式
```mysql
# 查看数据库配置中变量名包含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 类型