昨天帮同学弄一个SQL的表,被难到了。自己装了mysql来练习,记录一些tips。

我使用的是从官网下载的mac版本dmg安装包:mysql-5.7.12-osx10.11-x86_64

跟以前版本不同的几点:

  • 安装文件只有一个了,不需要再去添加系统偏好设置
  • 执行安装之后它会自动生成一个初始root密码给你(当时没截图,用了网上的图)

在terminal里使用时,为了方便先设置个别名:(或者在shell的配置文件里设置永久的,我用的zsh在~/.zshrc)

alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin

然后就可以用别名来操作了,

mysql -u root -p 
输初始密码进入mysql
之后很多操作都不能干,它会不停地给出以下提示:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

修改密码的方法不止一种,官方推荐的方式是:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEW PASSWORD';

修改之后

flush privileges;
quit;

再用新密码重新登录。
之后的操作就正常了。

添加、修改mysql配置

mysql --help --verbose | more
 
(查看帮助, 按空格下翻)

找到这一行(表示配置文件默认读取顺序)

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

通常这些位置是没有配置文件的, 所以要从

/usr/local/mysql/support-files/
路径下找一个.cnf后缀的文件

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
 
(拷贝到第一个默认读取目录)

之后再按需修改my.cnf

 

关于在MySQL里存储中文的相关文章:


接下来就是昨天难到我的地方!!!!!

当你有两个表需要做并表操作时,举例如下:

表1 customer记录了顾客信息:

表2 orders记录了商品销售记录:

两个表的映射关系由顾客的ID来建立。从图中可知,由于每个顾客都有多次消费,显然,表2有更多行。

如果我们对它进行简单的并表操作,就会得到:

为了跟右表匹配,从customer表提取的顾客信息会多次出现。
而如果我们想让它与左表匹配,忽略掉orders表的具体商品信息,即:求出每个顾客的总消费额。使用sum()函数是做不到的。

这里要配合sum函数用到GROUP BY语句。——指定以顾客ID为group,然后限定sum()函数对group内的项求和:

select customer.ID , customer.name , sum(orders.price) from customer,orders
-> where customer.ID=orders.customer_id group by customer.ID;


就可以得到一个简洁的表了。

有一点注意事项:
当你使用了group by的时候,要确定非sum项不会因此丢失数据。像上面那个select语句,如果我包含了orders.items项,则会在基于顾客ID合并group时发生错误

ERROR 1055 (42000): Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘test.orders.items’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

因为对顾客ID相同的行进行合并时,price项按我们的要求进行了相加(√),name项与ID是匹配的——ID相同的行name也相同(可以直接合并√),items项却各不相同发生冲突。
所以使用group by时需要注意select各项的关系。

 

这个语句在W3School上的教程页面:SQL GROUP BY 语句

参考并感谢:
OS X EI Capitan 安装mysql-5.7.9
MySQL 5.7 初始密码和密码复杂度问题 
MAC下安装与配置MySQL
安装mysql后,如何配置mysql