MySQL的基本使用
软件的安装与配置
安装服务端:sudo apt-get install mysql-server
安装命令行客户端:sudo apt-get install mysql-client
配置服务端(允许root用户远程登陆mysql,不推荐,推荐使用ssh远程登陆服务器,登陆mysql) :
启动服务端:sudo service mysql restart[start stop]
查看运行状态:ps -aux|grep mysql
数据库的操作
创建
创建数据库 :create database jing_dong charset=utf8;
查看所有数据库:show database();
选择数据库:use jing_dong;
查看当前数据库:select database();
查看当前所有数据表:show tables;
创建数据表:create table goods(
);
查看数据表创建修改等信息:show create table goods;
查看数据表表头:desc goods;
查看数据表的所有内容:select * from goods;
增
添加数据库:create database jing_dong charset=utf8;
添加数据表:create table goods(
);
添加字段:选择数据库后,因为不知使用哪个数据表,因此需要有 table
添加记录:insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default);
删
删除数据库:drop database jing_dong;
删除数据表:drop table goods;
删除字段:alter table goods drop id2;
删除记录:
改
修改数据库:导出库、导入库修改
修改数据表:alter table tblname rename[to|as] newtbl_name
修改字段:
修改记录:update students set gender=0,hometown='北京' where id=5;
查
查看其他:
查看数据库:
查看数据表:
查看字段:desc goods;
查看记录:select * from goods;
数据查询
基本查询
查询所有字段:select * from students
查询指定字段:
使用 as 给字段起别名:select id as 序号,name as 名字 from students
可以通过 as 给表起别名:select s.id,s.name from students as s
消除重复行:
条件查询
比较运算符:等于: =、大于: >、大于等于: >=、小于:
逻辑运算符:and、or、not、条件1 and 条件2、条件1 or 条件2、not 条件
模糊查询:like:%表示任意多个任意字符、_表示一个任意字符, rlike(正则表达式)
范围查询:in、not in、between and、not between and
空判断:is null、is not null
排序查询
聚合函数查询
分组查询
分页查询
连接查询
自关联
子查询
表的拆分以及增加外键
数据库的设计
范式
第一范式:每个字段只有一个信息内容,即保持列的原子性。
第二范式:满足第一范式,主键涵盖所有的字段,不能有的字段不在主键的涵盖范围之内,或者需要多个字段才能描述主键,例如C依赖A也依赖B。
第三范式:满足第二范式,主键与各个字段之间是直接依赖关系,不能需要传递依赖,例如C依赖B,B依赖A。
E-R模型
一对一模型:即两个表之间根据主键相互对应,实体A对实体B为一对一,则表A或表B中创建一个字段,储存另一个表的主键。例如班级学生姓名表与学生基本信息表。
一对多模型:A表中的一条记录对应B中的多条记录,那么在B中创建一个字段储存A的主键。例如班级表与每个班级学生姓名表。
多对多模型:实体A对实体B为多对多时,新建一张表C,分别储存A、B的主键。例如班级学生表与选修课程学生表外加学生与选修课程对应关系表。
其他
表必须有主键,例如自增主键、不存大文件(存图片或者视频的地址)、尽量少用外键(尤其庞大的数据库,使之更加庞大、会极大的降低表更新的效率 )、少用索引(建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件)
SQL注入
备注
备份与恢复
视图
定义
被抽象出的一张虚拟的表,通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在 创建视图的时候,主要的工作就落在创建这条SQL查询语句上。视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变)。使用频繁的字段,主键默认为索引,主要用于大数据类型的查询,储存在硬盘中、原表数据变化了,视图也会跟着更新。
意义
方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性、提高了重用性,就像一个函数、对数据库重构,却不影响程序的运行、提高了安全性能,可以对不同的用户、让数据更加清晰
用法
事务
事务四大特性(简称ACID)
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)
事务命令
查看表的创建语句,可以看到engine=innodb
开启事务:
开启事务后执行修改命令,变更会维护到本地缓存中,而不维护到物理表中
begin;或者start transaction;
提交事务
将缓存中的数据变更维护到物理表中
commit;
回滚事务
放弃缓存中变更的数据
rollback;
注意
修改数据的命令会自动的触发事务,包括insert、update、delete
而在SQL语句中有手动开启事务的原因是:可以进行多次数据的修改,如果成功一起成功,否则一起会滚到之前的数据
python与mysql的结合使用
索引
定义
目的
原理
使用
注意:
多账户
MySQL账户体系
账户的操作主要包括创建账户、删除账户、修改密码、授权权限等。
注意
用法
远程登陆(危险)
主从
主从同步的定义
主从同步的作用
数据安全
读写分离
负载均衡
主从同步的机制
配置主从同步的基本步骤
在主服务器上,必须开启二进制日志机制和配置一个独立的ID
在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号
在开始复制进程前,在主服务器上记录二进制文件的位置信息
如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)
配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置
主服务器数据备份备份
主服务器配置文件
设置log_bin和server-id
重启mysql服务
创建用于从服务器同步数据使用的帐号
获取主服务器的二进制日志信息
配置从服务器slave(mysql版本一致)
windows安装mysql(与Ubuntu版本一致)
1、彻底删除已存在的mysql
2、解压文件,配置my.ini文件
3、安装MySQL,并初始化、设置mysql环境变量
以管理员的身份切换到安装文件的bin目录下
环境变量名 mysql
4、在my.ini中添加 skip-grant-tables 后重启mysql(在服务里面找到MySQL),使用任何密码均可登陆。
5、以随意密码登陆,设置新的密码,刷新
从服务器数据还原
将备份的master_db.sql文件放到MySQL文件夹下的bin目录下
以管理员身份运行cmd
mysql -uroot -p
配置MySQL文件
widows:
linux:
重启从mysql服务
在打开的服务管理中找到MySQL5.7,并重启该服务
连接主mysql
进入windows的mysql,设置连接到master主服务器
mysql> change master to masterhost='192.168.18.42', masteruser='slave', masterpassword='slave',masterlogfile='mysql-bin.000001', masterlog_pos=154;
开启同步,查看同步状态
测试主从同步
领取专属 10元无门槛券
私享最新 技术干货