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.查看数据库的存储引擎

  1. # 查看数据库的默认存储引擎
  2. mysql> show variables like "default_storage_engine";
  3. +------------------------+--------+
  4. | Variable_name | Value |
  5. +------------------------+--------+
  6. | default_storage_engine | InnoDB |
  7. +------------------------+--------+
  8. 1 row in set, 1 warning (0.00 sec)
  9.  
  10. # 查看数据库支持的存储引擎
  11. mysql> show engines;
  12. +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
  13. | Engine | Support | Comment | Transactions | XA | Savepoints |
  14. +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
  15. | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
  16. | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
  17. | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
  18. | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
  19. | MyISAM | YES | MyISAM storage engine | NO | NO | NO |
  20. | CSV | YES | CSV storage engine | NO | NO | NO |
  21. | ARCHIVE | YES | Archive storage engine | NO | NO | NO |
  22. | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
  23. | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
  24. +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
  25. 9 rows in set (0.00 sec)

4.指定存储引擎

4.1在见表时指定存储引擎

  1. # 创建存储引擎为InnoDB的表
  2. mysql> create table indb (id int, name char(12)) engine=innodb;
  3. Query OK, 0 rows affected (0.04 sec)
  4. # 创建存储引擎为MyISAM的表
  5. mysql> create table myam (id int, name char(12)) engine=myisam;
  6. Query OK, 0 rows affected (0.01 sec)
  7. # 修改表的存储引擎
  8. mysql> alter table indb engine=myisam;
  9. Query OK, 0 rows affected (0.04 sec)
  10. Records: 0 Duplicates: 0 Warnings: 0

4.2在配置文件中指定存储引擎

  1. 查看my.ini配置文件
  2. # 创建新表时将使用的默认存储引擎
  3. 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个字节

- - 多选:兴趣爱好

常见数据类型说明

  1. 字符串,描述的都是字符
  2. # char 定长字段 255 相对浪费空间 存取的速度比varchar要快
  3. # char(10)
  4. # 'hellohello1' --> 'hellohello'
  5. # 'hello '
  6. # varchar 变长字段 65535 相对节省空间 存取的速度比varchar要慢
  7. # varchar(200)
  8. # 'hellohello1' --> '10hellohello'
  9. # 'hello' --> '5hello'
  10. # 常见的场景
  11. # 手机号 char(11)
  12. # 身份证号 char(18)
  13. # 用户名 char(14)
  14. # 密码 char(12)
  15. # 评论 varchar
  16. 时间
  17. # datetime
  18. 集合和枚举
  19. # hobby set('抽烟','喝酒','烫头')
  20. # gender enum('男','女')

6.MySQL的约束条件

  1. not null :非空约束,指定某列不能为空;
  2.  
  3. default:默认值约束,指定某列的默认值
  4.  
  5. unique:唯一约束,指定某列或者几列组合不能重复;
  6.  
  7. auto_increment:自增约束,指定某int、非空列自动增加
  8.  
  9. primary key:主键,指定该列的值可以唯一地标识该列记录
  10.  
  11. foreign key:外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性

not null

  1. mysql> create table not_null (id int not null);
  2. Query OK, 0 rows affected (0.69 sec)
  3.  
  4. mysql> desc not_null;
  5. +-------+---------+------+-----+---------+-------+
  6. | Field | Type | Null | Key | Default | Extra |
  7. +-------+---------+------+-----+---------+-------+
  8. | id | int(11) | NO | | NULL | |
  9. +-------+---------+------+-----+---------+-------+
  10. 1 row in set (0.01 sec)
  11.  
  12. mysql> insert into not_null values (null);
  13. ERROR 1048 (23000): Column 'id' cannot be null
  14. mysql> insert into not_null values(1);
  15. Query OK, 1 row affected (0.40 sec)
  16.  
  17. mysql> desc not_null;
  18. +-------+---------+------+-----+---------+-------+
  19. | Field | Type | Null | Key | Default | Extra |
  20. +-------+---------+------+-----+---------+-------+
  21. | id | int(11) | NO | | NULL | |
  22. +-------+---------+------+-----+---------+-------+
  23. 1 row in set (0.00 sec)
  24.  
  25. mysql> select * from not_null;
  26. +----+
  27. | id |
  28. +----+
  29. | 1 |
  30. +----+
  31. 1 row in set (0.00 sec)

default

  1. mysql> create table name_sex (id int, name char(12), sex char(10) default 'male');
  2. Query OK, 0 rows affected (0.52 sec)
  3.  
  4. mysql> desc name_sex;
  5. +-------+----------+------+-----+---------+-------+
  6. | Field | Type | Null | Key | Default | Extra |
  7. +-------+----------+------+-----+---------+-------+
  8. | id | int(11) | YES | | NULL | |
  9. | name | char(12) | YES | | NULL | |
  10. | sex | char(10) | YES | | male | |
  11. +-------+----------+------+-----+---------+-------+
  12. 3 rows in set (0.00 sec)
  13.  
  14. mysql> insert into name_sex (name) values ('zhangsan');
  15. Query OK, 1 row affected (0.44 sec)
  16.  
  17. mysql> select * from name_sex;
  18. +------+----------+------+
  19. | id | name | sex |
  20. +------+----------+------+
  21. | NULL | zhangsan | male |
  22. +------+----------+------+
  23. 1 row in set (0.00 sec)
  24.  
  25. mysql> insert into name_sex (id, name) values (2, 'lisi');
  26. Query OK, 1 row affected (0.04 sec)
  27.  
  28. mysql> select * from name_sex;
  29. +------+----------+------+
  30. | id | name | sex |
  31. +------+----------+------+
  32. | NULL | zhangsan | male |
  33. | 2 | lisi | male |
  34. +------+----------+------+
  35. 2 rows in set (0.00 sec)
  36.  
  37. mysql> insert into name_sex (name, sex) values ('wangwu', 'female');
  38. Query OK, 1 row affected (0.04 sec)
  39.  
  40. mysql> select * from name_sex;
  41. +------+----------+--------+
  42. | id | name | sex |
  43. +------+----------+--------+
  44. | NULL | zhangsan | male |
  45. | 2 | lisi | male |
  46. | NULL | wangwu | female |
  47. +------+----------+--------+
  48. 3 rows in set (0.00 sec)

  

02-MySQL基础的更多相关文章

  1. 02 mysql 基础二 (进阶)

    mysql 基础二 阶段一 表约束 1.not null 非空约束 例子: create table tb1( id int, name varchar(20) not null ); 注意 空字符不 ...

  2. 数据库02 /MySQL基础数据类型、完整性约束、sql_mode模式

    2.MySQL基础数据类型.完整性约束.sql_mode模式 目录 2.MySQL基础数据类型.完整性约束.sql_mode模式 1. MySQL常用数据类型 MySQL常用数据类型预览 1. 1 数 ...

  3. 02 . Mysql基础操作及增删改查

    SQL简介 SQL(Structured Query Language 即结构化查询语言) SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,SQL语言由IBM开发. SQL语句四大 ...

  4. mysql基础之基本数据类型

    原文:mysql基础之基本数据类型 列类型学习 mysql三大列类型 整型 Tinyint/ smallint/ mediumint/int/ bigint(M) unsigned zerofill ...

  5. 服务管理之mysql基础

    目录 mysql基础 1. 关系型数据库介绍 1.1 数据结构模型 1.2 RDBMS专业名词 2. mysql安装与配置 2.1 mysql安装 2.2 mysql配置 3. mysql的程序组成 ...

  6. Linux服务-mysql基础篇

    目录 1. 关系型数据库介绍 1.1 数据结构模型 1.2 RDBMS专业名词 1.3 关系型数据库的常见组件 1.4 SQL语句 2. mysql安装与配置 2.1 mysql安装 2.2 mysq ...

  7. 01 mysql 基础一 (进阶)

    mysql基础一 1.认识mysql与创建用户 01 Mysql简介 Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQLAB公司开发,目前属于Oracle公司. MySQL是一种关联数据库 ...

  8. MySQL基础教程——创建数据库并插入数据

    本节将介绍 MySQL 新建数据库,新建表,插入数据以及基本数据类型的相关知识.本节实验将创建一个名为 mysql_shiyan 的数据库,其中有两张表 employee和 department. 1 ...

  9. MySQL基础(用的贼鸡儿多)

    整理有点乱,业余也玩玩系统,经常碰见这些玩意,有点烦,老是记不住 MySQL 基础语法 一.连接 MYSQL格式: mysql -h 主机地址 -u 用户名 -p 用户密码. 1.连接到本机上的 MY ...

  10. MySQL基础day03 存储引擎和外键MySQL 5.6

    MySQL基础day03_存储引擎和外键-MySQL 5.6 外键的条件: 1,表的存储引擎为innodb存储引擎 2,表中外键字段的类型要与参考表的字段类型一致 3,外键字段要是索引类型中的一种 M ...

随机推荐

  1. Python爬虫11-XML与XPath概述及lxml库的应用

    GitHub代码练习地址:用lxml解析HTML,文件读取,etree和XPath的配合使用:https://github.com/Neo-ML/PythonPractice/blob/master/ ...

  2. PLC

    https://www.cnblogs.com/dathlin/p/7469679.html C#读写三菱PLC和西门子PLC数据 使用TCP/IP 协议https://blog.csdn.net/x ...

  3. 【hashMap】详谈

    官方文档地说明 几个关键的信息:基于Map接口实现.允许null键/值.非同步.不保证有序(比如插入的顺序).也不保证序不随时间变化. 一.概述 HashMap 是一个散列表,它存储的内容是键值对(k ...

  4. java~接口的共享实体使用Map后更灵活

    微服务时代的实体设计 在一个微服务时代,一个实体参数或者返回值,它可能是多服务之前共享的,而这个重复的实体你需要拷贝多份,这是违背DRP原则的,所以我们需要找一种更友好的方式来代替它,它就是Map,我 ...

  5. spring boot 集成 zookeeper 搭建微服务架构

    PRC原理 RPC 远程过程调用(Remote Procedure Call) 一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样,通过网络传输去访问远程系统资源,R ...

  6. Python实战171202元组访问

    学生信息系统中数据为固定格式: (名字,年龄,性别,邮箱地址,......) 学生数量很大为了减小存储开销,对每个学生信息用元组表示: ('jim',18,'male','jim8765@gmail. ...

  7. Tomcat 对 HTTP 协议的实现(上)

    协议,直白的说就是存在一堆字节,按照协议指定的规则解析就能得出这堆字节的意义.HTTP 解析分为两个部分:解析请求头和请求体. 请求头解析的难点在于它没有固定长度的头部,也不像其他协议那样提供数据包长 ...

  8. 【转载】java 中 String s = new String("abc") 创建了几个对象?!

    原文链接点这里,感谢博主分享 答案是两个,现在我们具体的说一下: String s = new String("abc"); 首先我们要明白两个概念,引用变量和对象,对象一般通过n ...

  9. Android SDK 开发——发布使用踩坑之路

    前言 在 Android 开发过程中,有些功能是通用的,或者是多个业务方都需要使用的. 为了统一功能逻辑及避免重复开发,因此将该功能开发成一个 SDK 是相当有必要的. 背景 刚好最近自己遇到了类似需 ...

  10. 使用JsonProperty Attribute修改返回json

    使用JsonProperty Attribute修改返回 json 值的name 本例使用JsonPropertyAttribute在序列化为JSON时更改属性的名称. public class Vi ...