1、写一个一键安装 mariadb 数据库脚本。
#!/bin/bash # #************************************************************************************ #Auther: zc #QQ: 194679342 #Date: 2020-09-27 #FileName: my.sh #URL: http://www.magedu.com #Description: The test script #Copyrignt (C): 2020 All rights reseaved #*********************************************************************************** DIR=`pwd` NAME="mariadb-10.5.5-linux-systemd-x86_64.tar.gz" FULL_NAME=${DIR}/${NAME} PASS='magedu' yum -y install libaio* numactl-libs if id mysql ;then echo "用户以存在" else useradd -r -s /bin/nologin mysql fi if [ -f ${FULL_NAME} ] ;then echo "安装文件已存在" else echo "安装文件不存在" fi if [ -h /usr/local/mysql ];then echo "mysql已安装" else tar -xf /usr/local/mariadb-10.5.5-linux-systemd-x86_64.tar.gz -C /usr/local/ ln -sv /usr/local/mariadb-10.5.5-linux-systemd-x86_64 /usr/local/mysql chown -R root:root /usr/local/mysql fi cat > /etc/my.cnf <<EOF [mysqld] datadir = /data/mysql innodb_file_per_table = on skip_name_resolve = on socket=/data/mysql/mysql.sock log-error=/data/mysql/mysql.log [client] socket=/data/mysql/mysql.sock EOF if [ ! -d /data/mysql ];then mkdir -pv /data/mysql && chown -R mysql.mysql /data/mysql /usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysql --user=mysql cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld echo 'PATH=/usr/local/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh chmod a+x /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh chkconfig --add mysqld service mysqld start else echo "mysql 数据目录完成" fi echo "安装成功" /usr/local/mysql/bin/mysql_secure_installation <<EOF y $PASS $PASS y y y y EOF
2、简述Event 事件介绍以及它的优缺点
事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”,事件调度器event_scheduler负责调用事件,它默认是关闭的。这个调度器不断地监视一个事件是否要调用, 要创建事件,必须打开调度器event_scheduler=1。
事件和触发器类似,都是在某些事情发生的时候启动。当数据库上启动一条语句的时候,触发器就启动了,而事件是根据调度事件来启动的。由于它们彼此相似,所以事件也称为临时性触发器。
事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。
create event 语句创建一个事件。每个事件由两个主要部分组成,第一部分是事件调度(event schedule),表示事件何时启动以及按什么频率启动,第二部分是事件动作(event action ),这是事件启动时执行的代码,事件的动作包含一条SQL语句,它可能是一个简单地insert或者update语句,也可以使一个存储过程或者 benin…end语句块,这两种情况允许我们执行多SQL。
优点:一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能,可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下就非常实用
缺点:定时触发,不可以直接调用
3、在 students 表中,查询年龄大于25岁,且为男性的同学的名字和年龄:
MariaDB [hellodb]> select * from students;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
| 1 | Shi Zhongyu | 22 | M | 2 | 3 |
| 2 | Shi Potian | 22 | M | 1 | 7 |
| 3 | Xie Yanke | 53 | M | 2 | 16 |
| 4 | Ding Dian | 32 | M | 4 | 4 |
| 5 | Yu Yutong | 26 | M | 3 | 1 |
| 6 | Shi Qing | 46 | M | 5 | NULL |
| 7 | Xi Ren | 19 | F | 3 | NULL |
| 8 | Lin Daiyu | 17 | F | 7 | NULL |
| 9 | Ren Yingying | 20 | F | 6 | NULL |
| 10 | Yue Lingshan | 19 | F | 3 | NULL |
| 11 | Yuan Chengzhi | 23 | M | 6 | NULL |
| 12 | Wen Qingqing | 19 | F | 1 | NULL |
| 13 | Tian Boguang | 33 | M | 2 | NULL |
| 14 | Lu Wushuang | 17 | F | 3 | NULL |
| 15 | Duan Yu | 19 | M | 4 | NULL |
| 16 | Xu Zhu | 21 | M | 1 | NULL |
| 17 | Lin Chong | 25 | M | 4 | NULL |
| 18 | Hua Rong | 23 | M | 7 | NULL |
| 19 | Xue Baochai | 18 | F | 6 | NULL |
| 20 | Diao Chan | 19 | F | 7 | NULL |
| 21 | Huang Yueying | 22 | F | 6 | NULL |
| 22 | Xiao Qiao | 20 | F | 1 | NULL |
| 23 | Ma Chao | 23 | M | 4 | NULL |
| 24 | Xu Xian | 27 | M | NULL | NULL |
| 25 | Sun Dasheng | 100 | M | NULL | NULL |
+-------+---------------+-----+--------+---------+-----------+
25 rows in set (0.001 sec)
MariaDB [hellodb]> 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.001 sec)
4、在 students 表中,以 ClassID 为分组依据,查询显示每组的平均年龄
MariaDB [hellodb]> select classid,avg(age) as 平均年龄 from students group by classid ; +---------+--------------+ | classid | 平均年龄 | +---------+--------------+ | NULL | 63.5000 | | 1 | 20.5000 | | 2 | 36.0000 | | 3 | 20.2500 | | 4 | 24.7500 | | 5 | 46.0000 | | 6 | 20.7500 | | 7 | 19.6667 | +---------+--------------+ 8 rows in set (0.001 sec) MariaDB [hellodb]> select classid,avg(age) as 平均年龄 from students where classid is not null group by classid order by classid ; +---------+--------------+ | classid | 平均年龄 | +---------+--------------+ | 1 | 20.5000 | | 2 | 36.0000 | | 3 | 20.2500 | | 4 | 24.7500 | | 5 | 46.0000 | | 6 | 20.7500 | | 7 | 19.6667 | +---------+--------------+ 7 rows in set (0.000 sec)
5、显示第4题中平均年龄大于30的分组及平均年龄
MariaDB [hellodb]> select classid 班级,avg(age) 平均年龄 from students group by classid having 平均年龄 > 30 ; +--------+--------------+ | 班级 | 平均年龄 | +--------+--------------+ | NULL | 63.5000 | | 2 | 36.0000 | | 5 | 46.0000 | +--------+--------------+ 3 rows in set (0.000 sec)