美文网首页
Linux作业(4)——Mysql

Linux作业(4)——Mysql

作者: 羰基生物 | 来源:发表于2020-09-28 10:10 被阅读0次

1、编写一键安装Mariadb脚本

系统版本,最小化安装

[root@localhost ~]# uname -r
3.10.0-1127.el7.x86_64
[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)
[root@localhost ~]# vim install_mariadb.sh
#!/bin/bash
#
#*********************************************************
#Author:            blackbeard
#Date:              2020-09-27
#FileName:          install_mariadb.sh
#Des:               The  test file
#********************************************************* 
RED="\e[1;31m"
END="\e[0m"
DIR=`pwd`
FILENAME="mariadb-10.2.31.tar.gz"
echo -e "$RED[---------------------初始化系统环境---------------------]$END"
sed -i 's/SELINUX=enforcing/SELINUX=disbaled/g' /etc/selinux/config
systemctl disable firewalld
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sed -i '3d' /etc/chrony.conf
sed -i '2a server ntp1.aliyun.com iburst'  /etc/chrony.conf
sed -i '3a server s2m.time.edu.cn iburst' /etc/chrony.conf
systemctl restart chronyd
systemctl enable chronyd
#################################
declare -A app
app[a1]='gcc'
app[a2]='gcc-c++'
app[a3]='cmake'
app[a4]='bison'
app[a5]='bison-devel'
app[a6]='zlib-devel'
app[a7]='libcurl-devel'
app[a8]='libarchive-devel'
app[a9]='boost-devel'
app[a10]='ncurses-devel'
app[a11]='gnutls-devel'
app[a12]='libxml2-devel'
app[a13]='openssl-devel'
app[a14]='libevent-devel'
app[a15]='libaio-devel'
  
for j in ${!app[*]};do
    rpm -q ${app[$j]} &> /dev/null && echo -e "$RED[-------------------${app[$j]}已安装-------------------]$END" || yum install -y ${app[$j]} &> /dev/null
done
    echo -e "$RED[--------------------环境设置完成-----------------]$END"
#################################
cd ~
if [ -f $FILENAME ];then
    echo -e "$RED[-----------------$DIR存在源码包------------------]$END" 
else
    echo -e "$RED[----------------$DIR不存在源码包-----------------]$END"
    exit 1
fi
#################################
id mysql &> /dev/null
if [ $? -eq 0 ];then
    echo -e "$RED[---------------------用户已存在-------------------]$END"
else
    echo -e "$RED[-------------------创建用户mysql------------------]$END"    
    useradd -r -s /sbin/nologin -d /data/mysql mysql
fi
mkdir /data/mysql
chown mysql.mysql /data/mysql
#################################
tar xvf mariadb-10.2.31.tar.gz
cd mariadb-10.2.31
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
make && make install 
#################################
if [ $? -eq 0 ];then
    echo -e "$RED[---------------------安装成功---------------------]$END" 
else
    echo -e "$RED[---------------------安装失败---------------------]$END" 
    rm -f CMakeCache.txt
    exit 1
fi

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
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
systemctl  start mysqld   

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

  • Event事件是MySQL在相应的时刻调用的过程式函数库对象,实际上就是计划任务,不过比CRON更精确,可以以秒级执行任务,而CRON最小只能以分钟为单位。Event事件可以一次性的执行任务,也可以周期性的执行,由一个特定的线程来管理,即——事件调度器。事件与触发器类似,一条SQL语句执行,触发器就启动了,而事件则根据调度事件来启动。
  • 优点:某些对数据的定时性操作不再依赖外部程序,而直接使用数据库本身的功能,可以实现每秒钟就执行一个任务
  • 缺点:不可以直接调用,定时触发

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

[root@localhost ~]# mysql < hellodb_innodb.sql 
mysql> use hellodb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT name,age FROM students WHERE age > 25 AND gender='M';
+--------------+-----+
| name         | age |
+--------------+-----+
| Xie Yanke    |  53 |
| Ding Dian    |  32 |
| Yu Yutong    |  26 |
| Shi Qing     |  46 |
| Tian Boguang |  33 |
| Xu Xian      |  27 |
| Sun Dasheng  | 100 |
+--------------+-----+
7 rows in set (0.00 sec)

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

mysql> SELECT classid,avg(age) FROM students GROUP BY classid HAVING classid IS NOT NULL;
+---------+----------+
| classid | avg(age) |
+---------+----------+
|       2 |  36.0000 |
|       1 |  20.5000 |
|       4 |  24.7500 |
|       3 |  20.2500 |
|       5 |  46.0000 |
|       7 |  19.6667 |
|       6 |  20.7500 |
+---------+----------+
7 rows in set (0.00 sec)

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

mysql> SELECT classid,avg(age) FROM students GROUP BY classid HAVING classid IS NOT NULL AND avg(age) > 30;
+---------+----------+
| classid | avg(age) |
+---------+----------+
|       2 |  36.0000 |
|       5 |  46.0000 |
+---------+----------+
2 rows in set (0.01 sec)

相关文章

网友评论

      本文标题:Linux作业(4)——Mysql

      本文链接:https://www.haomeiwen.com/subject/lumruktx.html