关于mysql面试题

1 . 在数据表中添加一个名为userid的字段。
用于记住谁使用它。
进入php页面时,输入当前人员ID。
当您完成工作或直接退出时,您将删除您的用户 ID。
别人进入php页面时,首先检查用户ID是否为空。
如果不是空的,就不要让他进来。

2 .使用锁定和解锁。
首先执行命令mysql>LOCK TABLES real_table WRITE,insert_table WRITE;锁定 real_table 和 insert_table 进行写操作。
然后 mysql> INSERT INTO real_table SELECT FROM insert_table;将所有 insert_table 数据移动到 real_table。
移动完成后,mysql> TRUNCATETABLE insert_table;删除insert_table。
最后mysql>解锁表;解锁。

3 完成INSERT操作后,mysql_insert_id()可以获得新插入的id。
此功能是专门为此而设计的。

4 select last_insert_id() 也获取刚刚插入的 id。
这个比较通用,不限制是哪个表。
2 008 年的MySQL手册提到了这个特性。

MYSQL 面试题二:SELECT * 和 SELECT 全部字段的优缺点

扩展一下,SELECT是最省事的,但去年我们跑的一个高并发项目中,因为用SELECT将一个2 0字段日志表的数据全部传回来,直接烧掉网线——3 000级别的QPS卡在1 秒生成结果。
其次,当表结构发生变化时,SELECT 非常方便。
例如,当我们更改测试表时,我们可以在不更改SQL的情况下添加字段。
然而很多人没有注意到这一点,导致在网上查数据的时候,结果突然发现一堆乱码。
还有一个更重要的细节。
例如,包含 ID 和名称的表有一个索引。
当使用 SELECT 时,数据库会变得混乱,因为它必须返回表来查找所有字段。
这称为雪崩效应。
事实上,稍微拖延一点,一切都会落后。

我一开始以为显式列出字段名是万能的,但后来发现这是错误的。
为了避免麻烦,同事复制了最终的 SQL。
结果改变表的列顺序后整个应用程序就瘫痪了。
等等,还有一件事。
明确列出字段名称使代码更加清晰。
然而,我们在重构过程中花了两天时间才解决这个问题,因为其他人更改了字段名称,但显然硬编码的 SQL 并没有相应更改。
说实话,还是挺让人失望的。

建议别非黑即白,小表或临时查询用选择爽歪歪,你觉得呢?