1. 完成将server和client端的mysql配置默认字符集为utf8mb4;
1.首先查看数据是否支持utf8mb4
mysql> SHOW VARIABLES Like '%char%';
#打开mysql的配置文件进行相关配置 vim /etc/my.cnf
2.针对客户端进行utf8mb4设置
[mysql] #针对Mysql个人客户端
default-character-set=utf8mb4
[client] #针对Mysql所有客户端
default-character-set=utf8mb4
针对服务器端设置utf8mb4
[mysql]
default-set-server=utf8mb4
3.重启mysql服务器
systemctl restart mysqld.service
4.重新查看当前字符集
mysql> SHOW VARIABLES Like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
2. 掌握如何获取SQL命令的帮助,基于帮助完成添加testdb库,字符集utf8, 排序集合utf8_bin
1.在Mysql输入help create database; 查看创建数据库帮助
mysql> help create database;
Name: 'CREATE DATABASE'
Description:
Syntax:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {'Y' | 'N'}
}
CREATE DATABASE creates a database with the given name. To use this
statement, you need the CREATE privilege for the database. CREATE
SCHEMA is a synonym for CREATE DATABASE.
2.输入 mysql> create database testdb character set utf8 collate utf8_bin;
Query OK, 1 row affected, 2 warnings (0.01 sec)
3.查看数据库 mysql> show databases;
+--------------------+
| Database |
+--------------------+
| ZA |
| hellodb |
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
| zabbix |
+--------------------+
8 rows in set (0.00 sec)
3.总结mysql常见的数据类型。
MySQL支持很多数据类型,以便我们能在复杂的业务场景中支持各种各样的数据格式,存储适当的数据内容。我们在设计数据库时,正确的使用数据库类型对整个数据库的整洁和高效,会有很大的帮助。
MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型
整型(INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT):用于存储整数值,不同的整型数据类型支持的范围不同。
浮点型(FLOAT、DOUBLE、DECIMAL):用于存储带小数点的数字,不同的浮点型数据类型支持的精度不同。
字符串型(CHAR、VARCHAR、TEXT、BLOB):用于存储字符型数据,不同的字符串型数据类型支持的长度和存储方式不同。
日期/时间型(DATE、TIME、DATETIME、TIMESTAMP、YEAR):用于存储日期和时间信息,不同的日期/时间型数据类型支持的精度和存储方式不同。
枚举和集合型(ENUM、SET):用于存储具有限定值的数据,ENUM类型只能存储单个值,而SET类型可以存储多个值。
4. 创建一个主机表host,放在testdb中,要求字段 1) 主键自增id 无符号, tinyint. 2) hostname可变字符长度256,可为空。。3)ip 可变字符长度256,可为空。4)账号,可变字符长度256,可为空。5)密码,可变字符长度256,可为空。6)创建时间,时间类型,非空。7)更新时间,时间类型,默认当前时间。8)区域,只能在华南,华北,华东,三个区域之一。9)端口,无符号整数,可为空。10)外网地址,可变字符长度256,可为空。11)内网地址,可变字符长度256,可为空。
1.进入testdb中
mysql> use testdb
Database changed
2.创建hots主机表
mysql> create table host (
-> id tinyint unsigned not null auto_increment primary key,
-> hostname varchar(256) default null,
-> ip varchar(256) default null,
-> account varchar(256) default null,
-> password varchar(256) default null,
-> create_time datetime not null,
-> update_time datetime default current_timestamp on update current_timestamp,
-> region enum('华南','华北','华东'),
-> port int unsigned null,
-> public_ip varchar(256),
-> private_ip varchar(256)
-> );
Query OK, 0 rows affected (0.02 sec)
mysql> mysql> desc table host;
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
| 1 | SIMPLE | host | NULL | ALL | NULL | NULL | NULL | NULL | 1 | 100.00 | NULL |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)
mysql> mysql> describe host;
+-------------+----------------------------------+------+-----+-------------------+-----------------------------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------------------------------+------+-----+-------------------+-----------------------------------------------+
| id | tinyint unsigned | NO | PRI | NULL | auto_increment |
| hostname | varchar(256) | YES | | NULL | |
| ip | varchar(256) | YES | | NULL | |
| account | varchar(256) | YES | | NULL | |
| password | varchar(256) | YES | | NULL | |
| create_time | datetime | NO | | NULL | |
| update_time | datetime | YES | | CURRENT_TIMESTAMP | DEFAULT_GENERATED on update CURRENT_TIMESTAMP |
| region | enum('华南','华北','华东') | YES | | NULL | |
| port | int unsigned | YES | | NULL | |
| public_ip | varchar(256) | YES | | NULL | |
| private_ip | varchar(256) | YES | | NULL | |
+-------------+----------------------------------+------+-----+-------------------+-----------------------------------------------+
11 rows in set (0.00 sec)
5. 给testdb.host表中添加多条数据。
1.插入表
mysql> insert into host (hostname,ip,account,password,create_time,region,port) values
-> ('linux','192.168.0.1','root','123456','2023-010-01 00:00:00','华东','456')
-> ('linux','192.168.0.1','root','123456','2023-010-01 00:00:00','华东','456');
2.查看表格内容
mysql> select * from host;
+----+----------+-------------+---------+----------+---------------------+---------------------+--------+------+-----------+------------+
| id | hostname | ip | account | password | create_time | update_time | region | port | public_ip | private_ip |
+----+----------+-------------+---------+----------+---------------------+---------------------+--------+------+-----------+------------+
| 1 | linux | 192.168.0.1 | root | 123456 | 2023-10-01 00:00:00 | 2023-11-02 20:42:58 | 华东 | 456 | NULL | NULL |
| 2 | linux | 192.168.0.1 | root | 123456 | 2023-10-01 00:00:00 | 2023-11-02 20:43:33 | 华东 | 456 | NULL | NULL |
+----+----------+-------------+---------+----------+---------------------+---------------------+--------+------+-----------+------------+
2 rows in set (0.00 sec)
6. 根据表扩展出几个语句,完成总结DDL, DML的用法,并配上示例。
DDL:对数据库以及数据库内部的对象进行创建、删除、修改等操作的语言,常用的语句:create,alter,drop,show
DML:用来对数据库表中的数据进行增删改查操作。常用的语句:insert,update,delete,select
DDL用法:
创建表:
mysql> create table student (id tinyint unsigned primary key auto_increment , name char(4) not null, gender char(1), age tinyint unsigned );
修改表
alter table student add score int default 80;
删除表
mysql> drop table student;
Query OK, 0 rows affected (0.00 sec)
查看表
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| host |
+------------------+
1 row in set (0.00 sec)
DML用法
查看表记录:
mysql> select * from host;
表中插入内容
insert into student (id,name,gender,age) values(1,'xiao','M',20);
修改表信息
update student set age = 19 where id = 1;
删除表
delete from student;
7. 导入hellodb库,总结DQL, alias, where子句,gruop by, order by, limit, having使用示例。
导入hellodb库
mysql < hellodb_innodb.sql
总结DQL, alias, where子句,gruop by, limit, having使用
alias 给字段起别名
select 字段名 as 别名 from 表名;
mysql> select Name as 姓名,Age as 年龄 from students;
+---------------+--------+
| 姓名 | 年龄 |
+---------------+--------+
| Shi Zhongyu | 22 |
| Shi Potian | 22 |
| Xie Yanke | 53 |
| Ding Dian | 32 |
where 筛选条件
查询年龄大于等于10岁的所有信息
mysql> select * from students where age>=20;
+-------+---------------+-----+--------+---------+-----------+
| 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 |
| 9 | Ren Yingying | 20 | F | 6 | NULL |
| 11 | Yuan Chengzhi | 23 | M | 6 | NULL |
gruop by 分组查询
计算平均年龄
mysql> select gender,avg(age) from students group by gender;
+--------+----------+
| gender | avg(age) |
+--------+----------+
| M | 33.0000 |
| F | 19.0000 |
+--------+----------+
order by 排序
按年龄排序
mysql> select * from students order by age;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
| 14 | Lu Wushuang | 17 | F | 3 | NULL |
| 8 | Lin Daiyu | 17 | F | 7 | NULL |
| 19 | Xue Baochai | 18 | F | 6 | NULL |
| 20 | Diao Chan | 19 | F | 7 | NULL |
| 15 | Duan Yu | 19 | M | 4 | NULL |
| 12 | Wen Qingqing | 19 | F | 1 | NULL |
| 7 | Xi Ren | 19 | F | 3 | NULL |
| 10 | Yue Lingshan | 19 | F | 3 | NULL |
limit 查看指定数据
查看前三条数据
mysql> select * from students limit 3;
+-------+-------------+-----+--------+---------+-----------+
| 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 |
+-------+-------------+-----+--------+---------+-----------+
3 rows in set (0.00 sec)
8. 基于hellodb 库, 总结子查询,关联查询 ,交叉连接,内连接,左连接,右连接,完全连接,自连接。
9. 总结select语句处理顺序。
from >> (表名) >> where(过滤条件) > group by (分组)>> 聚合 >>having(筛选)>> select(形成虚拟表)>> order by (输出后结果)>> limit
10. 总结mysql事件管理,用户管理,权限管理。
MySQL 事件管理
事件是根据时间表运行的任务,类似于 Windows 定时任务。一个事件可调用一次,也可周期性地启动。它由一个特定的线程来管理,也就是所谓的事件调度器。MySQL 的事件调度器可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下非常实用。
事件和触发器类似,都是在某些事情发生的时候启动。有时候也称为“时间触发器”,因为它们是基于特定时间点触发的程序。MySQL 事件可以用于许多场景,例如优化数据库表、归档数据、生成复杂查询报告、清理日志文件等。
管理
事件由两个部分组成,第一部分是事件调度(event schedule),表示事件何时启动以及按什么频率启动,第二部分是事件动作(event action),即事件启动时执行的代码,事件动作可以是一条简单的SQL语句,也可以是一个存储过程,也可以是begin…end语句块。
1.查看事件是否开启
mysql> SHOW VARIABLES LIKE 'event_scheduler'; 或者输入(SELECT @@event_scheduler;)
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.04 sec)
2.如果没有开启的情况下输入以下命令开启
mysql> set global event_scheduler = ON;
3.创建一个event_1事件,之后每6秒向one1数据表中插入数据
创建用户表
CREATE TABLE t_event(id int auto_increment primary key, ts timestamp);
创建事件
CREATE EVENT event1
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 10 SECOND
DO
INSERT INTO t_event(ts) VALUES (CURRENT_TIMESTAMP);
4.查看结果
mysql> select * from t_event;
+----+---------------------+
| id | ts |
+----+---------------------+
| 1 | 2023-11-03 19:48:23 |
+----+---------------------+
1 row in set (0.00 sec)
用户管理
1.创建用户
mysql> create user 'one'@'192.168.50.7' identified by '123456';
2.修改密码
SET PASSWORD FOR 'USERNAME'@'HOST' = 'password';
权限管理
1.赋予权限
mysql> grant all on *.* to 'one'@'192.168.50.7';
2.更新权限
flush privileges;
11. 基于apache, php, mysql搭建wordpress站点。
1.安装所使用的软件
yum -y install httpd php php-mysqlnd php-json mysql-server
2.下载wordpress-6.3.2-zh_CN.tar.gz 并解压
tar -xvzf wordpress-6.3.2-zh_CN.tar.gz
3.将压缩后的文件移动到指定目录下
mv wordpress /var/www/html/
4.为wordpress创建一个数据库,一个指定用户并赋予权限
mysql> create database wordpress;
mysql> CREATE USER 'wordb'@'192.168.50.7' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';
FLUSH PRIVILEGES;
5.浏览器登入虚拟机域名,对wordpress进行配置设置