MacBook Pro安装mysql,mysql忘记密码,Navicat连接mysql

-- 查看数据表结构
desc api_job;

-- 数据表字段解释
explain api_job;

/**
使用explain可以分析mysql的查询性能,查看
表的读取顺序
数据读取操作的操作类型
哪些索引可以使用
哪些索引被实际使用
表之间的引用
每张表有多少行被优化器查询

开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划。
查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看
**/
explain select * from api_job limit 10;

-- 查看创建SQL的DDL语句
show create table api_test;
 

参考博客

https://www.jianshu.com/p/c3b7db87b061

MySQL的官网http://www.mysql.com/downloads/ ,在页面中会看到“MySQL Community Server”
下载后安装,最后一步有弹出框提示root账号默认的密码,需要记住,如果没记,需要修改root的密码

启动方式1:Mac系统偏好设置启动

1、系统偏好设置->最下边点MySQL,在弹出页面中,关闭服务,但是有时候无法关闭,则用ps -ef|grep -v 'grep'|grep mysql

查看mysql进程。再用➜  ~ ps -ef|grep -v 'grep'|grep mysql|awk '{print $2}'|xargs sudo kill -9 杀掉进程

杀掉进程查看mysql

启动方式2:终端命令行


2、终端输入:

cd /usr/local/mysql/bin/

3、回车后 登录管理员权限

 sudo su

4、回车后输入以下命令来禁止mysql验证功能

./mysqld_safe --skip-grant-tables &

5、回车后mysql会自动重启(偏好设置中mysql的状态会变成running)
6、输入命令

./mysql

7、回车后,输入命令

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPass!';

⚠️MySQL 设置的密码中必须至少包含一个大写字母、一个小写字母、一个特殊符号、一个数字,密码长度至少为8个字符。

此时查看 Mac的系统偏好设置-mysql为running状态

 

设置成功,连接成功的截图如第一张图片

双击打开-新建数据库-打开数据库

新建连接,Navicat-connections-mysql,一切默认即可,connection name名字随意


-- 删除表
-- 1. drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。
--        drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。
-- 2. truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,只是清空表数据而已。
--        注意:truncate 不能删除行数据,要删就要把表清空。
-- 
-- 3. delete (删除表中的数据):delete 语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存。以便进行进行回滚操作。
--        truncate与不带where的delete :只删除数据,而不删除表的结构(定义)
DROP TABLE orderinfo;

-- 创建用户订单表
CREATE TABLE orderinfo (
`id` int NOT NULL AUTO_INCREMENT,
`orderid` varchar(40) NOT NULL COMMENT '用户订单id',
`userid` varchar(50) NOT NULL COMMENT '用户id',
`describe` varchar(50) DEFAULT NULL COMMENT '用户id',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=6011 DEFAULT CHARSET=utf8
COMMENT='用户订单表';

-- 插入数据
INSERT INTO orderinfo VALUES (1,"abc","123","");
INSERT INTO orderinfo VALUES (2,"abd","123","雅诗兰黛");
INSERT INTO orderinfo VALUES (3,"abe","124","兰蔻");
INSERT INTO orderinfo VALUES (4,"abf","125","希思黎");
INSERT INTO orderinfo VALUES (5,"abg","124","希思黎");

-- 删除指定的列
-- DELETE FROM orderinfo WHERE id=1;
SELECT * FROM orderinfo;

-- 查询所有的用户id
SELECT DISTINCT(userid) FROM orderinfo;

-- 查询所有不重复的用户数量,考虑到一个用户可能会下多个订单
SELECT COUNT(DISTINCT(userid)) FROM orderinfo;
-- 查询结果起一个新的名称
SELECT COUNT(DISTINCT(userid)) as usercount FROM orderinfo;
 

 

如遇Incorrect string value: '\xE5\xB0\x8F\xE6\x9D\x8E' for column 'name' at row 1

CREATE TABLE student (
id varchar(10) NOT NULL,
name varchar(40) DEFAULT NULL,
gender varchar(10) DEFAULT NULL,
age int(10) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
由此发现charset设置为Latin1,Latin1不支持中文字符,因此我们需要修改编码格式

2.修改student表编码格式:alter table Student default character set utf8;

3.查看student表显示:
CREATE TABLE student (
id varchar(10) CHARACTER SET latin1 NOT NULL,
name varchar(40) CHARACTER SET latin1 DEFAULT NULL,
gender varchar(10) CHARACTER SET latin1 DEFAULT NULL,
age int(10) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
此时表的编码格式已经改变,但是列的编码格式显示为Latin1
 

CREATE TABLE `bossnew` (
  `id` int(11) DEFAULT NULL,
  `name` text,
  `bossid` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

修改编码后插入数据成功

如果还是报错 则修改对应报错字段的编码

 alter table boss change name name varchar(255) character set utf8;

修改后插入数据成功

如遇报错

Error : Column 'name' in field list is ambiguous

今天在写SQL的时候用到了子查询,将子查询修改为外连接查询时遇到了错误,在这里记录一下,以及相应的解决办法。

左关联查询:select name,id from boss as A left join boss as B on A.id=B.bossid;

执行结果:


错误原因/原因分析

列’name / id’在字段列表中重复,其实就是两张表有相同的字段,但是使用时表字段的名称前没有加表名,导致指代不明,前面加上前缀boss表就没问题了

解决办法:1.修改其中一个表的主键名称。2.查询的时候通过别名限制查询的是哪一个表的字段

修改后SQL:select A.name,A.id from boss as A left join boss as B on A.id=B.bossid;

执行结果:

。。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方狱兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值