无论是运维, 开发, 测试, 还是架构师, 数据库技术是一个必备加薪神器, 那么, 一直说学习数据库, 学 MySQL, 到底是要学习它的哪些东西呢?
带你了解 10 个 MySQL 数据库技巧(一)
01 MySQL 中如何使用特殊字符?
诸如单引号 ('), 双引号("), 反斜线() 等符号, 这些符号在 MySQL 中不能直接输入 使用, 否则会产生意料之外的结果. 在 MySQL 中, 这些特殊字符称为转义字符, 在输入时需要 以反斜线符号 ('') 开头, 所以在使用单引号和双引号时应分别输入 (') 或者 ("), 输入反 斜线时应该输入(), 其他特殊字符还有回车符( ), 换行符( ), 制表符(ab), 退格 符() 等. 在向数据库中插入这些特殊字符时, 一定要进行转义处理.
02 MySQL 中可以存储文件吗?
MySQL 中的 BLOB 和 TEXT 字段类型可以存储数据量较大的文件, 可以使用这些数据类型 存储图像, 声音或者是大容量的文本内容, 例如网页或者文档. 虽然使用 BLOB 或者 TEXT 可 以存储大容量的数据, 但是对这些字段的处理会降低数据库的性能. 如果并非必要, 可以选择只 储存文件的路径.
03 MySQL 如何执行区分大小写的字符串比较?
在 Windows 平台下, MySQL 是不区分大小的, 因此字符串比较函数也不区分大小写. 如果 想执行区分大小写的比较, 可以在字符串前面添加 BINARY 关键字. 例如默认情况下,'a'='A' 返回结果为 1, 如果使用 BINARY 关键字, BINARY'a'='A'结果为 0, 在区分大小写的情况下,'a' 与'A'并不相同.
04 如何从日期时间值中获取部分日期或时间值?
MySQL 中, 日期时间值以字符串形式存储在数据表中, 因此可以使用字符串函数分别截取日期时间值的不同部分, 例如某个名称为 dt 的字段有值 "2010-10-01 12:00:30", 如果只需要获 得年值, 可以输入 LEFT(dt, 4), 这样就获得了字符串左边开始长度为 4 的子字符串, 即 YEAR 部分的值; 如果要获取月份值, 可以输入 MID(dt,6,2), 字符串第 6 个字符开始, 长度为 2 的子 字符串正好为 dt 中的月份值. 同理, 读者可以根据其他日期和时间的位置, 计算并获取相应的值.
05 如何改变默认的字符集?
CONVERT()函数改变指定字符串的默认字符集, 在开始的章节中, 向读者介绍使用 GUI 图形化安装配置工具进行 MySQL 的安装和配置, 其中的一个步骤是可以选择 MySQL 的默认字符集. 但是, 如果只改变字符集, 没有必要把配置过程重新执行一遍, 在这里, 一个简单的方式是 修改配置文件.
在 Windows 中, MySQL 配置文件名称为 my.INI, 该文件在 MySQL 的安装目录下面. 修改配置文件中的 default-character-set 和 character-set-server 参数值, 将其改为想要的字 符集名称, 如 gbk,gb2312,latinl 等, 修改完之后重新启动 MySQL 服务, 即可生效. 读者可以在修改字符集时使用 SHOW VARIABLES LIKE 'character_set_°%'; 命令查看当前字符集, 以进行对比.
06 DISTINCT 可以应用于所有的列吗?
查询结果中, 如果需要对列进行降序排序, 可以使用 DESC, 这个关键字只能对其前面的列 进行降序排列. 例如, 要对多列都进行降序排序, 必须要在每一列的列名后面加 DESC 关键字.
而 DISTINCT 不同, DISTINCT 不能部分使用. 换句话说, DISTINCT 关键字应用于所有列而不 仅是它后面的第一个指定列. 例如, 查询 3 个字段 s_id,f_name,f_price, 如果不同记录的这 3 个字段的组合值都不同, 则所有记录都会被查询出来.
07 ORDER BY 可以和 LIMIT 混合使用吗?
在使用 ORDER BY 子句时, 应保证其位于 FROM 子句之后, 如果使用 LIMIT, 则必须位 于 ORDER BY 之后, 如果子句顺序不正确, MySQL 将产生错误消息.
08 什么时候使用引号?
在查询的时候, 会看到在 WHERE 子句中使用条件, 有的值加上了单引号, 而有的值未加. 单引号用来限定字符串, 如果将值与字符串类型列进行比较, 则需要限定引号; 而用来与数值进 行比较则不需要用引号.
09 在 WHERE 子句中必须使用圆括号吗?
任何时候使用具有 AND 和 OR 操作符的 WHERE 子句, 都应该使用圆括号明确操作顺序. 如果条件较多, 即使能确定计算次序, 默认的计算次序也可能会使 SQL 语句不易理解, 因此使 用括号明确操作符的次序, 是一个好的习惯.
10 更新或者删除表必须指定 WHERE 子句吗?
在前面中可以看到, 所有的 UPDATE 和 DELETE 语句全都在 WHERE 子句中指定了条 件. 如果省略 WHERE 子句, 则 UPDATE 或 DELETE 将被应用到表中所有的行.
因此, 除非 确实打算更新或者删除所有记录, 否则要注意使用不带 WHERE 子句的 UPDATE 或 DELETE 语句. 建议在对表进行更新和删除操作之前, 使用 SELECT 语句确认需要删除的记录, 以免造 成无法挽回的结果.
来源: http://database.51cto.com/art/201810/585624.htm