DataGrip - MySQL入门必知!!!

如果你已经对datasource、database和schema有清晰的认知了(虽然我认为这样的人都不会打开这篇博文了)

那您可以离开本页了,不想浪费您的时间~

像我这么的人一般能百度到的东西都不会拿出来写...

但是这次我研究的这个事儿,应该是全网无人总结的(问题的表象无人说,问题的本质当然是有大佬解释的啦,看下去就知道我在说啥了~)


背景描述:

今天在看别人的servlet代码的时候突然发现

这个东西应该是数据库名吧,咦我怎么记得我在DG里默认的数据库里没有这个东西呢?打开DG一看,果然

DataGrip - MySQL入门必知!!!_第1张图片

但是我连接过其他的项目的数据库,是有这个东西的,那个时候没深究。

于是我就去请教我的小伙伴(他用的是navicat),他说Database就是数据库的名字啊,于是他给我演示了一下在navicat上新建一个数据库的操作……

但是我回来找类似create/new database的操作,愣是没找到,我还百度了好久,没有能解决我疑惑的

我还实验性地这样做:

DataGrip - MySQL入门必知!!!_第2张图片

测试连接直接红了,说明没找到这个数据库。(说明了两个问题,第一这不是新建数据库的操作!第二本地没有这个数据库!)

第二点好理解,确实没有这个数据库,因为我本来就是想要通过这个方法来创建它。

第一点就很疑惑了,如果我把database去掉,是可以新建一个schema(注意我的用词不是数据库)的,但是这也不是新建数据库啊

让我来总结一下我的问题。

DG项目结构如下:

DataGrip - MySQL入门必知!!!_第3张图片

在我的理解里,

1:DG项目创建的一个数据库连接,看到的MySQL-@localhost 是连接的名称

2:概念模糊,应该是个集合一样的东西

3:集合里的实体对象,创建的时候也是new schema

4:很明显这就是表啊

而就是我对schema的理解不够到位,而引发了我所有的疑惑和不解

对1和4的理解是肯定没有问题的,于是我去搜了一下schema的概念,参考如下(百度第一条)

https://blog.csdn.net/u010429286/article/details/79022484

原来在MySQL里,schema和我们说的数据库(database)是差不多一样的概念,也就是说我们新建schema就是新建数据库(database),也就是说2是数据库的集合结构,3就是数据库本身

于是我打开本地mysql server,show databases一下:

DataGrip - MySQL入门必知!!!_第4张图片

我再到DG中,创建一个新的连接如下:

DataGrip - MySQL入门必知!!!_第5张图片红字是时区错误!说明不是database没找到!

我们改一下时区,新增一条serverTimezone即可

DataGrip - MySQL入门必知!!!_第6张图片

再测试一下:

DataGrip - MySQL入门必知!!!_第7张图片

奈斯 兄嘚!

让我们打开来看一下:

DataGrip - MySQL入门必知!!!_第8张图片

连接到了我本地的web_cms数据库,没毛病

然后看到上面的 1 of 7 我就豁然开朗了,这玩意儿用于调节DG中展示的视图,你可以选择你想看哪几个数据库

DataGrip - MySQL入门必知!!!_第9张图片

这说明了一个问题,这个连接虽然指定了连接的database,但是我们用的是root账号,所以可以看所有的数据库,这个所有指的是localhost:3306下的即我们这个数据库服务下的所有数据库!


总结:

总算明白了DG的构造,让我拿上面那个图再来总结一下

DataGrip - MySQL入门必知!!!_第10张图片

1:连接

2:该连接下,你能访问的数据库们

3:一个数据库

4:数据表

我们创建的连接是对应一个数据库服务的,而这个连接我认为应该称之为 数据源 以防跟数据库混淆。

其实在DG中已经做了提示了,

DataGrip - MySQL入门必知!!!_第11张图片

DataGrip - MySQL入门必知!!!_第12张图片

我们这样创建的就是数据源,在连接成功后我们可以在Schemas选项中选择我们要连接的数据库,

所以我觉得database这个选框其实没什么必要?毕竟连接前可以在Schemas中选择,连接后又可以使用视图来屏蔽/展示……

还是说除了root账户都需要通过指定database的方式来连接呢?这个问题没有测试,有兴趣的小伙伴可以去试试!

再回头看本文最开始提出的疑惑,为什么打开本地数据源的连接属性里,没有database这个属性呢。因为这是数据源啊!又不是数据库!再问头都打烂掉!你看到别的有这个属性的,因为它们都是针对某个特定数据库连接!

如果要创建数据库,就new schema!

 

 

你可能感兴趣的:(MySQL,DataGrip)