mysql数据库day3(MySQL数据库单表查询三)

发布时间:2022-11-15

本文目录一览:

  1. mysql查询连续三天的数据,该如何优化查询sql
  2. Mysql中查询(数据库中的)纵向转(查询结果显示为)横向.
  3. mysql数据库如何实现定期删除数据库一些东西
  4. [如何通过mysql的日志恢复数据库 加急求救](#如何通过mysql的日志恢复数据库 加急求救)

mysql查询连续三天的数据,该如何优化查询sql

SELECT * FROM `curriculum` where cuc_class_date '2016-10-01' and cuc_class_date = date_add('2016-10-01', INTERVAL 3 day)

这样可能会把10月1号非零点的也查出来,如果不想查出来在加date_format()函数格式一下时间。

Mysql中查询(数据库中的)纵向转(查询结果显示为)横向.

  1. 在MySQL环境,创建数据库表:
    create table test_data1(id int, name VARCHAR(20), day VARCHAR(20))
    
  2. 插入测试数据:
    insert into test_data1 values(1,'liu',1);
    insert into test_data1 values(2,'liu',3);
    insert into test_data1 values(3,'wang',1);
    insert into test_data1 values(4,'wang',2);
    insert into test_data1 values(4,'wang',4);
    
  3. 查询表中数据:
    select * from test_data1;
    
  4. 编写目标SQL:
    select name,
           max(case when day=1 then 1 end) d_1,
           max(case when day=2 then 2 end) d_2,
           max(case when day=3 then 3 end) d_3,
           max(case when day=4 then 4 end) d_4
    from test_data1 t group by name
    

mysql数据库如何实现定期删除数据库一些东西

MySQL 5.1以后版本中有 Event,这是类似Oracle中的job。可以通过创建Event,然后在里面调用删除过期记录的存储过程即可实现。

定时每天备份MySQL并定时删除上月记录(脚本)

#!/bin/bash
# 定义年 月 日
year=`date +%Y`
month=`date +%m`
day=`date +%d`
# 定义备份的目录
BACKDIR=/bak_1/mysql/$year/$month/$day
# MySQL的root密码
ROOTPASS=123456
# 建立目录
mkdir -p $BACKDIR
# 获取数据库列表
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
# 备份
for dbname in $DBLIST
do
  mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy
done

将脚本存为back.sh,添加到cron里每天凌晨3点执行:

crontab -e
00 03 * * * root /root/back.sh

下面的是每月3号删除上个月的备份,存为del_bak.sh,每月3号3点3分执行:

03 03 03 * * root /root/del_bak.sh

注意脚本上传后,要chmod一下权限,例如:

chmod 755 /root/back.sh
#!/bin/bash
# 定义年 月 日
year=`date +%Y`
month=`date +%m`
# 取上一个月
month=`expr $month - 1`
# 如果是1月,则上一月为12,并且年也减1
if [ $month -eq 0 ]; then
  month=12
  day=31
  year=`expr $year - 1`
fi
# 因为备份时小于10月的月份有前导零,所以这里判断如果小于10月,则加前导零
if [ $month -lt 10 ]; then
  pre=0
fi
# 获取要删除的目录名
BACKDIR=/bak1/mysql/$year/$pre$month
# 删除了
rm -rf $BACKDIR
# 重新启动crond
/etc/rc.d/init.d/crond restart

如何通过mysql的日志恢复数据库 加急求救

  1. 首先确定my.ini(Win系统)或my.cnf(Linux系统)是否有如下配置:
    [mysqld]
    log-bin=mysql-bin
    
    等号后面是文件名或者路径加文件名。 或者用命令看是否开启binlog配置:
    mysql> show master logs;
    mysql> show binlog events \G;
    
  2. 提供故障时点描述信息。
  3. 如果开启了binlog,那就可以按故障还原点或者时间点进行还原操作了:
    mysqlbinlog --start-position=
    mysqlbinlog --start-datetime=
    
    这里语法是进一步查询的线索,不知道你是什么操作系统、开发还是生产库?不能乱指挥。 【备份:做故障还原及数据恢复前切忌做好备份(数据文件以及日志文件)】