(四)Mysql数据库一键安装

1、创建一键安装mysql数据库脚本

#!/bin/bash
#***********************************************
#Author:        zlq
#Mail:          409003604@qq.com
#Version:       1.0
#Date:          2020-09-25
#FileName:      mariadb_key_install.sh
#Description:   key_install_mariadb.sh 
#***********************************************
. /etc/init.d/functions
SRC_DIR=`pwd`
MYSQL='mariadb-10.5.5.tar.gz'
COLOR='echo -e \E[01;31m'
END='\e[0m'
check (){

	if [ ! -e $MYSQL ];then                 # -e表示判断文件是否存在 !取反
		$COLOR "缺少${MYSQL}文件" $END
		$COLOR  "请将相关软件放在${SRC_DIR}目录下" $END       
		exit 
	elif [ -e /usr/local/mysql ];then
		       $COLOR  "数据库文件存在,安装失败" $END 
		exit 
	else
		return
	fi
}

install() {
               yum -y install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel > /dev/null
        useradd -r -s /sbin/nologin  -d /data/mysql mysql
        mkdir /data/mysql
        chown -R  mysql.mysql  /data/mysql
        tar xvf mariadb-10.5.5.tar.gz
	     cd mariadb-10.5.5/
	
   cmake .  -DCMAKE_INSTALL_PREFIX=/app/mysql  -DMYSQL_DATADIR=/data/mysql/  -DSYSCONFDIR=/etc/  -DMYSQL_USER=mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1  -DWITH_BLACKHOLE_STORAGE_ENGINE=1  -DWITH_PARTITION_STORAGE_ENGINE=1  -DWITHOUT_MROONGA_STORAGE_ENGINE=1  -DWITH_DEBUG=0 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0  -DENABLED_LOCAL_INFILE=1  -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci  
       
         $COLOR  echo "开始编译安装....." $END
	      sleep 2
         make && make install                                             #编译安装

	     echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh       #准备环境变量
         . /etc/profile.d/mysql.sh		  

         cd /app/mysql
         scripts/mysql_install_db --datadir=/data/mysql  --user=mysql  >/dev/null    #生成数据库文件
 
         cp -f /app/mysql/support-files/wsrep.cnf  /etc/my.cnf             #准备启动脚本

         cp /app/mysql/support-files/mysql.server  /etc/init.d/mysqld    # 拷贝启动程序 
         chkconfig --add mysqld                                          # 添加到启动列表 
         service mysqld start
	 [ $? -eq  0] &&   action "服务成功!!"   ||  action "服务启动失败"   false
}
check
install 

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

1 事件简介

    事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。

    事件和触发器类似,都是在某些事情发生的时候启动。当数据库上启动一条语句的时候,触发器就启动了,而事件是根据调度事件来启动的。由于他们彼此相似,所以事件也称为临时性触发器。

    事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。

2 事件的优缺点
    2.1 优点

    一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。

    可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下就非常实用了。

    2.2 缺点
    定时触发,不可以调用。

3、在Studen表中查询年龄大于25,且为男性同学的姓名和年龄

查看数据库信息

MariaDB [student]> select * from student;
+-------+---------------+------+--------+---------+-----------+
| stuid | name          | age  | gender | classid | teacherid |
+-------+---------------+------+--------+---------+-----------+
|     1 | zhang sanfeng |   15 | F      |      10 | null      |
|     2 | zhang yajing  |   22 | M      |      10 | null      |
|     3 | chen jing     |   23 | F      |      10 | null      |
|     4 | chen yang     |   25 | M      |      20 | null      |
|     5 | song jiang    |   26 | M      |      20 | null      |
|     6 | zhaozilong    |   25 | F      |      20 | null      |
|     7 | qian kong     |   22 | F      |      20 | null      |
|     8 | sun dasheng   |   24 | M      |      30 | null      |
|     9 | zhouwei       |   23 | F      |      30 | null      |
|    10 | wuhouwang     |   27 | M      |      30 | null      |
|    11 | zheng cheng   |   33 | F      |      40 | null      |
|    12 | li feifei     |   32 | M      |      40 | null      |
|    13 | jiang kong    |   19 | M      |      40 | null      |
|    14 | duan yu       |   39 | F      |      40 | null      |
|    15 | fan zhongyan  |   35 | M      |      50 | null      |
|    16 | qing shubao   |   28 | F      |      50 | null      |
|    17 | luzhisheng    |   45 | M      |      60 | null      |
|    18 | zhengzhong    |   23 | M      |      70 | null      |
|    19 | cheng long    |   31 | F      |      70 | null      |
+-------+---------------+------+--------+---------+-----------+
19 rows in set (0.000 sec)
查询如下
在这里MariaDB [student]> select name,age,gender from student where age>25 and gender='F'; 
+-------------+------+--------+
| name        | age  | gender |
+-------------+------+--------+
| zheng cheng |   33 | F      |
| duan yu     |   39 | F      |
| qing shubao |   28 | F      |
| cheng long  |   31 | F      |
+-------------+------+--------+
4 rows in set (0.001 sec)插入代码片

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

查询结果如下
MariaDB [student]> select classid,avg(age)  from  student group by classid
    -> ;
+---------+----------+
| classid | avg(age) |
+---------+----------+
|      10 |  20.0000 |
|      20 |  24.5000 |
|      30 |  24.6667 |
|      40 |  30.7500 |
|      50 |  31.5000 |
|      60 |  45.0000 |
|      70 |  27.0000 |
+---------+----------+
7 rows in set (0.002 sec)

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


MariaDB [student]> select classid,avg(age)  from  student group by classid  having avg(age)>30
+---------+----------+
| classid | avg(age) |
+---------+----------+
|      40 |  30.7500 |
|      50 |  31.5000 |
|      60 |  45.0000 |
+---------+----------+
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页