MySQL基础学习1
一、MySQL 软件安装及数据库基础
1、Windows安装MySQL
https://www.runoob.com/mysql/mysql-install.html
出现问题:
1、刚开始是密码一直错误,网上的解决办法是在my.ini中加入skip-grant-tables;
2、但是在my.ini中加入skip-grant-tables后无法启动mysql。
解决办法:
https://blog.csdn.net/qq_36675754/article/details/81381341
https://blog.csdn.net/q283614346/article/details/90732968
新版本不能直接在在my.ini中加入skip-grant-tables!
2、数据库基础知识
数据库定义:根据定义,数据库只是一个结构化的数据集合。
关系型数据库:数据本质上相互关联,例如,产品属于产品类别并与多个标签相关联。这就是为什么要使用关系数据库。
二维表:在关系数据库中,我们使用表对产品,类别,标签等数据进行建模。 表包含列和行。它就像一个电子表格(Excel)。
表可以涉及的使用有:一对一,一对多,多对一关系等关系。
3、.MySQL数据库管理系统
SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。
SQL包含三个部分:
数据定义语言包含定义数据库及其对象的语句,例如表,视图,触发器,存储过程等。数据操作语言包含允许您更新和查询数据的语句。
数据控制语言允许授予用户权限访问数据库中特定数据的权限。
4、Navicat不能连接的问题及解决办法
或者https://blog.csdn.net/tiny_lxf/article/details/83066281
grant all privileges on . to root@”xxx.xxx.xxx.xxx” identified by “密码”;
或者 GRANT ALL PRIVILEGES ON . TO ‘root’@’xxx.xxx.xxx.xxx’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;
这相当于是给IP-xxx.xxx.xxx.xxx赋予了所有的权限,包括远程访问权限。
然后再输入
flush privileges;
远程连接,出现语法错误如下:
解决办法如下:https://q.cnblogs.com/q/DetailPage/106432/
https://faceghost.com/article/49231
5出现问题:\ibdata1 must be writable
解决办法:https://blog.csdn.net/u012465296/article/details/71157286
二、1.2 MySQL 基础 (一)- 查询语句
1、导入数据库
(1)路径要用正斜杠“/” ;
这里犯了个小问题:把文件yiibaidb.sql放在了个文件夹yiibaidb中,结果写路径的时候只写到了文件夹,没有写文件,所以一直读取不到。
如下图,这就可以了。
3、SQL代码规范
如下是大佬的总结,纪录在此,多多温习:
https://zhuanlan.zhihu.com/p/27466166
https://www.sqlstyle.guide/
作业一:查找重复的电子邮箱
代码如下:
创建表
CREATE TABLE email (ID INT NOT NULL PRIMARY KEY,Email VARCHAR(255));
插入数据
INSERT INTO email VALUES('1','a@b.com');
INSERT INTO email VALUES('2','c@d.com');
INSERT INTO email VALUES('3','a@b.com');
查找
select Email from Person group by Email having count(Email)>1;
结果如下:
作业二:查找大国
创建表
CREATE TABLE World (name VARCHAR(50) NOT NULL,continent VARCHAR(50) NOT NULL,area INT NOT NULL,population INT NOT NULL,gdp INT NOT NULL);
插入数据
INSERT INTO World
VALUES('Afghanistan','Asia',652230,25500100,20343000);
INSERT INTO World
VALUES('Albania','Europe',28748,2831741,12960000);
INSERT INTO World
VALUES('Algeria','Africa',2381741,37100000,188681000);
INSERT INTO World
VALUES('Andorra','Europe',468,78115,3712000);
INSERT INTO World
VALUES('Angola','Africa',1246700,20609294,100990000);
查找
select * from world
select name, population, area from world
where population>=25000000 and gdp>=20000000
or area>3000000
查找结构结果出现重复:
选择时用group by分组,解决上述问题:
查找代码修正
select * from world group by name
注意:
group by后面不可以跟and或or;
and 和or 一般用于where后面,用于条件之间判断的谓词;
group by 有一个原则: select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面;
group by 对应的列如果如果需要加条件,一般用having。
参考链接:
MySQL基础知识学习:
https://blog.csdn.net/weixin_41675201/article/details/87996194
group by和having的注意事项:
https://wenda.so.com/q/1461182111722989
https://www.cnblogs.com/xizhongshui/p/5864581.html