MYSQL数据库

mysql数据库jar方式安装

>>通过官网下载jar

>>解压文件

>>bin同级目录文件

1 新建data文件夹

2 新建 my.ini文件夹(是一个ini文件,名字可自定义)

3 my.ini文件新增配置(包括但不限于如下内容)

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....


# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 

#安装目录 
 basedir = D:\\mysql\\mysql-5.7.17-winx64\\mysql-5.7.17-winx64
# 修改成自己的路径
 
# 数据库存放目录
 datadir =D:\\mysql\\mysql-5.7.17-winx64\\mysql-5.7.17-winx64\\data
# 修改成自己的路径
 
#端口
 port = 3306
 
 # 允许最大连接数
max_connections=200

# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10

# 服务端使用的字符集默认为UTF8
character-set-server=utf8

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password

4 通过管理员身份运行cmd,在bin目录下,执行如下语句

mysqld --initialize --console

SQLREPOTING SERVICES 目录数据库文件存在_sql

5  安装服务

mysqld --install

6 启动数据库

net start mysql

7 在第4步中会为root用户生成一个密码,如果需要修改

7.1 登录mysql数据库

mysql -u root -p

输入第4步生成的密码

SQLREPOTING SERVICES 目录数据库文件存在_big data_02

 7.2 执行如下指令

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

SQLREPOTING SERVICES 目录数据库文件存在_sql_03

 

共享-lock in share mode

排它-for update

Mysql关键字执行顺序:

from--where--group by--having--select--order by

[

from后面的表关联,是自右向左解析的

where条件的解析顺序是自下而上的

]

[

from-on-join-where-group by-having-select-distinct-union-order by

]

Mysql中where执行顺序

where执行顺序是从左往右执行的,在数据量小的时候不用考虑,但数据量多的时候要考虑条件的先后顺序,此时应遵守一个原则:排除越多的条件放在第一个。

索引:

索引:

>目的:为了提高查询,让查询更快

>实现:一般实现了B-Tree或B+查询算法实现

>分类:

主键索引:唯一且不能为空

普通索引:

唯一索引:不允许有重复

全文索引

>创建

唯一索引:

CREATE UNIQUE INDEX 索引名称

ON 表名称 (列名称)

创建简单的索引

CREATE INDEX 索引名称

ON 表名称 (列名称)

删除索引:
drop

索引并非越多越好的原因

1增加了数据库的存储空间

2删除和插入也需要时间维护索引

任何标准表最多可以创建16个索引

设置了索引但是无效的场景:

>以%开头的like语句

>or语句前后没有同时使用索引

>数据类型出现隐式转换

原则:

最左前缀原则;

Mysql性能优化

  1. 当只要一行数据的时候limit 1

2.选择正确的数据库引擎, MyISAM 适⽤于一些大量查询的应用, InnoDB的写操作 ⽐较优秀

3.⽤not exists代替not in

4.充分使⽤用索引, B-TREE 仍然是高效的索引之中的一

5.⽤ NOSQL 的⽅式使用 MYSQL

行转列

mysql中行转列是通过group_concat()函数来实现的。默认是使用逗号隔开

sql执行计划

MySql提供了EXPLAIN语法用来进行查询分析,在SQL语句前加一个"EXPLAIN"

table | 

type | const、eq_reg、ref、range、indexhe和ALL

possible_keys | 显示可能应用在这张表中的索引

key | 实际使用的索引。如果为NULL,则没有使用索引

key_len | 

ref | 

rows | 

Extra

分库分表的中间件

Cobar/MyCAT/TDDL/DRDS/Atlas/DBProxy/sharding-JDBC/

union与union all的区别

Union:结果-不重复

Union all:结果-重复

Mysql存储引擎

1>MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快全表锁

2>innodb该存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全/行级锁

3>Memory存储引擎使用存在于内存中的内容来创建表/全表锁

4>Merge存储引擎是一组MyISAM表的组合

Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB

游标:

数据结构

Myisam-hash表;

Innodb-b树/b+树

数据备份:

mysqldump