mysql的sql作业_Linux作业(4)——Mysql

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值