第二十三天

mysql主从脚本与mysql详细语句介绍
master-mysql配置脚本
先要在主服务器上配置免密登录
ssh-keygen
ssh-copy-id root@10.0.0.12
vim mysql.sh
#!/bin/bash
echo "安装master-mysql"
sleep 3
#下载依赖软件包
yum list installed | grep libaio &> /dev/null
if [ $? -ne 0 ];then
    yum -y install libaio   &> /dev/null
fi
echo "libaio已经安装"
yum list installed | grep rsync   &> /dev/null
if [ $? -ne 0 ];then
   yum -y install rsync   &> /dev/null
fi
echo "rsync已经安装"
yum list installed | grep ntpdate.x86_64   &> /dev/null
if [ $? -ne 0 ];then
   yum -y install ntpdate.x86_64   &> /dev/null
fi
echo "ntpdate.x86_64已经安装"
ntpdate cn.ntp.org.cn
sleep 3
#解压软件包
tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar
sleep 3
tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
echo "软件包已经解压"
#转移到指定工作目录
cp -r mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql/
#创建工作文件目录
mkdir mysql-files
#创建mysql系统用户
id mysql
if [ $? -ne 0 ];then
    useradd -r -s /sbin/nologin mysql
fi
echo "mysql用户已经创建"
#修改工作文件目录的权限和所属主,所属组
chown mysql:mysql ./mysql-files/
chmod 750 ./mysql-files/
#删除/etc/my.cnf文件
rm -rf /etc/my.cnf
#初始化mysql
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/
sleep 3
#加密
/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
echo "加密成功"
#设置service服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8
#开启mysql
service mysql8 start
if [ $? -ne 0 ];then
    echo "mysql开启失败"
else
    echo "mysql开启成功"
fi
sleep 3
#编辑配置文件my.cnf
cat >> /usr/local/mysql/my.cnf << EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
activate_all_roles_on_login=on
port=3306
log-error=/usr/local/mysql/data/db01-master.err
log-bin=/usr/local/mysql/data/binlog
server-id=10
character_set_server=utf8mb4
EOF
#重启mysql
service mysql8 restart
if [ $? -ne 0 ];then
    echo "mysql重启失败"
else
    echo "mysql重启成功"
fi
sleep 3
#数据同步
echo "开始配置数据同步,如果不配置请在3秒内按ctrl+c进行打断"
sleep 3
service mysql8 stop
echo "mysql服务已经停止"
rm -rf /usr/local/mysql/data/auto.cnf
echo "auto.cnf文件已经删除"
yum -y install rsync &> /dev/null
if [ $? -eq 0 ];then
    echo "rsync软件已经安装成功"
else
    echo "rsync软件安装失败"
fi
rsync -av /usr/local/mysql/data root@10.0.0.12:/usr/local/mysql/   &>  /etc/null
if [ $? -eq 0 ];then
    echo "data目录同步成功"
else
    echo "data目录同步失败"
fi
sleep 3
#开启mysql
service mysql8 start
if [ $? -ne 0 ];then
    echo "mysql开启失败"
else
    echo "mysql开启成功"
fi
#修改环境变量
sed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profile
#激活配置
source /etc/profile
if [ $? -ne 0 ];then
    echo "profile文件激活失败"
fi
echo "完成master-mysql配置"
source mysql.sh
# source /etc/profile      //激活profile文件
mysql -p'hz),bpIhb2x+'   //密码为上面初始化之后自动生成的
slave-mysql配置脚本
#!/bin/bash
echo "安装slave-mysql"
sleep 3
#下载依赖软件包
yum list installed | grep libaio &> /dev/null
if [ $? -ne 0 ];then
    yum -y install libaio   &> /dev/null
fi
echo "libaio已经安装"
yum list installed | grep rsync   &> /dev/null
if [ $? -ne 0 ];then
   yum -y install rsync   &> /dev/null
fi
echo "rsync已经安装"
yum list installed | grep ntpdate.x86_64   &> /dev/null
if [ $? -ne 0 ];then
   yum -y install ntpdate.x86_64   &> /dev/null
fi
echo "ntpdate.x86_64已经安装"
ntpdate cn.ntp.org.cn
sleep 3
#解压软件包
tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar
sleep 3
tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
echo "软件包已经解压"
#转移到指定工作目录
cp -r mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
cd /usr/local/mysql/
#创建工作文件目录
mkdir mysql-files
#创建mysql系统用户
id mysql
if [ $? -ne 0 ];then
    useradd -r -s /sbin/nologin mysql
fi
echo "mysql用户已经创建"
#修改工作文件目录的权限和所属主,所属组
chown mysql:mysql ./mysql-files/
chmod 750 ./mysql-files/
#删除/etc/my.cnf文件
rm -rf /etc/my.cnf
#设置service服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8
#编辑配置文件my.cnf
cat >> /usr/local/mysql/my.cnf << EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
activate_all_roles_on_login=on
port=3310
log-error=/usr/local/mysql/data/db01-slave.err
relay-log=/usr/local/mysql/data/relaylog
server-id=11
character_set_server=utf8mb4
EOF
#数据同步
echo "开始配置数据同步,如果不配置请在3秒内按ctrl+c进行打断"
sleep 3
yum -y install rsync &> /dev/null
if [ $? -eq 0 ];then
    echo "rsync软件已经安装成功"
else
    echo "rsync软件安装失败"
fi
#修改环境变量
sed -i '$aexport PATH=/usr/local/mysql/bin:$PATH' /etc/profile
#激活配置
source /etc/profile
if [ $? -ne 0 ];then
    echo "profile文件激活失败"
fi
echo "完成slave-mysql配置,等待master-mysql同步data"
echo "注意该数据库端口号为3310"
source mysql.sh
两个脚本都运行完之后, 主服务器配置
systemctl stop firewalld                 //关闭防火墙
mysql> alter user 'root'@'localhost' identified by '123';
Query OK, 0 rows affected (0.15 sec)     //修改root密码
mysql> create user 'slave'@'%' identified by '123';
Query OK, 0 rows affected (0.03 sec)      //创建slave用户
mysql> grant replication slave on *.* to 'slave'@'%';
Query OK, 0 rows affected (0.02 sec)      //授予replication slave权限
mysql> flush privileges;                  //重新加载权限表
Query OK, 0 rows affected (0.00 sec)
mysql> flush tables with read lock;       //刷新所有表并施加一个全局读锁
Query OK, 0 rows affected (0.01 sec)
mysql> show master status;                //查看主服务器当前二进制日志的状态信息
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 |     1178 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
从服务器配置
service mysql8 start
source /etc/profile       //激活profile文件
mysql -uslave -p123 -h10.0.0.13 -P3306 --get-server-public-key         //获取服务器的公共密钥
mysql> quit
Bye
mysql -P3310 -p'hz),bpIhb2x+'    //密码为主服务器原先生成的密码
mysql> alter user 'root'@'localhost' identified by '123';
Query OK, 0 rows affected (0.08 sec)   //修改root密码
mysql> change master to
     -> master_host='10.0.0.13',
     -> master_user='slave',
     -> master_password='123',
     -> master_port=3306,
     -> master_log_file='binlog.000003',
     -> master_log_pos=1178;
Query OK, 0 rows affected, 9 warnings (0.02 sec)
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql> show slave status\G
*************************** 1. row ***************************
                Slave_IO_State: Waiting for source to send event
                   Master_Host: 10.0.0.13
                   Master_User: slave
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: binlog.000003
           Read_Master_Log_Pos: 1178
                Relay_Log_File: relaylog.000002
                 Relay_Log_Pos: 323
         Relay_Master_Log_File: binlog.000003
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
主服务器配置
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
基础操作和命令
1、新增
    insert into 库名称.表名(id,username,password) values(1,"abc","123");
    insert into 表名称 values(1,"name","word");
    insert into 表名称 select * from 其他表;
    inster into 表名称 values(),();
2、删除
    delete from 表名;
    delete from tablename where id=3;
    delete from tablename where age>8;
    delect from tablename where name on("a","b","c");
3、修改
    update mysql.user set host='%' where name='root'
    update user set password='abc' where username="zhangsan"
4、查询
    单表查询:select 字段名列表 from 表名,索引;
MySQL 分组查询
语法:
select 聚合函数(表头名 1),表头名 2 from 数据表名 group by 表 头名;
select 聚合函数(表头名) 临时表头名,真实表头名 from 数据表名 group by 真实表头名;
若⽤ group by 分组查询语句,必须加⼊聚合函数,否则报错 (踩坑)
mysql> create table 学⽣表(序号 int,姓名 char(16),年龄 int,班级 int);
Query OK, 0 rows affected (0.01 sec)
#新建⼀个学⽣表,表头有:序号,数字形式;姓名,⽂本字符串形式;年龄,数字形式;班级,数字形式。
mysql> desc 学⽣表;
+--------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra
|
+--------+----------+------+-----+---------+-------+
| 序号   | int(11) | YES |     | NULL   |       
|
| 姓名   | char(16) | YES |     | NULL   |       
|
| 年龄   | int(11) | YES |     | NULL   |       
|
| 班级   | int(11) | YES |     | NULL   |       
|
+--------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)
#展示学⽣表表头信息
insert into 学⽣表 values(1,'tom',15,101);
insert into 学⽣表 values(2,'mike',16,102);
insert into 学⽣表 values(3,'john',14,103);
insert into 学⽣表 values(4,'lili',15,102);
insert into 学⽣表 values(5,'jack',15,101);
insert into 学⽣表 values(6,'xiaoming',17,103);
#向学⽣表内插⼊学⽣信息
mysql> select * from 学⽣表;
+--------+----------+--------+--------+
| 序号   | 姓名     | 年龄   | 班级     |
+--------+----------+--------+--------+
|      1 | tom     |     15 |    101  |
|      2 | mike     |     16 |    102 |
|      3 | john     |     14 |    103 |
|      4 | lili     |     15 |    102 |
|      5 | jack     |     15 |    101 |
|      6 | xiaoming |     17 |    103 |
+--------+----------+--------+--------+
6 rows in set (0.00 sec)
#查看表内学⽣信息
mysql> select avg(年龄) from 学⽣表;
+-------------+
| avg(年龄)   |
+-------------+
|     15.3333 |
+-------------+
1 row in set (0.00 sec)
#计算所有学⽣平均年龄,avg:计算平均值,计算⾮数字,结果为0
mysql> select avg(年龄) from 学⽣表 group by 班级;
+-------------+
| avg(年龄)   |
+-------------+
|     15.0000 |
|     15.5000 |
|     15.5000 |
+-------------+
3 rows in set (0.00 sec)
#通过group by语法计算每个班的学⽣平均年龄
mysql> select avg(年龄) 平均年龄,班级 from 学⽣表 group by 班级;
+--------------+--------+
| 平均年龄   | 班级 |
+--------------+--------+
|      15.0000 |    101 |
|      15.5000 |    102 |
|      15.5000 |    103 |
+--------------+--------+
3 rows in set (0.00 sec)
#“平均年龄”:这个是⾃⼰临时命名的表头名,也可以不写,那么就是下⾯的效果
mysql> select avg(年龄),班级 from 学⽣表 group by 班级;
+-------------+--------+
| avg(年龄) | 班级 |
+-------------+--------+
|     15.0000 |    101 |
|     15.5000 |    102 |
|     15.5000 |    103 |
+-------------+--------+
3 rows in set (0.00 sec)
mysql> select min(年龄) 最⼩年龄,班级 from 学⽣表 group by 班级;
+--------------+--------+
| 最⼩年龄   | 班级 |
+--------------+--------+
|           15 |    101 |
|           15 |    102 |
|           14 |    103 |
+--------------+--------+
3 rows in set (0.00 sec)
#avg也可以改成min最⼩值、max最⼤值、sum加法函数等运算⽅式
mysql> select count(*) 总⼈数,班级 from 学⽣表 group by 班级;
+-----------+--------+
| 总⼈数 | 班级 |
+-----------+--------+
|         2 |    101 |
|         2 |    102 |
|         2 |    103 |
+-----------+--------+
3 rows in set (0.00 sec)
#也可以⽤count统计函数计算每个班的总⼈数
#这些count、avg、max、min、sum就是聚合函数,分组查询必须有这些函数的其⼀
MySQL ⼦语句查询
1、⽐较运算符的⼦查询
也就是⽤“=”、“<”、“>”这类⽐较运算符
mysql> create table class(cid int(4) not null primary key,cname varchar(20));
Query OK, 0 rows affected (0.05 sec)
# 创建班级表
mysql> create table student (sid int(4) not null primary key, sname varchar (20), sage int (2), classid int (4) not null);
Query OK, 0 rows affected (0.03 sec)
# 创建学⽣表
insert into class values(1001,'Java');
insert into class values(1002,'C++');
insert into class values(1003,'Python');
insert into class values(1004,'PHP');
insert into class values(1005,'Android');
# 向班级表插⼊数据
insert into student values(1,'张三',20,1001);
insert into student values(2,'李四',21,1002);
insert into student values(3,'王五',24,1003);
insert into student values(4,'赵六',23,1004);
insert into student values(5,'⼩明',21,1001);
insert into student values(6,'⼩红',26,1001);
insert into student values(7,'⼩亮',27,1002);
# 向学⽣表插⼊数据
mysql> select * from class where cid=(select classid from student where sname='张三');
+------+-------+
| cid | cname |
+------+-------+
| 1001 | Java |
+------+-------+
1 row in set (0.00 sec)
#查询张三同学所在班级的信息
mysql> select * from class where cid>(select classid from student where sname='张三');
+------+---------+
| cid | cname |
+------+---------+
| 1002 | C++ |
| 1003 | Python |
| 1004 | PHP |
| 1005 | Android |
+------+---------+
4 rows in set (0.03 sec)
# 查询⽐张三同学所在班级编号还⼤的班级的信息
2、exists 关键字的⼦查询
exists 关键字后⾯的参数可以是任意⼀个⼦查询, 它不产⽣任何数据,只返回 true 或 false。⽽当返回值为 true 时外层查询才会执⾏。
相当于内层句⼦是⼀个判断句式。
mysql> select * from class where exists (select * from student where sname='王五');
+------+---------+
| cid | cname |
+------+---------+
| 1001 | Java |
| 1002 | C++ |
| 1003 | Python |
| 1004 | PHP |
| 1005 | Android |
+------+---------+
5 rows in set (0.00 sec)
# 假如王五同学在学⽣表中则从班级表查询所有班级信息
MySQL 多表联合查询
1、交叉连接查询
交叉连接返回的结果是被连接的两个表中所有数据⾏的笛卡尔积;
⽐如:集合A={a,b},集合B={0,1,2},则集合A和B的笛卡尔积为 {(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)。所以,交叉连接也被称为笛卡尔连接。
语法: select * from 表1 cross join 表2;
mysql> select * from student cross join class;
+-----+--------+------+---------+------+---------+
| sid | sname | sage | classid | cid | cname |
+-----+--------+------+---------+------+---------+
| 1 | 张三 | 20 | 1001 | 1001 | Java |
| 1 | 张三 | 20 | 1001 | 1002 | C++ |
| 1 | 张三 | 20 | 1001 | 1003 | Python |
| 1 | 张三 | 20 | 1001 | 1004 | PHP |
| 1 | 张三 | 20 | 1001 | 1005 | Android |
| 2 | 李四 | 21 | 1002 | 1001 | Java |
| 2 | 李四 | 21 | 1002 | 1002 | C++ |
| 2 | 李四 | 21 | 1002 | 1003 | Python |
| 2 | 李四 | 21 | 1002 | 1004 | PHP |
| 2 | 李四 | 21 | 1002 | 1005 | Android |
| 3 | 王五 | 24 | 1003 | 1001 | Java |
| 3 | 王五 | 24 | 1003 | 1002 | C++ |
| 3 | 王五 | 24 | 1003 | 1003 | Python |
| 3 | 王五 | 24 | 1003 | 1004 | PHP |
| 3 | 王五 | 24 | 1003 | 1005 | Android |
| 4 | 赵六 | 23 | 1004 | 1001 | Java |
| 4 | 赵六 | 23 | 1004 | 1002 | C++ |
| 4 | 赵六 | 23 | 1004 | 1003 | Python |
| 4 | 赵六 | 23 | 1004 | 1004 | PHP |
| 4 | 赵六 | 23 | 1004 | 1005 | Android |
| 5 | ⼩明 | 21 | 1001 | 1001 | Java |
| 5 | ⼩明 | 21 | 1001 | 1002 | C++ |
| 5 | ⼩明 | 21 | 1001 | 1003 | Python |
| 5 | ⼩明 | 21 | 1001 | 1004 | PHP |
| 5 | ⼩明 | 21 | 1001 | 1005 | Android |
| 6 | ⼩红 | 26 | 1001 | 1001 | Java |
| 6 | ⼩红 | 26 | 1001 | 1002 | C++ |
| 6 | ⼩红 | 26 | 1001 | 1003 | Python |
| 6 | ⼩红 | 26 | 1001 | 1004 | PHP |
| 6 | ⼩红 | 26 | 1001 | 1005 | Android |
| 7 | ⼩亮 | 27 | 1002 | 1001 | Java |
| 7 | ⼩亮 | 27 | 1002 | 1002 | C++ |
| 7 | ⼩亮 | 27 | 1002 | 1003 | Python |
| 7 | ⼩亮 | 27 | 1002 | 1004 | PHP |
| 7 | ⼩亮 | 27 | 1002 | 1005 | Android |
+-----+--------+------+---------+------+---------+
35 rows in set (0.00 sec)
#两个表交叉连接,class表的cid和student表的classid相乘
2、多表联合查询
语法:select 查询字段1,查询字段2, ... from 表1 join 表2 join ... on 表1.关系字段=表2.关系字段=...;
join:联合
on:条件
mysql> select sname,cname from student inner join class on student.classid=class.cid;
+--------+--------+
| sname | cname |
+--------+--------+
| 张三 | Java |
| 李四 | C++ |
| 王五 | Python |
| 赵六 | PHP |
| ⼩明 | Java |
| ⼩红 | Java |
| ⼩亮 | C++ |
+--------+--------+
7 rows in set (0.00 sec)
# 查询学⽣姓名及其所学习的学科
MySQL 触发器
1、概念
触发器是⼀种特殊的存储过程,它在插⼊,删除或修改特定表中的数据时触发执⾏,它⽐数据库本身标准的功能有更精细和更复杂的数据控制能⼒。
1、例如在某⼀个时间触发什么事情
2、例如不允许股票价格的升幅⼀次超过%10
3、审计功能,某⼀个⼈登录会记录所有的操作
2、触发器语法
create trigger 触发器名称 触发的时机 触发的动作 on 表名 for each row 触发器状态
1、语法的红字为固定格式
2、触发器名称:⾃定义
3、触发的时机:before(之前) 或 after(之后),在执⾏动作之前还是之后
4、触发的动作:指的激发触发程序的语句类型(插⼊、更新、删除表或数据等)
5、each row:操作的每⼀⾏都会被监控
6、触发器状态:在触发的动作之前或之后做什么事情,⽐如当我删 了表 1 的某条数据后,⾃动清空表 2。
3、触发器创建的四要素
(1)监视地点:table(表)
(2)监视事件:insert(插⼊)、update(更新)、delete(删除) 等动作
(3)触发时间:before(之前)、after(之后)
(4)触发事件:在监视事件之前或之后,对当前表或其他表的插 ⼊、更新、删除等动作
4、触发器实例
#查看数据库内的所有表
mysql> show tables;
+--------------+
| Tables_in_yh |
+--------------+
| class       |
| it           |
| student     |
+--------------+
3 rows in set (0.00 sec)
#创建触发器规则
#命令⼤意:创建名为deltable的触发器,在执⾏每⼀条的删除class表命令之后,删除student表
mysql> create trigger deltable after delete on class for each row delete from student;
Query OK, 0 rows affected (0.00 sec)
#查看触发器
mysql> show triggers\G;
*************************** 1. row ***************************
              Trigger: deltable
                Event: DELETE
                Table: class
            Statement: delete from student
              Timing: AFTER
              Created: 2023-09-26 20:46:24.53
              sql_mode:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_
DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AU
TO_CREATE_USER,NO_ENGINE_SUBSTITUTION
              Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)
ERROR:
No query specified
#查看当前数据库下的所有数据表
mysql> show tables;
+--------------+
| Tables_in_yh |
+--------------+
| class       |
| it           |
| student     |
+--------------+
3 rows in set (0.00 sec)
#查看⼀下class表的内容,因为要⽤该表做示范
mysql> select * from class;
+------+---------+
| cid | cname   |
+------+---------+
| 1001 | Java   |
| 1002 | C++     |
| 1003 | Python |
| 1004 | PHP     |
| 1005 | Android |
+------+---------+
5 rows in set (0.01 sec)
#查看⼀下student表的内容,因为要⽤该表做示范
mysql> select * from student;
+-----+----------+------+---------+
| sid | sname   | sage | classid |
+-----+----------+------+---------+
|   1 | mike     |   17 |    1001 |
|   2 | john     |   18 |    1002 |
|   3 | lili     |   19 |    1003 |
|   4 | zhangsan |   20 |    1004 |
|   5 | tom     |   21 |    1005 |
+-----+----------+------+---------+
5 rows in set (0.00 sec)
#删除class表中cid为1005的整⾏数据,也就是执⾏之前设置的触发动作
mysql> delete from class where cid=1005;
Query OK, 1 row affected (0.00 sec)
#因为触发器执⾏,所以student表的内容在class表的删除动作后被清空
mysql> select * from student;
Empty set (0.00 sec)
#删除触发器
mysql> drop trigger deltable;
Query OK, 0 rows affected (0.00 sec)
MySQL 存储引擎
(1)查看数据库使⽤的存储引擎
mysql> use yh; #查看存储引擎时,必须要切换到某个数据库
Database changed
mysql> show tables; #查看当前yh数据库下的所有数据表
+--------------+
| Tables_in_yh |
+--------------+
| class       |
| it           |
| student     |
+--------------+
3 rows in set (0.00 sec)
mysql> show table status \G; #查看所有数据表的存储引擎
*************************** 1. row ***************************
            Name: class
          Engine: InnoDB #存储引擎,常⽤的还有MyISAM
    Create_time: 2023-09-25 09:27:28 #数据表创建时间
    Update_time: 2023-09-26 20:57:20 #数据表更新时间
*************************** 2. row ***************************
            Name: it
          Engine: InnoDB #存储引擎
    Create_time: 2023-09-25 17:55:38 #数据表创建时间
*************************** 3. row ***************************
            Name: student
            Engine: InnoDB
    Create_time: 2023-09-25 10:16:48 #数据表创建时间
    Update_time: 2023-09-26 20:57:20
mysql> show table status where name='class' \G;
#也可查看单个数据表的存储引擎
*************************** 1. row ***************************
            Name: class
            Engine: InnoDB #存储引擎
        Version: 10
      Row_format: Dynamic
            Rows: 4
  Avg_row_length: 4096
    Data_length: 16384
Max_data_length: 0
    Index_length: 0
      Data_free: 0
  Auto_increment: NULL
    Create_time: 2023-09-25 09:27:28 #创建时间
    Update_time: 2023-09-26 20:57:20 #更新时间
      Check_time: NULL
      Collation: latin1_swedish_ci
        Checksum: NULL
  Create_options:
        Comment:
1 row in set (0.00 sec)
ERROR:
No query specified
(2)创建表并指定存储引擎
mysql> create table haha(id int) engine=MyISAM;
#创建表haha,并添加数字形式的表头id,指定haha表的存储引擎为MyISAM
Query OK, 0 rows affected (0.00 sec)
mysql> show table status where name='haha' \G;
#查看haha表的存储引擎及其他状态信息
*************************** 1. row ***************************
            Name: haha
          Engine: MyISAM #存储引擎
(3)修改已存在数据表的存储引擎
mysql> alter table haha engine=InnoDB; #修改已存在的数据表haha的存储引擎
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show table status where name='haha' \G;
#查看haha表状态及存储引擎
*************************** 1. row ***************************
            Name: haha
          Engine: InnoDB #存储引擎
(4)修改 MySQL 服务的默认存储引擎
[root@localhost ~]# vim /etc/my.cnf
[mysqld]
default-storage-engine=InnoDB   #添加此⾏,当以后再创建表时,存储引擎将改为InnoDB

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值