数据库的操作是程序编程中经常要用到的。数据库中用的较多的是Mysql,本文对mysql中常用到的一些SQL语句进行实践尝试。
建库语句
数据库中建库语句如下:
CREATE DATABASE test;
这行语句建立了库名叫test的数据库。但是这种建库语句没有指定数据库的字符集,容易出现一些问题,如字符乱码等等。推荐使用如下指定字符集的语句进行创建。
#指定字符集为UTF-8
CREATE DATABASE test_utf8 DEFAULT CHARACTER SET utf8;
#指定字符集为gbk
CREATE DATABASE test_gbk DEFAULT CHARACTER SET gbk;
这里UTF8及GBK代表不同的字符编码,SQL语句中采用大写形式和小写形式均可以。这里再额外介绍一个有关于建库语句中的概念COLLATE,在写建库语句时,可能也会看到如下的建库语句形式:
CREATE DATABASE test_gbk DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
在这条建库语句中,不仅指出了所使用的字符集为GBK,还进一步明确了所使用的COLLATE为gbk_chinese_ci。COLLATE和数据编码相关,会影响mysql对VARCHAR, TEXT, CHAR等类型数据进行排序时的规则。从而会影响HAVING, GROUP BY等语句的查询结果。
举例子来说,对于latin7字符集有四种COLLATE类型,其中如果指定COLLATE为latin7_general_cs的话,那么搜索结果对大小写敏感,搜索“a”的话,“a"和“A”具有不同含义,只会出来“a”。如果指定latin7_general_ci的话,则对大小写不敏感,会同时搜索出"A”,“a”;这里后缀_ci代表case insensititive,即大小写不敏感,后缀_cs代表case sensitive即大小写敏感。一般创建库时指定了字符集后会采用默认的COLLATE,对于GBK,默认为 gbk_chinese_ci,utf8mb4编码的默认值为utf8mb4_general_ci。
另外需要指出的是,在MYSQL中有utf8和utf8mb4两种不同的编码格式,其中utf8bm4是utf8的超集。理论上utf8使用1至6个字节来编码,mysql中utf8只能