写在前面
- mac版本:macOS Big Sur 11.4 m1版本
- mysql版本: mysql Ver 14.14 Distrib 5.7.20, for macos10.12 (x86_64) using EditLine wrapper
1.不能向表中插入中文字符
mysql 之所以无法使用中文是因为默认编码格式中 Server characterset 和 Db characterset 为 latin1.
在进入mysql之后,在命令行输入 : status;
查看当前mysql的编码格式,我这个版本默认都是latin1
那么接下来我们需要将数据库的格式更改为utf-8.
操作步骤
- 关闭mysql服务。具体的方法:打开mac系统的系统偏好设置,最下方的mysql图标点进去,stop mysql。
- 在 /etc 下新增 my.cnf 文件
在terminate控制台中输入
进入配置文件vim /etc/my.cnf
将以下内容复制到黑框中(vim 编辑器,不懂得如何操作的自行百度)[mysqld] character-set-server=utf8 [client] default-character-set=utf8
复制进去之后,先按esc退出编辑模式,再按大写Q,之后输入:wq
保存内容并且退出。
- 重启mysql服务,在进入mysql。status查看mysql就可以看到当前的mysql编码为:
都为utf-8 - 在设置完以后,一定要重新创建db,重新创建表,才能输入中文,之前创建的db和表依旧不能插入中文。
2.
-- count函数的使用:
1. count(*) 表示所有行的数目。
2. count(列名) 表示该列中非null数据的行数
3. count 和 group by一起使用,就是按照group by 后面的条件对行数进行记数。比如说上面例子,group by dept_id 就表明是按照dept_id 对行进行计数。
4. distinct 关键字使用:
1.在count 不重复的记录的时候能用到
比如SELECT COUNT( DISTINCT id ) FROM tablename;
就是计算talbebname表中id不同的记录有多少条
2,在需要返回记录不同的id的具体值的时候可以用
比如SELECT DISTINCT id FROM tablename;
返回talbebname表中不同的id的具体的值
3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义
比如SELECT DISTINCT id, type FROM tablename;
实际上返回的是 id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的 结果不一样
4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的
5.其实还有另外一种解决方式,就是使用
SELECT id, type, count(DISTINCT id) FROM tablename
虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据)
返回的结果是 只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了