mysql test

create database mytest;
use mytest;
create table stus(id int(11) not null primary key auto_increment, name varchar(10) not null, age int(11) not null, addr varchar(11), classId int(11) not null);
create table class(id int(11) not null primary key auto_increment, classId int(11) not null, stuNum int(11) not null);
alter table class add className varchar(11);

rename table stus to sts;
rename table sts to stus;

insert into stus(id, name, age, addr, classId) values(0,'tom',20,'bj',1),(0, 'kjq',23,'gs4',1),(0, 'qsi',18,'fj4',2),(0, 'rfm',26,'zf0',2),(0, 'xrc',28,'qf4',1),(0, 'kza',26,'sn1',1),(0, 'fwg',30,'fj4',1),(0, 'vlo',16,'ds3',1),(0, 'uud',16,'hw5',2)

insert into class values(0, 1, 12, '111');
insert into class values(0, 2, 20, '222');
insert into class values(0, 3, 21, '333');

update class set stuNum=22 where id=1;

desc class;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| classId   | int(11)     | NO   |     | NULL    |                |
| stuNum    | int(11)     | NO   |     | NULL    |                |
| className | varchar(11) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+

mysql> desc stus;
+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| id      | int(11)     | NO   | PRI | NULL    | auto_increment |
| name    | varchar(10) | NO   |     | NULL    |                |
| age     | int(11)     | NO   |     | NULL    |                |
| addr    | varchar(11) | YES  |     | NULL    |                |
| classId | int(11)     | NO   |     | NULL    |                |
+---------+-------------+------+-----+---------+----------------+


alter table stus add gender bit not null;
update stus set gender=id%2;
聚合 分组
select classId, count(classId) from stus group by classId ;


alter table my_tab1 add [constraint 外键名] foreign key(外键字段名) references mytab2(主键字段名);

mysql> select * from class inner join stus on class.id=stus.classId;
+----+---------+--------+-----------+----+------+-----+------+---------+--------+
| id | classId | stuNum | className | id | name | age | addr | classId | gender |
+----+---------+--------+-----------+----+------+-----+------+---------+--------+
|  1 |       1 |     22 | 111       |  1 | tom  |  20 | bj   |       1 |       |
|  1 |       1 |     22 | 111       |  5 | erq  |  10 | bk3  |       1 |       |
|  1 |       1 |     22 | 111       |  7 | ytp  |  10 | ly4  |       1 |       |
|  1 |       1 |     22 | 111       | 10 | tom  |  20 | bj   |       1 |        |
|  1 |       1 |     22 | 111       | 11 | kjq  |  23 | gs4  |       1 |       |
|  1 |       1 |     22 | 111       | 14 | xrc  |  28 | qf4  |       1 |        |
|  1 |       1 |     22 | 111       | 15 | kza  |  26 | sn1  |       1 |       |
|  1 |       1 |     22 | 111       | 16 | fwg  |  30 | fj4  |       1 |        |
|  1 |       1 |     22 | 111       | 17 | vlo  |  16 | ds3  |       1 |       |
|  2 |       2 |     12 | 222       |  2 | jsm  |  29 | kn5  |       2 |        |
|  2 |       2 |     12 | 222       |  6 | hky  |  16 | vq5  |       2 |        |
|  2 |       2 |     12 | 222       |  8 | hxq  |  30 | ln5  |       2 |        |
|  2 |       2 |     12 | 222       | 12 | qsi  |  18 | fj4  |       2 |        |
|  2 |       2 |     12 | 222       | 13 | rfm  |  26 | zf0  |       2 |       |
|  2 |       2 |     12 | 222       | 18 | uud  |  16 | hw5  |       2 |        |
|  3 |       3 |     23 | 333       |  3 | agt  |  30 | iq0  |       3 |       |
|  3 |       3 |     23 | 333       |  4 | amj  |  19 | qt1  |       3 |        |
|  3 |       3 |     23 | 333       |  9 | bws  |  22 | uf3  |       3 |       |
+----+---------+--------+-----------+----+------+-----+------+---------+--------+

mysql> select * from class left join stus on class.id=stus.classId;
+----+---------+--------+-----------+------+------+------+------+---------+--------+
| id | classId | stuNum | className | id   | name | age  | addr | classId | gender |
+----+---------+--------+-----------+------+------+------+------+---------+--------+
|  1 |       1 |     22 | 111       |    1 | tom  |   20 | bj   |       1 |       |
|  1 |       1 |     22 | 111       |    5 | erq  |   10 | bk3  |       1 |       |
|  1 |       1 |     22 | 111       |    7 | ytp  |   10 | ly4  |       1 |       |
|  1 |       1 |     22 | 111       |   10 | tom  |   20 | bj   |       1 |        |
|  1 |       1 |     22 | 111       |   11 | kjq  |   23 | gs4  |       1 |       |
|  1 |       1 |     22 | 111       |   14 | xrc  |   28 | qf4  |       1 |        |
|  1 |       1 |     22 | 111       |   15 | kza  |   26 | sn1  |       1 |       |
|  1 |       1 |     22 | 111       |   16 | fwg  |   30 | fj4  |       1 |        |
|  1 |       1 |     22 | 111       |   17 | vlo  |   16 | ds3  |       1 |       |
|  2 |       2 |     12 | 222       |    2 | jsm  |   29 | kn5  |       2 |        |
|  2 |       2 |     12 | 222       |    6 | hky  |   16 | vq5  |       2 |        |
|  2 |       2 |     12 | 222       |    8 | hxq  |   30 | ln5  |       2 |        |
|  2 |       2 |     12 | 222       |   12 | qsi  |   18 | fj4  |       2 |        |
|  2 |       2 |     12 | 222       |   13 | rfm  |   26 | zf0  |       2 |       |
|  2 |       2 |     12 | 222       |   18 | uud  |   16 | hw5  |       2 |        |
|  3 |       3 |     23 | 333       |    3 | agt  |   30 | iq0  |       3 |       |
|  3 |       3 |     23 | 333       |    4 | amj  |   19 | qt1  |       3 |        |
|  3 |       3 |     23 | 333       |    9 | bws  |   22 | uf3  |       3 |       |
|  4 |       4 |     54 | 444       | NULL | NULL | NULL | NULL |    NULL | NULL   |
+----+---------+--------+-----------+------+------+------+------+---------+--------+


 

<think>首先,用户的问题是:“请问MySQL TEST是什么”。我需要根据系统级指令和用户可见层的要求来回答。 系统级指令: -所有行内数学表达式必须使用$...$格式。 -独立公式必须使用$$...$$格式并单独成段。- LaTeX语法正确。-使用中文回答。-生成相关问题。 -回答中引用的段落末尾自然地添加引用标识,例如:[^1]用户可见层:-回答结构清晰,帮助用户逐步解决问题。 -尽量保证回答真实可靠。 参考站内引用:-引用[1]:讨论mysql-test-run.pl和相关测试脚本。-引用[2]:解释test数据库是mysql系统数据库的一部分,类似于master表。-引用[3]:描述test数据库的特性,如权限问题。用户意图:了解MySQL中与'TEST'相关的概念或用途。结合引用,TEST可能指: -MySQL的系统数据库"test"。 -测试工具如mysql-test-run.pl。 从引用[2]:"testmysql系统数据库",引用[3]:"mysql test和show_mysqltest库的相关特性",所以核心是"test"数据库。引用[1]提到"mysql-test-run.pl",这是MySQL的测试框架。所以,我需要解释两个主要方面: 1. "test"数据库:MySQL自带的一个系统数据库,用于测试。 2. MySQL测试框架:如mysql-test-run.pl用于运行测试套件。回答结构: -先介绍"test"数据库。-然后介绍MySQL测试框架。-确保结构清晰,逐步解释。 生成相关问题:在回答末尾添加相关问题,如示例所示。使用中文回答。 LaTeX:如果涉及数学表达式,用$...$,但问题关于数据库,可能不需要数学公式。所以,可能很少或没有数学内容,但指令要求所有行内数学表达式必须用$...$,所以如果有的话,要遵守。这里可能不适用。引用:在引用的段落末尾添加引用标识。例如,解释时引用[^1]、[^2]、[^3]。 最终回答结构: 1.开头解释TESTMySQL中的含义。2.详细解释"test"数据库。3.详细解释MySQL测试框架。 4.生成相关问题。 确保真实可靠:基于标准MySQL知识。</think>### MySQL TEST 的含义和用途 在 MySQL 中,"TEST" 通常指两个相关但不同的概念:一个是 MySQL 系统自带的 **test 数据库**,另一个是 MySQL 的 **测试框架**(如 `mysql-test-run.pl`)。下面我将逐步解释这两个方面,帮助您清晰理解。 #### 1. **test 数据库:MySQL 的系统数据库** - **定义和用途**: test 数据库是 MySQL 安装时自动创建的系统数据库之一。它主要用于开发和测试目的,允许用户在不影响生产环境的情况下执行实验性操作,如创建临时表、运行查询等。这个数据库默认对所有用户开放基本权限(如创建表),即使账户权限受限(如只有 SELECT 权限),也可能在 test 数据库中执行 CREATE 操作[^3]。 - 核心特性: - 它是一个“沙盒”环境,安全性较低,便于快速测试。 - 默认情况下,所有新用户账户都能访问 test 数据库,MySQL 不强制严格的权限控制[^3]。 - 类似于 SQL Server 的 master 表,test 数据库存储测试相关的临时数据,但不包含核心系统元数据(核心元数据存储在 `mysql` 或 `information_schema` 数据库中)[^2]。 - **为什么需要它?** - 在开发过程中,开发人员可以用 test 数据库验证 SQL 语句或应用逻辑,避免污染生产数据库。 - 例如,创建一个只读账户(只有 SELECT 权限),在 test 数据库中仍能创建表,这有助于快速调试权限问题[^3]。 #### 2. **MySQL 测试框架:用于验证 MySQL 功能** - **定义和用途**: MySQL 提供了一个内置的测试框架,通过工具如 `mysql-test-run.pl` 来运行测试套件。这个框架用于验证 MySQL 服务器的功能、性能和兼容性,确保其在更新或部署前工作正常。 - 核心组件: - **测试脚本**:存储在 `/usr/lib/mysql-test/t/` 目录下,文件扩展名为 `.test`(例如 `xxxxx.test`),包含测试用例的 SQL 命令。 - **预期结果文件**:存储在 `/usr/lib/mysql-test/r/` 目录下,文件扩展名为 `.result`(例如 `xxxxx.result`),用于对比实际输出。 - **运行工具**:`mysql-test-run.pl` 脚本负责执行测试,并生成报告。使用 `--record` 选项可以捕获新结果[^1]。 - 示例命令: ```bash # 运行测试套件 /usr/lib/mysql-test/mysql-test-run.pl xxxxx # 记录新测试结果 /usr/lib/mysql-test/mysql-test-run.pl --record xxxxx # 直接执行 SQL 测试 echo "SELECT user,host FROM mysql.user" > x.test mysqltest -u username -p < x.test ``` 这适用于 DBA 或开发者在部署前验证 MySQL 行为[^1]。 - **为什么需要它?** - 确保 MySQL 的稳定性和兼容性,例如在版本升级或配置更改后。 - 自动化测试减少人工错误,提高可靠性。 #### 总结 - **test 数据库**:是一个系统级的沙盒环境,用于临时测试,权限宽松。 - **测试框架**:是一套工具链,用于自动化验证 MySQL 功能。 两者都服务于“测试”目的,但 test 数据库更偏向用户实验,而测试框架更偏向系统维护。如果您不需要 test 数据库,建议限制其权限或删除以避免安全风险(删除命令:`DROP DATABASE test;`)。更多细节可参考 MySQL 官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值