Fork me on GitHub

MySQL小记

整理的10个MySQL数据库小技巧。

MySQL中如何使用特殊字符?

    诸如单引号,双引号,反斜线等符号,这些符号在MySQL中不能直接输入使用,否则会产生意料之外的结果。在MySQL中,这些特殊字符称为转义字符,在输入时需要以反斜线符号开头。在向数据库中插入这些特殊字符时,一定要进行转义处理。

MySQL中可以存储文件吗?

    MySQL中的BLOB和TEXT字段可以存储数据量较大的文件,可以使用这些数据类型存储图像、声音或者是大容量的文本内容,例如网页或者文档。虽然使用BLOB或者TEXT可以存储大容量的数据,但是对这些字段的处理会降低数据库的性能。如果并非必要,可以选择只储存文件的路径。

MySQL如何执行区分大小写的字符串比较?

    在Windows平台下,MySQL是不区分大小写的,因此字符串比较函数也不区分大小写。如果想执行区分大小写的比较,可以在字符串前面添加BINARY关键字。例如默认情况下,’a’= ‘A’返回结果为1,如果使用BINARY关键字,BINARY ‘a’= ‘A’ 的结果为0,在区分大小写的情况下,’a’= ‘A’并不相同。

如何从日期时间值中获取部分日期或时间值?

    MySQL中,日期时间值以字符串形式存储在数据表中,因此可以使用字符串函数分别截取日期时间值的不同部分,例如某个名称为dt的字段有值”2018-10-25 12:00:30”,如果只需要获得年值,可以输入LEFT(dt, 4),这样就获得了字符串左边开始长度为4的子字符串,即YEAR部分的值;如果要获取月份值。同理,读者可以根据其他日期和时间的位置,计算并获取相应的值。

如何改变默认的字符集?

    CONVERT()函数改变指定字符串的默认字符集,在开始的章节中,向读者介绍使用GUI图形化安装配置工具进行MySQL的安装和配置,其中的一个步骤是可以选择MySQL的默认字符集。但是,如果只改变字符集,没有必要把配置过程重新执行一遍。在这里,一个简单的方式是修改配置文件。
    在Windows中,MySQL配置文件名称为my.ini,改文件在MySQL的安装目录下面。修改配置文件中的default-character-set和character-set-server参数值,将其改为想要的字符集名称,如gbk、gb2312、latinl等,修改完之后重新启动MySQL服务,即可生效。读者可以在修改字符集时使用SHOW VARIABLES LIKE ‘characterset%’; 命令查看当前字符集,以进行对比。

DISTINCT可以应用于所有的列吗?

    查询结果中,如果需要对列进行降序排序,可以使用desc,这个关键字只能对其前面的列进行降序排列。例如,要对多列都进行降序排序,必须要在每一列的列名后面加desc关键字。
    而distinct不同,distinct不能部分使用。换句话说,distinct关键字应用于所有列而不仅是它后面的第一个指定列。例如,查询3个字段s_id, f_name, f_price,如果不同记录的这3个字段的组合之都不同,则所有记录都会被查询出来。

order by可以和limit混合使用吗?

    在使用order by子句时,应保证其位于from子句后。如果使用limit,则必须位于order by后,如果子句顺序不正确,MySQL将产生错误消息。

什么时候使用引号?

    在查询的时候,会看到在where子句中使用条件,有的值加上了单引号,而有的值未加。单引号用来限定字符串,如果将值与字符串类型列进行比较,则需要限定引号;而用来与数值进行比较则不需要用引号。

在where子句中必须使用圆括号吗?

    任何时候使用具有and和or操作符的where子句,都应该使用圆括号明确操作顺序。如果条件较多,即使能确定计算次序,默认的计算次序也可能会使SQL语句不易理解,因此使用括号明确操作符的次序操作,是一个好的习惯。

更新或者删除表必须指定where子句吗?

    在前面中可以看到,所有的update和delete语句全都在where子句中指定了条件。如果省略where子句,则update或delete将被应用到表中所有的行。
    因此,除非确实打算更新或者删除所有记录,否则要注意使用不带where子句的update或delete语句。建议在对表进行更新和删除操作前,使用select语句确认需要删除的记录,以免造成无法挽回的结果。

Your support will encourage me to continue to create!