Mysql高级-安装

Linux 安装Mysql

官方下载地址
这里使用5.5.48的版本,注意自己是32位还是64位
在这里插入图片描述

查看有没有rpm安装过mariadb :

 rpm -qa | grep mariadb

如果有 移除mariadb :

 rpm -e --nodeps mariadb-*

同理,再看看有没有安装mysql 如果有先卸载
在这里插入图片描述
然后把残留的文件夹删除,不删除会安装失败的
在这里插入图片描述

rpm -ivh MySQL-server-5.5.48-1.linux2.6.x86_64.rpm

如果出现以下错误
在这里插入图片描述

原因:这是由于yum安装了旧版本的GPG keys造成的
解决办法:
命令后面跟上 --force --nodeps
如果还出现错误,那说明还是没有卸载干净

yum remove perl-DBD-MySQL
yum remove mysql*
yum remove mysql*

出现此界面为server端安装成功
在这里插入图片描述
安装client端

rpm -ivh MySQL-client-5.5.48-1.linux2.6.x86_64.rpm

在这里插入图片描述
可以查询版本即为安装成功
在这里插入图片描述
启动mysql
在这里插入图片描述

 service mysql start / stop /status 启动 停止 状态
  • mysql 给root 设置密码
 /usr/bin/mysqladmin -u root password 123456
  • 设置msyql 开机自启
chkconfig mysql on
  • 目录结构
    在这里插入图片描述
  • 修改配置文件位置
    在这里插入图片描述

修改/etc/my.cnf文件,在其添加:

#配置字符編碼
default-character-set=utf8


#配置字符編碼
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci

在这里插入图片描述

default-character-set=utf8

在这里插入图片描述

mysql 配置文件配置

如何配置 :
Windows : my.ini 文件
Linux : /etc/my.cnf文件

数据库存在地址:
windows: 安装目录下的data目录
Linux:var/lib/mysql

frm 文件: 存放表结构
myd 文件 存放表数据
myi文件 存放表索引

存储引擎

查看你的mysql现在已提供什么存储引擎

show engines;

在这里插入图片描述
查看当前默认存储引擎

show variables like '%engine%';

在这里插入图片描述
两种常用存储引擎的对比

对比项MyISAMInnoDB
主外键不支持支持
事务不支持支持
行表锁表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作行锁,操作时只锁定某一行,不对其它行有影响,适合高并发的操作
缓存只缓存索引,不缓存真实数据不仅缓存索引,还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响
表空间
关注点性能事务

sql执行加载顺序

人为写的顺序:

select distinct
	<select_list>
from 
	<left_table> <join_type>
join <right_tabel> on <join_condition>
where
	<where_condition>
group by 
	<group_by_list>
having
	<having_condition>
order by
	<order_by_conditon>
limit <limit number>

机读:

from <left_table> 
on <join_condition>
<join_table> join <right_table>
where <where_condition>
group by <group_by_list>
having <gaving_condition>
select 
distinct <select_list>
order by <order_by_condition>
limit <limit_number>

SQL JOINS

建表sql:


CREATE DATABASE /*!32312 IF NOT EXISTS*/`jointest` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `jointest`;

DROP TABLE IF EXISTS `t_dept`;
CREATE TABLE `t_dept` (
  `dept_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门id',
  `dept_name` varchar(20) NOT NULL COMMENT '部门名称',
  PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

insert  into `t_dept`(`dept_id`,`dept_name`) values (1,'IT部门'),(2,'HR部门'),(3,'财务部门'),(4,'后勤部门'),(5,'保安部门');

DROP TABLE IF EXISTS `t_emp`;

CREATE TABLE `t_emp` (
  `emp_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '员工id',
  `emp_name` varchar(20) NOT NULL COMMENT '员工姓名',
  `dept_id` bigint(20) DEFAULT NULL COMMENT '员工所属部门',
  PRIMARY KEY (`emp_id`),
  KEY `fk_emp_dept` (`dept_id`),
  CONSTRAINT `fk_emp_dept` FOREIGN KEY (`dept_id`) REFERENCES `t_dept` (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

insert  into `t_emp`(`emp_id`,`emp_name`,`dept_id`) values (1,'z3',1),(2,'l4',2),(3,'w5',1),(4,'z6',4),(5,'d7',NULL);


在这里插入图片描述

inner join内连接: 交集,取AB交集部分
在这里插入图片描述

select * from t_emp inner join t_dept on t_emp.dept_id = t_dept.dept_id;

在这里插入图片描述

left join 左连接,A,B的共有 + A的独有
在这里插入图片描述

select * from t_emp left join t_dept on t_emp.dept_id = t_dept.dept_id;

在这里插入图片描述

right join 右连接,A,B的共有 + B的独有
在这里插入图片描述

select * from t_emp right join t_dept on t_emp.dept_id = t_dept.dept_id;

在这里插入图片描述

A 的独有
在这里插入图片描述

select * from t_emp left join t_dept on t_emp.dept_id = t_dept.dept_id where t_dept.dept_id is null;

在这里插入图片描述

B的独有
在这里插入图片描述

select * from t_emp right join t_dept on t_emp.dept_id = t_dept.dept_id where t_emp.emp_id is null;

在这里插入图片描述

全有:
在这里插入图片描述
注:mysql 不支持全外连接,所以我们采用:
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值