[原创]MySQL数据库查询和LVM备份还原学习笔记记录
一、查询语句类型:
1)简单查询
2)多表查询
3)子查询
4)联合查询
1)简单查询:
SELECT * FROM tb_name;
SELECT field1,field2 FROM tb_name;投影
SELECT [DISTINCT] * FROM tb_name WHERE qualification;选择
FROM子句:要查询的关系
表、多个表、其他select语句
WHERE子句:布尔关系表达式
AND,OR,NOT,BETWEEN...AND...,LIKE ''[%:任意长度任意字符;_:任意单个字符],RLIKE,IN,IS NULL,IS NOT NULL
ORDER BY field_name {ASC|DESC}
AS 字段别名
LIMIT [offset,]Count offset偏移量,Count取几个
聚合:
SUM(),MIN(),MAX(),AVG(),COUNT()
GROUP BY分组:
HAVING:过滤[qualification]
SELECT AVG(Age) FROM students GROUP BY Gender;
ELECT COUNT(CID1) AS Persons,CID1 FROM students GROUP BY CID1;
SELECT COUNT(CID1) AS Persons,CID1 FROM students GROUP BY CID1 HAVING Persons>=2;
SQL语句执行的顺序:
start->from->where->group by->having->order by->select fieldN->LIMIT->end
2)多表查询:
连接:
交叉连接:笛卡尔积
select * from students,courses;
自然连接:内连接,外链接:左外连接:... LEFT JOIN ... ON ...,右外连接:... RIGHT JOIN ... ON ...,自连接
select * from students,courses where students.cid1 = courses.cid;
select Name,Cname from students,courses where students.cid1 = courses.cid;
select s.Name,c.Cname from students AS s,courses AS c where s.cid1 = c.cid;
SELECT s.Name,c.Cname FROM students AS s LEFT JOIN courses AS c ON s.CID1=c.CID1;
SELECT s.Name,c.Cname FROM students AS s RIGHT JOIN courses AS c ON s.CID1=c.CID1;
3)子查询:
比较操作中使用子查询:子查询只能返回单个值
IN():使用子查询
在FROM中使用子查询
select name from students where Age > (select AVG(Age) from students);
select name from students where Age IN (select Age from tutors);
select Name,Age from (SELECT Name,Age FROM students) AS t where t.Age >= 20;
4)联合查询:
UNION:
(select Nmae,Age FROM students) UNION (select Tname,Age from tutors);
二、备份和还原
备份:
select * into OUTFILE '/path/beifen.txt' from tb_name [where clause];
恢复:
LOAD DATA INFILE '/path/beifen.txt' INTO TABLE tb_name;
LVM快照备份和还原:
前提:
1、数据文件要在逻辑卷上;
2、此逻辑卷所在卷组必须有足够空间使用快照卷;
3、数据文件和事务日志要在同一个逻辑卷上;
步骤:
1、打开会话,施加读锁,锁定所有表:
mysql> FLUSH TABLES WITH READ LOCK;
mysql> FLUSH LOGS;
2、通过另一个终端,保存二进制日志文件及相关位置信息:
$mysql -uroot -p -e "SHOW MASTER STATUS\G" > /path/master.info
3、创建快照卷:
#lvcreate -L [size] -s -p r -n LV_NAME /path/source_lv
4、释放锁:
mysql> UNLOCK TABLES;
5、挂载快照卷,备份:
#mount LV_NAME /mnt -o ro
#cp -a ./* /backup/
#rm -f /backup/mysql-bin.*
6、删除快照卷:
#lvremove --force LV_NAME
7、增量备份二进制日志[从master.info文件的位置开始备份,如果还有其他滚动的二进制文件单独备份即可]:
#mysqlbinlog --start-post=107 mysql-bin.000003 mysql-bin.000004> /backup/incremental.sql
8、还原数据:
#cp -a /bakcup/* /mysql/data/
#service mysqld start
mysql> set sql_log_bin=0;
mysql> source /backup/incremental.sql;
mysql> set sql_log_bin=1;
mysql> SHOW MASTER STATUS\G;
扩展:
MySQL创建表的三种方式:
1)直接手动创建:
mysql> create table tb_name(feild1-N);
2)基于其他表创建新表,这种方式创建的表不会把原表的主键,约束,触发器等复制过来,需要手动在追加。
mysql> create table test_new as select * from test where 1=2; //where 1=2只有表结构没有数据,where 1=1包括表结构和表数据一起复制了
3)基于原表创建的新表,这种方式使用like关键字会将原表的结构都复制过来,包括主键,约束,触发器等。
mysql> create table test like tb_name;
[原创]MySQL数据库查询和LVM备份还原学习笔记记录的更多相关文章
- MySQL数据库应用 从入门到精通 学习笔记
以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库查看所有数据库: SHOW DATABASES创建数据库: CREATE DA ...
- MySQL/MariaDB数据库的mysqldump工具备份还原实战
MySQL/MariaDB数据库的mysqldump工具备份还原实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.mysqldump概述 1>.逻辑备份工具 mysq ...
- SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原
原文:SqlServer批量压缩数据库日志-多数据库批量作业,批量备份还原 --作业定时压缩脚本 多库批量操作 DECLARE @DatabaseName NVARCHAR(50) DECLARE @ ...
- mysql数据库查询pdo的用法
最早的php对mysql数据库查询是mysql和mysqli方法,后来php的新版本进一步封住了该方法,于是又pdo,抛开php框架,使用pdo查询数据,使用也是相当简便 <?php ini_s ...
- 提高MySQL数据库查询效率的几个技巧(转载)
[size=5][color=Red]提高MySQL数据库查询效率的几个技巧(转)[/color][/size] MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.我 ...
- centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...
- 将从mysql数据库查询的信息,遍历到List<>以及一些随机数的生成
将从mysql数据库查询的信息,遍历到List<>以及一些随机数的生成. 代码比较乱,但是方法还是对的,大家又需要的选择看,希望对博友 有帮助,欢迎留言分享! public class s ...
- MySQL 数据库查询数据,过滤重复数据保留一条数据---(MySQL中的row_number变相实现方法)
转自: http://www.maomao365.com/?p=10564 摘要: 下文讲述MySQL数据库查询重复数据时,只保留一条数据的方法 实现思路: 在MySQL数据库中没有row_numbe ...
- Mysql多实例安装+主从复制+读写分离 -学习笔记
Mysql多实例安装+主从复制+读写分离 -学习笔记 .embody{ padding:10px 10px 10px; margin:0 -20px; border-bottom:solid 1px ...
随机推荐
- 零元学Expression Blend 4 Chapter 22 以实作案例学习Frame及HyperlinkButton
原文:零元学Expression Blend 4 Chapter 22 以实作案例学习Frame及HyperlinkButton 本章将教大家如何以实作善用Blend4的内建功能-「Frame」以及「 ...
- Android零基础入门第10节:开发IDE大升级,终于迎来了Android Studio
原文:Android零基础入门第10节:开发IDE大升级,终于迎来了Android Studio 通过前面几期的学习,我们知道了Android的前世今生,也了解了Android的系统架构和应用组件,也 ...
- duilib菜单开发遇见“0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突”
我的程序是这样一个逻辑. 首先创建用户列表,点击列表项弹出菜单,点击菜单上“设备选项”,弹出设备列表,上面显示这个用户拥有的设备. 菜单的创建参考了这为博主的教程:http://www.cnblogs ...
- 领域驱动设计(DDD)的实践经验分享之ORM的思考
原文:领域驱动设计(DDD)的实践经验分享之ORM的思考 最近一直对DDD(Domain Driven Design)很感兴趣,于是去网上找了一些文章来看看,发现它确实是个好东西.于是我去买了两本关于 ...
- UWP 圆角TextBox和PassWord框
最近在做一个UWP项目,登录的用户和密码框需要圆角的,由于UWP的TextBlock 和PasswordBox是没有CornerRadius属性的,于是我就使用了一个Border嵌套在最外层,设置其他 ...
- .NET重思(三)-数组列表与数组的区别,栈集合和队列结合的区别
数组列表和数组十分相似,区别在于数组列表的容量是可以动态变化的,而数组的容量是固定的.数组即Array类,数组列表即ArrayList类,两者十分相似.不过,Array类在System命名空间下,Ar ...
- Qt5 结构及模块组成?
作为一个Qt的粉丝,对将于明年发布的Qt5充满了期待.可是想想Qt5将发生的巨大变化,心底又有点不安.Qt5到底会变成什么样呢? 看看近期Qt5的一些大动作: 从 QtCore中移除 QSetting ...
- Impala概念与架构
Impala概念与架构 下面的内容介绍Cloudera Impala的背景资料及特性,以便你更高效的使用它.Where appropriate, the explanations include co ...
- linux dll hell--链接库real name, soname, link name
DLL hell 是指 Windows 系统上动态库的新版本覆盖旧版本,且新版本不能兼容旧版本的问题. 例如:装新软件,但原有的软件运行不起来了. Linux 系统下也同样面临着和 Windows ...
- Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]解决
Laravel5.x运行迁移命令创建数据表:php artisan migrate报错. Illuminate\Database\QueryException : SQLSTATE[42000]: ...