02-MySQL基础
MySQL基础
1.存储引擎
1.1MyISAM
MySQL5.5以及之前默认存储引擎MyISAM
如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不高,那么可以选择这个存储引擎。
MyISAM一个表对应三个文件表结构、表中的数据、存储索引
1.2InnoDB
MySQL5.6之后默认存储引擎InnoDB
用于事务处理应用程序,支持外键和行级锁。
InnoDB一个表对应两个文件表结构、表中的数据和索引存在一个文件
2.InnoDB介绍
1- 事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。
2- 支持行级锁和表级锁,默认为行级锁。
表级锁: 开销小,加锁快;不会出现死锁(因为MyISAM会一次性获得SQL所需的全部锁);锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁: 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
3- 外键(froeign key)外键为某个表中的一列,它包含两一个表的主键值,定义了两个表之间的关系。
3.查看数据库的存储引擎
# 查看数据库的默认存储引擎
mysql> show variables like "default_storage_engine";
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set, 1 warning (0.00 sec) # 查看数据库支持的存储引擎
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)
4.指定存储引擎
4.1在见表时指定存储引擎
# 创建存储引擎为InnoDB的表
mysql> create table indb (id int, name char(12)) engine=innodb;
Query OK, 0 rows affected (0.04 sec)
# 创建存储引擎为MyISAM的表
mysql> create table myam (id int, name char(12)) engine=myisam;
Query OK, 0 rows affected (0.01 sec)
# 修改表的存储引擎
mysql> alter table indb engine=myisam;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
4.2在配置文件中指定存储引擎
查看my.ini配置文件
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
5.MySQL常见数据类型
类型 | 大小 | 范围(有符号) | 范围(无符号)unsigned约束 | 用途 |
int | 1字节 | (-128,127) | (0,255) | 小整数值 |
float |
4 字节 float(255,30) |
(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) | 0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 浮点数值 |
char |
0-255字节 |
- | - | 定长字符串 |
varchar | 0-65535 字节 | - | - | 变长字符串 |
datetime | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 年月日时分秒 |
enum |
对1-255个成员的枚举需要1个字节存储; 对于255-65535个成员,需要2个字节存储; 最多允许65535个成员。 |
- | - | 选择性别 |
set |
1-8个成员的集合,占1个字节 9-16个成员的集合,占2个字节 17-24个成员的集合,占3个字节 25-32个成员的集合,占4个字节 33-64个成员的集合,占8个字节 |
- | - | 多选:兴趣爱好 |
常见数据类型说明
字符串,描述的都是字符
# char 定长字段 255 相对浪费空间 存取的速度比varchar要快
# char(10)
# 'hellohello1' --> 'hellohello'
# 'hello '
# varchar 变长字段 65535 相对节省空间 存取的速度比varchar要慢
# varchar(200)
# 'hellohello1' --> '10hellohello'
# 'hello' --> '5hello'
# 常见的场景
# 手机号 char(11)
# 身份证号 char(18)
# 用户名 char(14)
# 密码 char(12)
# 评论 varchar
时间
# datetime
集合和枚举
# hobby set('抽烟','喝酒','烫头')
# gender enum('男','女')
6.MySQL的约束条件
not null :非空约束,指定某列不能为空; default:默认值约束,指定某列的默认值 unique:唯一约束,指定某列或者几列组合不能重复; auto_increment:自增约束,指定某int、非空列自动增加 primary key:主键,指定该列的值可以唯一地标识该列记录 foreign key:外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性
not null
mysql> create table not_null (id int not null);
Query OK, 0 rows affected (0.69 sec) mysql> desc not_null;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.01 sec) mysql> insert into not_null values (null);
ERROR 1048 (23000): Column 'id' cannot be null
mysql> insert into not_null values(1);
Query OK, 1 row affected (0.40 sec) mysql> desc not_null;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec) mysql> select * from not_null;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
default
mysql> create table name_sex (id int, name char(12), sex char(10) default 'male');
Query OK, 0 rows affected (0.52 sec) mysql> desc name_sex;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | char(12) | YES | | NULL | |
| sex | char(10) | YES | | male | |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.00 sec) mysql> insert into name_sex (name) values ('zhangsan');
Query OK, 1 row affected (0.44 sec) mysql> select * from name_sex;
+------+----------+------+
| id | name | sex |
+------+----------+------+
| NULL | zhangsan | male |
+------+----------+------+
1 row in set (0.00 sec) mysql> insert into name_sex (id, name) values (2, 'lisi');
Query OK, 1 row affected (0.04 sec) mysql> select * from name_sex;
+------+----------+------+
| id | name | sex |
+------+----------+------+
| NULL | zhangsan | male |
| 2 | lisi | male |
+------+----------+------+
2 rows in set (0.00 sec) mysql> insert into name_sex (name, sex) values ('wangwu', 'female');
Query OK, 1 row affected (0.04 sec) mysql> select * from name_sex;
+------+----------+--------+
| id | name | sex |
+------+----------+--------+
| NULL | zhangsan | male |
| 2 | lisi | male |
| NULL | wangwu | female |
+------+----------+--------+
3 rows in set (0.00 sec)
02-MySQL基础的更多相关文章
- 02 mysql 基础二 (进阶)
mysql 基础二 阶段一 表约束 1.not null 非空约束 例子: create table tb1( id int, name varchar(20) not null ); 注意 空字符不 ...
- 数据库02 /MySQL基础数据类型、完整性约束、sql_mode模式
2.MySQL基础数据类型.完整性约束.sql_mode模式 目录 2.MySQL基础数据类型.完整性约束.sql_mode模式 1. MySQL常用数据类型 MySQL常用数据类型预览 1. 1 数 ...
- 02 . Mysql基础操作及增删改查
SQL简介 SQL(Structured Query Language 即结构化查询语言) SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开发. SQL语句四大 ...
- mysql基础之基本数据类型
原文:mysql基础之基本数据类型 列类型学习 mysql三大列类型 整型 Tinyint/ smallint/ mediumint/int/ bigint(M) unsigned zerofill ...
- 服务管理之mysql基础
目录 mysql基础 1. 关系型数据库介绍 1.1 数据结构模型 1.2 RDBMS专业名词 2. mysql安装与配置 2.1 mysql安装 2.2 mysql配置 3. mysql的程序组成 ...
- Linux服务-mysql基础篇
目录 1. 关系型数据库介绍 1.1 数据结构模型 1.2 RDBMS专业名词 1.3 关系型数据库的常见组件 1.4 SQL语句 2. mysql安装与配置 2.1 mysql安装 2.2 mysq ...
- 01 mysql 基础一 (进阶)
mysql基础一 1.认识mysql与创建用户 01 Mysql简介 Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQLAB公司开发,目前属于Oracle公司. MySQL是一种关联数据库 ...
- MySQL基础教程——创建数据库并插入数据
本节将介绍 MySQL 新建数据库,新建表,插入数据以及基本数据类型的相关知识.本节实验将创建一个名为 mysql_shiyan 的数据库,其中有两张表 employee和 department. 1 ...
- MySQL基础(用的贼鸡儿多)
整理有点乱,业余也玩玩系统,经常碰见这些玩意,有点烦,老是记不住 MySQL 基础语法 一.连接 MYSQL格式: mysql -h 主机地址 -u 用户名 -p 用户密码. 1.连接到本机上的 MY ...
- MySQL基础day03 存储引擎和外键MySQL 5.6
MySQL基础day03_存储引擎和外键-MySQL 5.6 外键的条件: 1,表的存储引擎为innodb存储引擎 2,表中外键字段的类型要与参考表的字段类型一致 3,外键字段要是索引类型中的一种 M ...
随机推荐
- Docker & ASP.NET Core (1):把代码连接到容器
和这种蛋糕一样,Docker的容器和镜像也是使用类似的分层文件系统构建而成的. 这样做的好处就是可以节省硬盘空间,也利于复用等等.因为Docker基于镜像创建容器的时候,其镜像是共享的:而且镜像里面的 ...
- 开箱即用(out-of-box)的Redis序列号生成器,不用再写任何代码,你值得拥有
先看整体效果 把简单的东西“傻瓜化”是软件开发追求的目标之一.请看下图: 左边是在 application.yml 里配置了3个生成器,右边可以直接注入到代码中使用,注意,不用写任何代码.这酸爽. ...
- 【我们一起写框架】MVVM的WPF框架(一)—序篇
前言 我想,有一部分程序员应该是在二三线城市的,虽然不知道占比,但想来应该不在少数. 我是这部分人群中的一份子. 我们这群人,面对的客户,大多是国内中小企业,或者政府的小部门.这类客户的特点是,资金有 ...
- (五)surging 微服务框架使用系列之缓存-reids
1.服务跟客户端初始化的时候需要添加缓存配置 var host = new ServiceHostBuilder() .RegisterServices(builder => { builder ...
- 【大数据安全】Apache Kylin 安全配置(Kerberos)
1. 概述 本文首先会简单介绍Kylin的安装配置,然后介绍启用Kerberos的CDH集群中如何部署及使用Kylin. Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spa ...
- [转]Blue Prism VBO Cheat Sheet
本文转自:https://www.cheatography.com/ethanium/cheat-sheets/blue-prism-vbo/ Blue Prism MAPIEx Configure ...
- 学JAVA第十七天,接口与抽象方法
JAVA接口可以让代码更加有合理的规范性,就想一个项目小组,组长要负责把成员的代码整合,但是每个成员写的方式都是按照他们自己的想法来写的, 所以,整合起来就非常麻烦. 但是,如果我们的组长制作了一个接 ...
- Head First设计模式读书笔记
阅读指南: 精读一章内容,手工输入一章代码(注1),与书中描述的思想进行印证,实在搞不懂就放过吧.设计模式绝对不会一次就看懂的. 这本书对于理解设计模式很有帮助,就是例子不太符合中国人的思维模式,但是 ...
- java自定义连接池
1.java自定义连接池 1.1连接池的概念: 实际开发中"获取连接"或“释放资源”是非常消耗系统资源的两个过程,为了姐姐此类性能问题,通常情况我们采用连接池技术来贡献连接Conn ...
- 处理范例代码Webapi中的Mongodb的Bson中ObjectId反序列化异常
微软代码范例中的一个Bug 处理Mongodb的Bson中ObjectId反序列化异常 https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/f ...