正文
1 安装与初始化
1.在mac上安装与初始化mysql密码
参考:http://www.jb51.net/article/103841.htm
安装完成后位置:/usr/local/mysql
2.我的mysql是很早之前装的,导致现在找不到密码,还好有解决方案:
思路是关闭mysql跳过验证修改密码。
我的版本是5.7的,执行以下步骤:
1) 在系统偏好 中,中止MySQL服务.;
2)cd /usr/local/mysql/bin
3) sudo ./mysqld_safe --skip-grant-tables
当你执行skip-grant-tables跳过验证权限的时候终端好像卡住了,出现以下情况:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1RNNplPl-1657609572748)(https://img-blog.youkuaiyun.com/20170417190636343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2thZTg2NDMxNTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
这时候只要再打开一个终端,就可以进入了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FyK1bIZy-1657609572749)(https://img-blog.youkuaiyun.com/20170417190801421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2thZTg2NDMxNTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
4)然后修改用户密码
mysql> update mysql.user set password='root' where User='root';
结果报错,没有password这个字段.
囧,进去看看,有哪些字段
mysql> select * from mysql.user;
结果发现真木有,其中authentication_string据说是5.7.6以后的密码字段,于是改为:
mysql> update mysql.user set authentication_string='root' where User='root';
显示Query ok,修改成功
5)刷新权限
flush privileges;
quit退出mysql后再启动 mysql,为了防止没有重启到,先stop再start
sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start
使用新密码登录: mysql -u root -p ,登录ok
6)如果重新启动mysql后发现无效,说明刚才设置密码出了点点状况,请参考http://www.cnblogs.com/Gbeniot/p/5156633.html,根据你的mysql版本做调整。
//第4步的修改密码改为:
update mysql.User set authentication_string=password('root') where user='root' and Host ='localhost';
//重新进入的时候操作数据库会提示
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
//这时候执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password AS 'root';
2 相关规则
3.成功安装mysql后,就是来使用了,掌握sql语言的四种类别的语言,初期基本就够用了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TWdTWg9A-1657609572749)(https://img-blog.youkuaiyun.com/20170418103844534?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2thZTg2NDMxNTA=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
这里有个哥们汇总的很好,可以参考这个:
http://www.cnblogs.com/hoobey/p/5427020.html
4.要开始建立自己的数据库了,遵守一定的命名规范:
http://blog.youkuaiyun.com/u013628152/article/details/43229155
5.在添加外键的时候遇到一个问题,报错:ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails。后来发现原因是外键对应的数据不符。比如A表如下:
id,name,job_id
1 ‘hello’ 1
2 ‘hehe’ 0
B表如下:
jid,job
1 ‘worker’
2 ‘teacher’
此时向A添加外键:alter table A add constraint fk_job foreign key(job_id) references B(jid);
执行会报该类错误。A表中第二条记录,job_id=0在B表中并不存在,无法指向,所以添加外键失败。
6.各种join的用法,清晰明了
http://www.cnblogs.com/sunjie9606/p/4167190.html
3 实操技巧
# 查询一个Paragraph相关的QA有多少个
SELECT Paragraph.ID,count(QA.ID) from Paragraph left join QA on Paragraph.ID=QA.PARAGRAPH_ID group by Paragraph.ID
# 查询上一句中的最小值
SELECT Paragraph_id,min(cnt) from (SELECT Paragraph.ID as Paragraph_id,count(QA.ID) as cnt from Paragraph left join QA on Paragraph.ID=QA.PARAGRAPH_ID group by Paragraph.ID)