作业四

本文提供了一键安装Mariadb数据库的脚本,并介绍了事件(Event)在Mariadb中的应用及其优缺点。此外,还展示了如何通过SQL查询解决具体问题,包括条件筛选和分组聚合等。

1、写一个一键安装 mariadb 数据库脚本。

#!/bin/bash
DIR=`pwd`  # 
NAME="mariadb-10.2.31-linux-x86_64.tar.gz"  # 下载的二进制mariadb包
FULL_NAME=${DIR}/${NAME}
DATA_DIR="/data/mysql"  # 数据库目录
MYSQL_DIR=`echo $NAME| sed -nr 's/^(.*[0-9]).*/\1/p'`   #mariadb-10.2.31-linux-x86_64

yum install libaio perl-Data-Dumper libtinfo* libncurses* autoconf -y
 
if [ -f ${FULL_NAME} ];then
    echo "安装文件存在"
else
    echo "安装文件不存在"
    exit 3
fi
if [ -h /usr/local/mysql ];then # 判断目录是否存在软链接
    echo "Mysql 已经安装"
    exit 3 
else
    tar xvf ${FULL_NAME}   -C /usr/local
    ln -sv /usr/local/${MYSQL_DIR}  /usr/local/mysql # 创建软链接
    if id  mysql;then
        echo "mysql 用户已经存在,跳过创建用户过程"
    fi
        useradd  mysql  -r -s /sbin/nologin  -d /data/mysql
    if  id  mysql;then
        chown  -R mysql.mysql  /usr/local/mysql/*
        if [ ! -d  /data/mysql ];then
            mkdir -pv /data/mysql && chown  -R mysql.mysql  /data/mysql  
						
        cp /usr/local/mysql/support-files/my-large.cnf   /etc/my.cnf   # 准备配置文件
		sed -r -i  '/^\[mysqld\]/adatadir=/data/mysql' /etc/my.cnf   # 用sed命令在数据库配置文件中添加/data/mysql作为数据库存放目录,否则数据库无法启动。			
			/usr/local/mysql/scripts/mysql_install_db  --user=mysql --datadir=/data/mysql  --basedir=/usr/local/mysql/ #创建数据库文件
		           
			cp  /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysqld   # 准备服务脚本
            /usr/sbin/chkconfig --add mysqld 
            /usr/sbin/chkconfig mysqld on  #  设置为开机启动
			service mysqld start
            echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
            source /etc/profile.d/mysql.sh
			ln -sv /usr/local/mysql/bin/*  /usr/bin/  ##
        
    else
            echo "MySQL数据目录已经存在,"
            exit 3
    fi
    fi
fi

2、简述Event 事件介绍以及它的优缺点

Event 事件介绍
事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。
事件和触发器类似,都是在某些事情发生的时候启动。当数据库上启动一条语句的时候,触发器就启动了,而事件是根据调度事件来启动的。由于它们彼此相似,所以事件也称为临时性触发器。
事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。
事件的优缺点
优点:一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能,可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下就非常实用
缺点:定时触发,不可以直接调用

3、在 students 表中,查询年龄大于25岁,且为男性的同学的名字和年龄:
(root@localhost) [hellodb]> select name,age,gender from students where age>25 and gender=‘M’;

4、在 students 表中,以 ClassID 为分组依据,查询显示每组的平均年龄
(root@localhost) [hellodb]> select avg(age),classid from students group by classid;

5、显示第4题中平均年龄大于30的分组及平均年龄
(root@localhost) [hellodb]> select avg(age),classid from students group by classid having avg(age)>30;

基于51单片机,实现对直流电机的调速、测速以及正反转控制。项目包含完整的仿真文件、源程序、原理图和PCB设计文件,适合学习和实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实时显示电机转速。 正反转控制:通过按键切换电机的正转和反转状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的转速和PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示转速和占空比。 电机驱动:采用双H桥电路,控制电机的正反转和调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机转速(单位:转/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反转切换键,按下后电机反转。 4键:正转切换键,按下后电机正转。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁和霍尔元件的距离应保持在2mm左右,过近可能会在电机转动时碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值