Holle,大家好,我是一个小🐂🐴,在公司的无聊日子里,重复着相同的工作,不知道未来的方向,在生活里充满迷茫,在某一个瞬间(大概是王者荣耀被人推家了) 我想起了,鲁迅的名言,不在沉默中爆发 就在沉默中灭亡!我不能当一辈子🐂🐴,我要为中华之崛起而读书,这时我感觉到了生命的意义,我以前的生活是多么无聊,是多么颓废,如果再给我一次机会,我要说,这把必须选瑶,jb的!
那么接下来我们就要步入正题,开始学习的第一步,写文章的主题思想是为了什么? 那么到底是为了什么呢,学习进步、为了向宇哥看齐(公司大佬😈),最近两个月时间,我总是在焦虑中,就是程序员的通病,一到晚上就不行😣,唉
一到晚上学习就不行,我是看视频来学习的,每天工作后,都在公司学两个小时左右,虽然学习的时间还挺充足的,但是总感觉左耳朵进,右手出的😏,记的不是很扎实,过几天就忘了,所以想通过写文章来加强记忆,巩固自己的学习,那么我的路线呢,就是从我们最基础的开始学起,以快乐的方式,进行学习,也希望和大家分享,来句名人名言:少年终究是要向前冲锋,向美好的世界献上祝福!
正文来了!
首先mysql是个数据库,那么数据库是什么呢?
就是用来做持久化的了,把数据保存到数据里就不会丢了哦,再专业点吧:数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,别以为🐂🐴博主就不会几句专业术语,你还在摸着妹子的✋🏻的时候,我已经打出了Holle Word!😼
数据库有几种类型呢,mysql又是什么🐂🐴数据库呢?
数据库分为关系型数据库、非关系型数据库。
关系型数据库:mysql、oracel等。
关系型数据库以 行(row) 和 列(column) 的形式存储数据,类似一个表格。
非关系型数据库:键值型数据库通过 Key-Value 键值的方式来存储数据(Redis) 、此类数据库可存放并获取文档,可以是XML、JSON等格式(MongoDB)、(针对全文搜索,用于大量数据)Elasticsearch等。
那我们要学习的呢,就是关系型数据库,我们来了解一下关系型数据库的设计规则吧。 🐂🐴表示,数据库里使用最多的也就是表,表是我们数据储存数据的载体,这里我们如果学过java的同学呢,我给大家说个名词:ORM思想:对象关系映射,一听我就是非常有水平的奥,我们简单理解呢,就是表想像成一个对象,那对象有什么呢?
对象有身高、爱好、优点,是不是这不都是一个属性吗,他就可以想象成一个表!
每个属性都是一个字段,每个对象都是有一条记录,有画面了吗🐂🐴们!
表的关联关系,这个又不得不说了,既然表是对象,那你在公司的表和在学校的表能没有关系吗,那么来了:一对一关联、一对多关联、多对多关联、自我引用,一共是四种关系,下面来一一说明
一对一关联(one-to-one)
在我们的表里,一对一,表示你和你的老婆,是一对一的关系,用户表拿出一条数据,宇哥的信息,去老婆表里匹配,那肯定是一对一啊,要不宇哥就只能在小黑屋里度过下半生了,哦,宇哥还没有对象,对不起宇哥,现在没有不代表以后有!
一对多关系(one-to-many)
常见实例场景: 客户表和订单表 , 分类表和商品表 , 部门表和员工表 。 是不是太正式了,来给我宇哥弄上来,用户表拿出一条数据,宇哥的信息,去小三表里匹配😈,哇这就是一对多了,好家伙宇哥剑走偏锋你!
多对多(many-to-many)
过!
自我引用(Self reference)
😈
那么这就就是4种表关系了,其实非常简单,我这里只是简单的带过了,主要是欢乐学习啦。
sql
这段大家可要认真了,真正的实用知识来了,先来几个关键字,如果出去面试这几个关键字都不知道,就等于是:一群太监开会——无稽之谈,那么正式开始,必须严肃!
SQL语言在功能上主要分为如下3大类:
DDL(Data Definition Languages、数据定义语言):这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构,主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等。
简单理解:DDL高级sql了,属于我们项目组的经理,不做小事,只做大事,公司口号,大事化小!非常的经典了,
中文解释:弟弟来(DDL)弟弟你过来,我给你安排点小事,大家就能感觉到这是高级sql。
DML(Data Manipulation Language、数据操作语言):用于添加、删除、更新和查询数据库记 录,并检查数据完整性,主要的语句关键字包括 INSERT 、 DELETE 、 UPDATE 、 SELECT 等。
简单理解:我们程序员最常用的语言了,把他比作我们真正的在做小事,操作表的数据了。
中文解释:弟弟马上来(DML)是不是,领导叫我们了,我们必须马上来!
DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和 安全级别,主要的语句关键字包括 GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT 等。
简单理解:不多说了,这就是属于超人👮♂️,都维护治安级别了。
中文解释:大超楞,没错就是谐音✌️。非常的international!
sql的执行顺序
这个章节也是很重要的,你想我们平时优化代码时,如果连sql的执行顺序都不知道,那我们如何优化呢,如果不会优化sql你还是一个合格的🐂🐴吗?
这图偷别人的图,哈哈哈,网上随便找为什么要自己画的,这不是有病吗,我还要看看人家文章的内容,属于图都偷了,不看文章属于不尊重啊!🤠,小偷真快乐!
1、FROM:我们要查询的数据源在那,如果你不知道,那你就没根了!
2、ON:这是join后的on关键字,用于我们过滤掉那些不符合条件的数据。
3、JOIN:根据join的类型来做操作,left join,那就把左表在on删除的数据拿回来,如果是right怎么样啊,就把右表的数据都拿回来,inner join,大家都知道了,不需要任何的操作,兄弟们!
4、WHERE:这个是过滤数据的奥,我们一般都把条件写在这里,那🐂🐴就要问了,我们为什么不写on的条件里呢,这样不是速度更快,我的意思规范是要写where的,毕竟后续维护也方便吗,但是如果jb经理要你优化sql,实在没办法了,那就给我改!🐴的代码还是要💩一点才好吗!
5、GROUP BY:进行分组了,因为我们数据都过滤完成了,开始分组获取最终结果了。
6、HAVING:这一步就是过滤group by的数据源了,我们面试经常问:having和where的条件哪个更快啊? 这时你跟他说个玄学兄弟们,where是根过滤,group by是分组根过滤,你说哪个快?他根本就不懂根!
当然我可是杜兰特的粉丝,兄弟们,杜兰特勇士队的球衣我都有,格林亲签,你说我是黑子🤔?
7、SELECT:这一步就是根据数据源,选择我们要展示的字段了,或者是聚合后的列了,如果这一步字段查询的少,也可以节省很多时间的哦。
8、DISTINCT:帮我们去重的来了,根据我们所有字段去重奥,也就是全部两行数据对比,要所有字段都重复才去重呢。
9、ORDER BY:就是根据我们的指定字段来排序了,来个场景了奥:
某个房间里:经理:全进来吧,按照desc给我排好!
服务员:desc是什么啊经理?
经理:土老冒,倒序啊!,从高到低,快点的,宇哥你看哪个行!
宇哥:除了你都留下吧!
经理:保洁阿姨还在屋呢!
宇哥:你怎么那么多话呢!
现在我们来总结一下奥,默认asc正序,desc是倒序,多个字段排序也可以,从高到低,一样高的,比年龄,主要咱们是正经人,懂的太少,代入感比较差,唉没办法🤡
一句话:不懂黄色!
10、LIMIT:进行分页,我们最后数据,分成几页,宇哥你说几夜,就几夜!👏
结束感言:
作为我的第一篇文章呢,我其实不太会写,不太会表达自己的知识,总想以一个开心的状态去诉说,但是却无法打开自闭的心灵,以后我会继续更新文章,目标是文章质量能全水,不来一点干的,希望看我文章的人呢,虽然在社会上是🐂🐴,在以后得生活中能一起进步,做一个爱学习、爱加班、不抱怨、懂文明、讲礼貌的🐂🐴精英,主打一个:只要打不倒我的,下次能不能轻点!