1.MySQL二进制部署流程是什么
http://blog.youkuaiyun.com/weixin_39182877/article/details/79043751
2.配置文件在哪里?默认的
/etc/my.cnf
3.MySQL启动命令是什么
mysqld_safe
service mysqld start (5.0版本是mysqld)
service mysql start (5.5.7版本是mysql)
4.MySQL登录进去的命令
mysql -uroot -p**** -hlocalhost
5.密码-p 123456 这样可以不
no
6.-u root 这样可以不?
yes
7.%是什么
全网段可访问
8.创建一个DB,一个表命令
create database xxx,create table xxxx
9.切换DB
use xxx
10.1导出所有的DB到一个备份文件;
10.2导出xxxdb到一个备份文件;
10.3导出某个DB下的某张表到一个备份文件;
mysqldump -h localhost -uroot -p --all-databases >/tmp/all.sql
mysqldump database -u root -p > /tmp/users.sql
mysqldump database -uusername -ppassword --tables table1 > /tmp/test.sql
10.4mysqldump: command not found
vi ~/.bash_profile
#mysql
PATH=$PATH:/usr/local/mysql/bin
export
保存并退出后
source ~/.bash_profile
11.怎样还原10.1 10.2 10.3
11.1
登录mysal:
mysql–uroot –p
source /tmp/all.sql;
11.2&&11.3
mysql -hhostname -uusername -ppassword databasename < backupfile.sql
12.两台MySQL,怎样做主从
http://blog.youkuaiyun.com/millery22/article/details/50547443
13.MySQL binlog默认保留多少天,怎样从binlog文件指定时间去恢复数据,或者从指定位置恢复数据
默认0天(永不过期)
13.1.binlog内容查看:
使用工具查看:
mysqlbinlog binlog.000005 |more
mysqlbinlog binlog.000005 >>/tmp/binlog.000005.txt
因为模式为binlog-format=ROW,
所以使用参数,解析SQL语句:
mysqlbinlog --base64-output=decode-rows -v
binlog.000008 >/tmp/test
mysqlbinlog --base64-output=decode-rows -v \
--start-datetime='2016-01-04 15:10:00' \
--stop-datetime='2016-01-04 15:11:00' binlog.000008 >/
tmp/test
mysqlbinlog --base64-output=decode-rows -v \
--start-position='398' \
--stop-position='617' binlog.000008 >/tmp/test
SQL查询:
show binlog events in 'binlog.000006'\G;
show binlog events in 'binlog.000006' limit 10;
13.2.binlog恢复操作:
时间和位置界定参数:
mysqlbinlog --start-datetime='2016-01-04 15:11:00'
binlog.000006
mysqlbinlog --stop-datetime='2016-01-04 15:11:00'
binlog.000006
mysqlbinlog --start-position=249 binlog.000006
mysqlbinlog --stop-position=249 binlog.000006
使用--one-database参数,从binlog日志中恢复单个库:
mysqlbinlog --stop-datetime='2016-01-04 15:11:00' /
usr/local/mariadb/log/binlog.000006 |mysql -uroot -
pvincent --one-database test
#使用mysqlbinlog命令,指定结束时间,指定binlong日志文件抽取
SQL,
#管道给mysql,使用--one-database指定库名,
#从所有binlog日志中抽取对应库的SQL行为进行恢复。
使用mysqlbinlog将binlog日志导出成文本文件,使用source执行该文件:
mysqlbinlog /usr/local/mariadb/log/binlog.000006>/tmp/
redo.sql
mysql -uroot -pvincent
\. /tmp/redo.sql
#这种方法也是mysql中调用sql脚本的方法。
14.binlog哪 三种模式,优缺点
Mysql复制主要有三种方式:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。
对应的,binlog的格式也有三种:STATEMENT,ROW,MIXED。
1、STATEMENT模式(SBR)每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
2、ROW模式(RBR)不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是altertable的时候会让日志暴涨。
3、MIXED模式(MBR)以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
你们可以从搜索 binlog日志恢复数据
15.限制多少行
limit
16.排序语法
order by
17.聚合函数哪些
max min sum avg count having
18.分组语法是什么
group by
19.join哪几种
left join right join out join full join inner jion
20.ID 学生ID 学生姓名 班级名称 年级名称 科目 成绩
请问
1.求每个年级每个班级前五名学生(语数外总和)
2.各个科目的各个年级的平均分
3.各个科目的各个班级的平均分
# insert语句生成
for i in $(seq 9)
do
echo "insert into SCORE values($((0+$i)),$((0+$i%9)),'S_$((0+$i%9))','class_1','grade_1','yuwen',$((61+$i)));"
echo "insert into SCORE values($((10+$i)),$((0+$i%9)),'S_$((0+$i%9))','class_1','grade_1','shuxue',$((71+$i)));"
echo "insert into SCORE values($((20+$i)),$((0+$i%9)),'S_$((0+$i%9))','class_1','grade_1','yingyu',$((81+$i)));"
echo "insert into SCORE values($((30+$i)),$((10+$i%9)),'S_$((10+$i%9))','class_2','grade_1','yuwen',$((62+$i)));"
echo "insert into SCORE values($((40+$i)),$((10+$i%9)),'S_$((10+$i%9))','class_2','grade_1','shuxue',$((72+$i)));"
echo "insert into SCORE values($((50+$i)),$((10+$i%9)),'S_$((10+$i%9))','class_2','grade_1','yingyu',$((82+$i)));"
echo "insert into SCORE values($((60+$i)),$((20+$i%9)),'S_$((20+$i%9))','class_1','grade_2','yuwen',$((63+$i)));"
echo "insert into SCORE values($((70+$i)),$((20+$i%9)),'S_$((20+$i%9))','class_1','grade_2','shuxue',$((73+$i)));"
echo "insert into SCORE values($((80+$i)),$((20+$i%9)),'S_$((20+$i%9))','class_1','grade_2','yingyu',$((83+$i)));"
echo "insert into SCORE values($((90+$i)),$((30+$i%9)),'S_$((30+$i%9))','class_1','grade_2','yuwen',$((64+$i)));"
echo "insert into SCORE values($((100+$i)),$((30+$i%9)),'S_$((30+$i%9))','class_1','grade_2','shuxue',$((74+$i)));"
echo "insert into SCORE values($((110+$i)),$((30+$i%9)),'S_$((30+$i%9))','class_1','grade_2','yingyu',$((84+$i)));"
done>insert.sql.txt
# 建表装入数据
create database student;
use student;
CREATE TABLE `SCORE` (
`ID` int(20) NOT NULL comment 'ID',
`SID` int(20) NOT NULL comment '学生ID',
`S_NAME` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL comment '学生姓名',
`C_NAME` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL comment '班级名称',
`G_NAME` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL comment '年级名称',
`SUBJECT` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL comment '科目',
`SCORE` int(20) NOT NULL comment '成绩',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
# 需求 1.求每个年级每个班级前五名学生(语数外总和):
select ss.G_NAME,ss.C_NAME,
substring_index(GROUP_CONCAT(ss.S_NAME order by ss.sum_score desc),',',5)
from (select s.G_NAME,s.C_NAME,s.S_NAME,sum(s.SCORE) as sum_score
from SCORE s
where s.SUBJECT in ('yuwen','shuxue','yingyu')
group by s.G_NAME,s.C_NAME,s.S_NAME) ss
group by ss.G_NAME,ss.C_NAME;
# 推演1:
select s.G_NAME,s.C_NAME,s.S_NAME,sum(s.SCORE) as sum_score
from SCORE s
where s.SUBJECT in ('yuwen','shuxue','yingyu')
group by s.G_NAME,s.C_NAME,s.S_NAME;
根据年纪和班级以及学生分组,做语数外三门科目的总分
即求出每个同学的语数外总分,然后展示
# 推演2:
select ss.G_NAME,ss.C_NAME,GROUP_CONCAT(ss.S_NAME order by ss.sum_score desc)
from (select s.G_NAME,s.C_NAME,s.S_NAME,sum(s.SCORE) as sum_score
from SCORE s
where s.SUBJECT in ('yuwen','shuxue','yingyu')
group by s.G_NAME,s.C_NAME,s.S_NAME) ss
group by ss.G_NAME,ss.C_NAME;
查出的结果,根据年纪和班级分组,
然后根据每个年级的每个班级的学生的总成绩
由小到大排序,并且将排序之后学生姓名聚合成一列
使用GROUP_CONCAT(order by) group by 语法实现
# 推演3:
select ss.G_NAME,ss.C_NAME,SUBSTRING_INDEX(GROUP_CONCAT(ss.S_NAME order by ss.sum_score desc),',',5)
from (select s.G_NAME,s.C_NAME,s.S_NAME,sum(s.SCORE) as sum_score
from SCORE s
where s.SUBJECT in ('yuwen','shuxue','yingyu')
group by s.G_NAME,s.C_NAME,s.S_NAME) ss
group by ss.G_NAME,ss.C_NAME;
使用SUBSTRING_INDEX,指定分割符为逗号,取出前5组
得到前5名学生信息
# 需求2.各个科目的各个年级的平均分
select G_NAME,SUBJECT,avg(SCORE)
from SCORE
group by G_NAME,SUBJECT;
3.各个科目的各个班级的平均分
select G_NAME,C_NAME,SUBJECT,avg(SCORE)from SCORE
group by G_NAME,C_NAME,SUBJECT;
若泽大数据交流群:671914634