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

  • 安装mariadb-10.2.31版本
  • centos7


  1. #!/bin/bash
  2. #
  3. NAME="mariadb-10.2.31-linux-systemd-x86_64.tar.gz"
  4. MARIADB='mariadb-10.2.31-linux-systemd-x86_64'
  5. BASEDIR='/usr/local/mysql'
  6. PASSWORD='123456'
  7. echo "开始安装${MARIADB}..."
  8. #yum install libaio numactl-libs &> /dev/null
  9. if id mysql &> /dev/null ;then
  10. echo "mysql用户已经创建,"
  11. else
  12. useradd -r -s /sbin/nologin mysql
  13. echo "mysql用户创建成功"
  14. fi
  15. echo "正在解压二进制包,请稍等..."
  16. tar xf $NAME -C /usr/local && echo "解压完成!" || { echo "解压失败,自动退出" ; exit ; }
  17. echo "准备数据库安装相关文件"
  18. sleep 1
  19. ln -s /usr/local/$MARIADB $BASEDIR
  20. chown -R mysql:mysql $BASEDIR
  21. echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
  22. source /etc/profile.d/mysql.sh
  23. cp /etc/my.cnf{,.bak}
  24. cat > /etc/my.cnf <<EOF
  25. [mysqld]
  26. datadir=/data/mysql
  27. skip_name_resolve=1
  28. socket=/data/mysql/mysql.sock
  29. log-error=/data/mysql/mysql.log
  30. pid-file=/data/mysql/mysql.pid
  31. [client]
  32. socket=/data/mysql/mysql.sock
  33. EOF
  34. echo "数据库安装文件准备完成,正在生成数据库文件..."
  35. sleep 1
  36. cd $BASEDIR
  37. bash scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql --basedir=$BASEDIR &> /dev/null
  38. if [ $? = 0 ];then
  39. echo "数据库文件生成成功,正在启动..."
  40. else
  41. echo "数据库文件生成失败,自动退出!"
  42. exit
  43. fi
  44. cp support-files/systemd/mariadb.service /etc/systemd/system/
  45. systemctl daemon-reload
  46. if systemctl start mariadb ;then
  47. echo "数据库启动成功,正在执行安全加固脚本..."
  48. else
  49. echo "数据库启动失败,自动退出"
  50. exit
  51. fi
  52. ln -s /data/mysql/mysql.sock /tmp/mysql.sock
  53. bash $BASEDIR/bin/mysql_secure_installation &> /dev/null <<EOF
  54. y
  55. $PASSWORD
  56. $PASSWORD
  57. y
  58. y
  59. y
  60. y
  61. EOF
  62. echo "${MARIADB}已经安装完成"

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

  • Event介绍:event就是事件的意思,它是MySQL在相应的时刻调用的过程式数据库函数,一个事件可以调用一次,也可以周期性启动;它取代了操作系统中的计划任务而且比计划任务更精确,能够达到秒级

  • 优点:数据的定时性操作不需要依赖外部程序,能够直接使用数据库本身提高的功能,能够精准到每秒执行一次任务,而操作系统中的计划任务,比如(cron)也只能达到每分钟执行一次任务

  • 缺点:定时性触发任务,无法直接调用这项功能

3、在 students 表中,查询年龄大于25岁,且为男性的同学的名字和年龄:

  1. select name,gender,age from students where age > 25;

image.png

4、在 students 表中,以 ClassID 为分组依据,查询显示每组的平均年龄

  1. select classid,avg(age) from students group by classid;

image.png

5、显示第2题中平均年龄大于30的分组及平均年龄

  1. select classid,avg(age) from students group by classid having avg(age)>30;

image.png