MySQL从入门到精通(一)

MySQL从入门到精通之基础

1.1. MySQL 5.7安装步骤

1、下载rpm包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

# 如果提示需要账号密码,就用这个方式下载
# wget --http-user=youremail@email.com --http-passwd=yourpassword https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

2、查看系统是否自带mariadb
rpm -qa | grep mariadb

3、将查出的mariadb进行卸载
rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64

4、把刚刚下载的mysql tar解压
tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar

5、在解压目录安装如下4个mysql核心包
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

6、安装到server时缺少依赖报错
error: Failed dependencies:
        libaio.so.1()(64bit) is needed by mysql-community-server-5.7.28-1.el7.x86_64
        libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-5.7.28-1.el7.x86_64
        libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-5.7.28-1.el7.x86_64

7、安装缺少的依赖
yum -y install libaio

8、再次安装server
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

9、启动mysql服务
service mysqld start

10、查看v5.7版本的默认登录密码
	1、数据库目录
       /var/lib/mysql/
	2、配置文件
       /usr/share/mysql(mysql.server命令及配置文件)mysql5.5之后的默认安装路径,mysql5.5之前的是/usr/local/mysql
	3、相关命令
       /usr/bin(mysqladmin mysqldump等命令)
	4、启动脚本
       /etc/rc.d/init.d/(启动脚本文件mysql的目录)
grep password /var/log/mysqld.log

11、登录到mysql命令行,修改默认密码
mysql -rroot -p (input the default password enqueried from the last command)
alter user 'root'@'localhost' identified by 'michael2020'

12、会告诉你密码不符合规范,可以修改校验等级和长度后再次执行上面的语句(choose to execute based on the complexity of your password)
set global validate_password_policy=LOW;
set global validate_password_length=6; 

13、账户授权
use mysql;
select host,user from user;
#create a certain user to visit the database
# the user name : michael ; the password : michael2020 ; with any IP
CREATE USER 'michael'@'%' IDENTIFIED BY 'michael2020';
# 所有ip通过michael都可以访问数据库
grant all privileges on *.* to michael@'%' identified by 'michael2020';
# 只有内网网段ip才可访问,并授权账号可以授权其他人
# grant all privileges on *.* to michael@'192.168.%' identified by 'michael2020' with grant option;
flush privileges;

1.2. 学习的基础数据导入

create database michael_admin;
use michael_admin
DROP TABLE IF EXISTS `ad_role`;

CREATE TABLE `ad_role` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `role_name` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `ad_role` (`id`, `role_name`)
VALUES
	(1,'vip1'),
	(2,'vip2'),
	(3,'vip3');
	
DROP TABLE IF EXISTS `ad_user`;

CREATE TABLE `ad_user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL DEFAULT '',
  `password` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `ad_user` (`id`, `username`, `password`)
VALUES
	(1,'arry','123456'),
	(2,'gavin','1234567'),
	(3,'coding','123456');
	
DROP TABLE IF EXISTS `ad_user_role`;

CREATE TABLE `ad_user_role` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `role_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `ad_user_role` (`id`, `user_id`, `role_id`)
VALUES
	(1,1,1),
	(2,1,2),
	(3,1,3),
	(4,2,2),
	(5,3,3),
	(7,2,3);

3. 基础知识回顾

  • where条件解析顺序

    • MySQL:自左向右
    • Oralce:自右向左
  • SQL执行顺序

    • FROM
    • ON
    • JOIN
    • WHERE
    • GROUP BY
    • HAVING
    • SELECT
    • DISTINCT
    • ORDER BY
    • LIMIT
  • 全文索引

    • 只有在MyISAM的引擎才可以用,只能使用在CHAR、VARCHAR、TEXT字段使用使用
  • MySQL中SQL执行的过程-MySQL 5.7

    • 连接器
    • 查询缓存
    • 分析器(词法(关键字check)、语法(sql语句语法check))
    • 优化器(索引执行顺序和多表查询的时候优先顺序)
    • 执行器(执行实际的sql)

在这里插入图片描述
sql的两种方式方式

  • statement

    • 不能防sql注入
  • preparestatement

    • 可以防止sql注入
    • 多次执行的时候,sql语句不会执行分析器部分流程

ps:
具体的执行顺序可以参考博文:https://blog.csdn.net/dong_007_007/article/details/78388891

# 声明使用查询缓存,但是不建议这样使用
select SQL_CACHE * from ad_user;
# 注意:MySQL 8.0 把查询缓存这个模块去掉了
  • MySQL数据引擎
# MySQL支持的数据引擎
mysql> show engines;

在这里插入图片描述

存储引擎说明
MyISAM高速查询引擎,不支持事物
InnoDBv5.5以后是MySQL的默认引擎
Archive数据压缩存储引擎,便于数据归档
Memory内存存储引擎

对比MyISAM和InnoDB

对比InnoDBMyISAM
存储文件的形式.frm表定义文件,.ibd存放数据和索引的.frm表定义文件,.myd数据文件,.myi索引文件
表、页、行
事务支持不支持
CRUD可同时读、写只可同时读,不可同时写
# 查询表的引擎
show table status like '%ad_user%';

MySQL数据库数据存储的位置

cd /var/lib/mysql
# 这个目录下存放的是数据库对应的各个数据库的数据文件

在这里插入图片描述

MySQL配置文件默认路径(修改数据的访问等设置)

vi /etc/my.cnf

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值