点击关注公众号,SQL干货及时获取
后台回复:1024,获取海量学习资源
SQL刷题专栏
SQL145题系列
传网易老板丁磊在公司内部群里被“怼”了。
7月5日,一个名为“超越War3”的聊天群里的截图,在网上流传,并登上了某职场网站的热搜。
据悉丁磊在群里分享了一条与网易游戏相关的新闻,并配文称“加油”。
紧接着,群里就出现了各种点赞的表情,大家纷纷给丁磊大佬捧场,大拇指那是一个接着一个。
然而,就在这时,一个不一样的声音出现了。
一个名叫“石佳煊”的员工站了出来,他直接@了丁磊,并毫不客气地指出:
何必呢,每个群每天几十个人陪你演戏点赞,PM还要挨个催,假装一片和谐景象,有些人说你越来越像徐波了。
这句话一出,群里瞬间安静了下来。
徐波何许人也?那可是多益网络的创始人兼CEO,能和徐波相提并论,那明显就不是一般人了。
这位仁兄,是来自华盛顿大学的高材生,入职网易已经四年多,游戏开发工程师。
这“爆料”一出,立马在网上引起了轩然大波。大家纷纷猜测:这石佳煊是不是不想干了?
果不其然,没过多久,就有网友爆料说,石佳煊已经从网易离职了。这速度之快,让人不得不佩服这哥们儿的勇气。
不过据网友爆料,这位仁兄之前就不想干了。

我就说嘛,干得好好的兄弟,怎么会随便乱怼领导呢?
另外,据说丁总气的不是被骂,而是竟然有人催点赞,催点赞这种行为在我们这种垃圾氛围的公司都还没有呢。但也有人说这是网易的公关手段而已。
一些员工表示,石佳煊的言论虽然有些冒失,但也反映出了公司内部的一些真实问题。比如形式主义、言论不自由等等。
以下是今天的SQL干货
问题1:char、varchar的区别是什么?
varchar是变长而char的长度是固定的。如果你的内容是固定大小的,你会得到更好的性能。
问题2: TRUNCATE和DELETE的区别是什么?
DELETE命令从一个表中删除某一行,或多行,TRUNCATE命令永久地从表中删除每一行。
问题3:什么是触发器,MySQL中都有哪些触发器?
触发器是指一段代码,当触发某个事件时,自动执行这些代码。在MySQL数据库中有如下六种触发器:
1、Before Insert
2、After Insert
3、Before Update
4、After Update
5、Before Delete
6、After Delete
问题4:FLOAT和DOUBLE的区别是什么?
FLOAT类型数据可以存储至多8位十进制数,并在内存中占4字节。
DOUBLE类型数据可以存储至多18位十进制数,并在内存中占8字节。
问题5:如何在MySQL种获取当前日期?
SELECT CURRENT_DATE();
问题6:如何查询第n高的工资?
SELECT DISTINCT(salary) from employee ORDER BY salary DESC LIMIT n-1,1
问题7:请写出下面MySQL数据类型表达的意义(int(0)、char(16)、varchar(16)、datetime、text)
1、整数类型,包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,分别表示1字节、2字节、3字节、4字节、8字节整数。任何整数类型都可以加上UNSIGNED属性,表示数据是无符号的,即非负整数。 长度:整数类型可以被指定长度,例如:INT(11)表示长度为11的INT类型。长度在大多数场景是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数,而且需要和UNSIGNED ZEROFILL属性配合使用才有意义。 例子,假定类型设定为INT(5),属性为UNSIGNED ZEROFILL,如果用户插入的数据为12的话,那么数据库实际存储数据为00012。
2、实数类型,包括FLOAT、DOUBLE、DECIMAL。 DECIMAL可以用于存储比BIGINT还大的整型,能存储精确的小数。 而FLOAT和DOUBLE是有取值范围的,并支持使用标准的浮点进行近似计算。 计算时FLOAT和DOUBLE相比DECIMAL效率更高一些,DECIMAL你可以理解成是用字符串进行处理。
3、字符串类型,包括VARCHAR、CHAR、TEXT、BLOB VARCHAR用于存储可变长字符串,它比定长类型更节省空间。 VARCHAR使用额外1或2个字节存储字符串长度。列长度小于255字节时,使用1字节表示,否则使用2字节表示。 VARCHAR存储的内容超出设置的长度时,内容会被截断。 CHAR是定长的,根据定义的字符串长度分配足够的空间。 CHAR会根据需要使用空格进行填充方便比较。 CHAR适合存储很短的字符串,或者所有值都接近同一个长度。 CHAR存储的内容超出设置的长度时,内容同样会被截断。
使用策略: 对于经常变更的数据来说,CHAR比VARCHAR更好,因为CHAR不容易产生碎片。 对于非常短的列,CHAR比VARCHAR在存储空间上更有效率。 使用时要注意只分配需要的空间,更长的列排序时会消耗更多内存。 尽量避免使用TEXT/BLOB类型,查询时会使用临时表,导致严重的性能开销。
4、枚举类型(ENUM),把不重复的数据存储为一个预定义的集合。 有时可以使用ENUM代替常用的字符串类型。 ENUM存储非常紧凑,会把列表值压缩到一个或两个字节。 ENUM在内部存储时,其实存的是整数。 尽量避免使用数字作为ENUM枚举的常量,因为容易混乱。 排序是按照内部存储的整数
5、日期和时间类型,尽量使用timestamp,空间效率高于datetime, 用整数保存时间戳通常不方便处理。 如果需要存储微妙,可以使用bigint存储。 看到这里,这道真题是不是就比较容易回答了。
答:int(0)表示数据是INT类型,长度是0、char(16)表示固定长度字符串,长度为16、varchar(16)表示可变长度字符串,长度为16、datetime表示时间类型、text表示字符串类型,能存储大字符串,最多存储65535字节数据)
MySQL常见操作
MySQL的连接和关闭:mysql -u -p -h -P
-u:指定用户名
-p:指定密码
-h:主机
-P:端口
进入MySQL命令行后:G、c、q、s、h、d
G:打印结果垂直显示
c:取消当前MySQL命令
q:退出MySQL连接
s:显示服务器状态
h:帮助信息
d:改变执行符
MySQL存储引擎
1、InnoDB存储引擎,
默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀。
数据存储在共享表空间,可以通过配置分开。也就是多个表和索引都存储在一个表空间中,可以通过配置文件改变此配置。
对主键查询的性能高于其他类型的存储引擎。
内部做了很多优化,从磁盘读取数据时会自动构建hash索引,插入数据时自动构建插入缓冲区。
通过一些机制和工具支持真正的热备份。
支持崩溃后的安全恢复。
支持行级锁。
支持外键。
2、MyISAM存储引擎,
拥有全文索引、压缩、空间函数。
不支持事务和行级锁、不支持崩溃后的安全恢复。
表存储在两个文件,MYD和MYI。
设计简单,某些场景下性能很好,例如获取整个表有多少条数据,性能很高。
全文索引不是很常用,不如使用外部的ElasticSearch或Lucene。
3、其他表引擎, Archive、Blackhole、CSV、Memory
使用策略 在大多数场景下建议使用InnoDB存储引擎。
我建了一个AI相关的知识库,包含ChatGPT,Midjourney,Stable Diffusion等流行的AI工具的用法和一些变现方式,在下方公众号(非本号)后台回复:AIGC,即可获取访问方式。
后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群
推荐阅读