学习 MySQL 需要知道的 28 个小技巧
随着信息技术的不断发展以及互联网行业的高速增长,作为开源数据库的MySQL得到了广泛的应用和发展。目前MySQL已成为关系型数据库领域中非常重要的一员。
无论是运维、开发、测试,还是架构师,数据库技术都是一个 必备加薪神器,那么,一直说学习数据库、学 MySQL,到底是要学习它的哪些东西呢?
如何快速掌握 MySQL?
培养兴趣
兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率。不管学习 MySQL5.7
还是 MySQL8.0
都不例外!
夯实 SQL 基础
计算机领域的技术非常强调基础,刚开始学习可能还认识不到这一点。随着技术应用的深 入,只有有着扎实的基础功底,才能在技术的道路上走得更快、更远。对于 MySQL 的学习来说, SQL 语句 是其中最为基础的部分,很多操作都是通过 SQL 语句来实现的。所以在学习的过程中, 读者要多编写 SQL 语句,对于同一个功能,使用不同的实现语句来完成,从而深刻理解其不同之处。
及时学习新知识
正确、有效地利用搜索引擎,可以搜索到很多关于 MySQL 的相关知识。同时,参考别 人解决问题的思路,也可以吸取别人的经验,及时获取最新的技术资料。
多实践操作
数据库系统具有极强的操作性,需要多动手上机操作。在实际操作的过程中才能发现问题, 并思考解决问题的方法和思路,只有这样才能提高实战的操作能力。
下面分享学习 MySQL 的 28 个不得不知道的小技巧!
1、MySQL 中如何使用特殊字符?
诸如单引号 '
,双引号 "
,反斜线 \
等符号,这些符号在 MySQL 中不能直接输入使用,否则会产生意料之外的结果。
举例:
假设 Lucifer 表中需要存入一行记录,值为 lucifer's dog
,其中的单引号 '
号,如果不做转义,则无法成功执行:
mysql> create table lucifer (id int,name char(100)); Query OK, 0 rows affected (0.02 sec) mysql> insert into lucifer values (1,'lucifer's dog'); '> '> mysql> ^C mysql>登录后复制
mysql> create table lucifer (id int,name char(100)); Query OK, 0 rows affected (0.03 sec) mysql> insert into lucifer values (1,'lucifer\'s dog'); Query OK, 1 row affected (0.00 sec) mysql> select * from lucifer; +------+---------------+ | id | name | +------+---------------+ | 1 | lucifer's dog | +------+---------------+ 1 row in set (0.00 sec) mysql>登录后复制
2、MySQL 中可以存储文件吗?
答案当然是可以的!
MySQL 中的 BLOB
和 TEXT
字段类型可以存储数据量较大的文件,可以使用这些数据类型 存储图像、声音或者是大容量的文本内容,例如网页或者文档。
mysql> create table view(id int unsigned NOT NULL AUTO_INCREMENT, catid int,title varchar(256),picture MEDIUMBLOB, content TEXT,PRIMARY KEY (id)); Query OK, 0 rows affected (0.03 sec) mysql> show fields from view; +---------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+----------------+ | id | int unsigned | NO | PRI | NULL | auto_increment | | catid | int | YES | | NULL | | | title | varchar(256) | YES | | NULL | | | picture | mediumblob | YES | | NULL | | | content | text | YES | | NULL | | +---------+--------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) mysql>登录后复制
? 注意: 如果并非必要,可以选择只储存文件的路径。
3、MySQL 中如何执行区分大小写的字符串比较?
MySQL 是 不区分大小写 的,因此字符串比较函数也不区分大小写。
mysql> select 'TRUE' from dual where 'DOG' = 'dog'; +------+ | TRUE | +------+ | TRUE | +------+ 1 row in set (0.00 sec)登录后复制
mysql> select 'TRUE' from dual where BINARY'DOG' = 'dog'; Empty set (0.00 sec) mysql>登录后复制
4、如何从日期时间值中获取年、月、日等部分日期或时间值?
MySQL 中,日期时间值以字符串形式存储在数据表中,因此可以使用字符串函数分别截取日期时间值的不同部分。
mysql> create table lucifer(date date); Query OK, 0 rows affected (0.04 sec) mysql> show fields from lucifer; +-------+------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------+------+-----+---------+-------+ | date | date | YES | | NULL | | +-------+------+------+-----+---------+-------+ 1 row in set (0.00 sec) mysql> insert into lucifer values (now()); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select * from lucifer; +------------+ | date | +------------+ | 2021-11-25 | +------------+ 1 row in set (0.00 sec)登录后复制
mysql> select LEFT(date, 4) from lucifer; +---------------+ | LEFT(date, 4) | +---------------+ | 2021 | +---------------+ 1 row in set (0.00 sec)登录后复制
mysql> select MID(date,6,2) from lucifer; +---------------+ | MID(date,6,2) | +---------------+ | 11 | +---------------+ 1 row in set (0.00 sec)登录后复制