删库跑路?不如老实操作!21天SQL精通教程

2018-06-29 15:30:56 154点赞 2042收藏 110评论

不知何时起,大家轻而易举地就打算“删库跑路”,也不知道何时起大家纷纷放弃学习数据库删库跑路?不如老实操作!21天SQL精通教程 ,当然就目前的情况而言,数据库还是和生活息息相关的,本文主要针对SQL的基础操作以及在Excel中的接入方法作展开,附以一些NoSQL的小知识。

1. SQL的背景知识

2. NoSQL VS SQL

3. SQL的基本语句

4. 在Excel中使用SQL

SQL的背景知识

SQL(Structured Query Language)是结构化的查询语言,同时也是一种编程语言,主要用于维护关系数据库的增删查改,相对于01011010的二进制数字或mov等机器码指令,SQL无疑还是语义化的。关系数据库主要是通过数据库表来维护数据库之间的联系的,相对来说规整但复杂。

数据库

数据库是用于存放数据的地方,可以称为应用的基石。在当下这个数据驱动的软件发展趋势下,数据库变得简单而又困难。因为可视化页面等的出现,操作数据库变得越来越简单;但与此同时快速在数据库中完成所需操作却变得困难,毕竟数据量非常大。

数据库在应用中的位置数据库在应用中的位置

同时,目前还衍生出了一种NoSQL(Not only SQL)的数据库,如Mango DB、Redis等,泛指非关系数据库,在我看来,一些本地化存储如单纯的一个文件存储,程序在运行过程中读取该文件之后再复写上去,这实际上也算是No SQL的一种表现形式。

NoSQL VS SQL

不知我对两种数据库的维护方式的表述能否让各位对NoSQL以及SQL有直观的认知,下面我们将对比一下两种数据库的区别:

数据库的维护方式不同

SQL数据库往往使用数据库表维护之间的关系,如果两张表甚至数张表之间需要有联系,此时需要通过外加键关联其他数据库表,而NoSQL除了支持这种规范操作外,还支持直接在A表中插入B表的相关内容。

JOIN查询的弱化

在描述JOIN查询的区别后还要先介绍一下什么是JOIN操作。

JOIN操作是和第一点相关的,主要是为了能在表A中操作一下访问到表B,这样做比起直接访问表B要快一些。但NoSQL并未提供此方法来访问几个表,所以在NoSQL中大多数据都以第一点中非规范化的形式来存储数据。

还有其他数点差别就不一一列出了,欢迎各位自行了解并在实践中通过对比来加深印象。

数据库的基本操作

数据库其实是一门挺艰深的学问,在上世纪90年代左右曾经出现过井喷(就像今日的机器学习一般)。对于科研工作者或者应用的设计者而言,除了要掌握数据库的基本操作外,还需要掌握数据库的原理,以便尽可能科学迅速地建表、维护数据库甚至重新书写数据库。但一般而言,掌握基本操作其实已经能为工作带来非常大的便利,学习难度在于是否能自如转换自然语言与SQL语言,接下来将介绍一些常见的基本操作。

关系数据库中也分好几种类型,下面将利用MySQL 5.7(不是最新版)来为大家做介绍。

数据库的数据从何而来

在学习的过程中我们可能无法利用公司的真实数据进行各种骚操作,此时我们便需要一些模拟数据。模拟数据的生成方式主要有两种:

1. Excel 表格导入

2. 利用各种生成测试数据的脚本如testdata进行数据生成

插入数据

删库跑路?不如老实操作!21天SQL精通教程

在名为"Books"的数据库表中插入一条"编号为1,书名为JavaScript高级程序设计,由机械出版社出版售价为38元"的数据。

更新数据

删库跑路?不如老实操作!21天SQL精通教程

在名为"Books"的数据库表中更新书名为"JavaScript高级程序设计"的这条数据中的价格,改为58元。

这里有两个地方需要注意:

1. 为什么能针对书名找到唯一对应的数据?

在此需要引入一个"超键"的概念(是的不要笑删库跑路?不如老实操作!21天SQL精通教程 ),如果类比一条数据是人的话,那么这个主键就是我们的身份证号码,甚至比它更严谨,也就是能唯一识别数据的标识。

2. 书名有可能是重的,那么有没有更好的方式来实现该表中唯一性?

书名有可能是重的,例如《霸道总裁爱上我》和《霸道总裁爱上我》,但如果是出版书籍的话,则有ISBN这唯一识别的标识,针对这个数据库表,可以通过添加一列来记录ISBN以此实现超键的唯一性。

删除数据

删库跑路?不如老实操作!21天SQL精通教程

在删除操作中,由于数据库是非常重要的,所以删除权限应当谨慎分配,同时也应该做好镜像备份以及行为记录,这样子才能在误删除的操作或无意恶意删除数据后及时恢复同时追究责任人的相关责任。

这里涉及到一个职业操守的问题,虽然嘴上可以说说"删库跑路",但每一个能对数据进行操作的人员都应当负起对数据的维护责任,不然数据泄露、数据被恶意删除等事件频发将会极大地影响个人、公司的形象以及造成恶劣的社会影响。

嵌套查询

删库跑路?不如老实操作!21天SQL精通教程

把Students数据表中名为"Lucy"的这些数据作为Name(假表),再将Name表的所有数据返回。其中,*多意为所有的意思。

内连接

删库跑路?不如老实操作!21天SQL精通教程

通过键联系学生表与专业表,在学生的专业ID与专业列表ID一致的前提下,返回学生的ID、姓名以及专业名(Majors.Name的别名)。

这些都是基本的数据库操作,更艰难的如视图等因为使用场景不多见在此略过。

在Excel中使用SQL

前面说这么多其实都是在介绍SQL而已,但很多人实际上并不会直接操作数据库本身,而是会通过其他方式如Excel表格来使用SQL语句,下面介绍怎么样在Excel表格中使用SQL语句。

和其他Excel表格建立连接

操作步骤操作步骤

在表格中使用SQL语句

gif动图gif动图

下面是静态解析版。

删库跑路?不如老实操作!21天SQL精通教程

删库跑路?不如老实操作!21天SQL精通教程

删库跑路?不如老实操作!21天SQL精通教程

删库跑路?不如老实操作!21天SQL精通教程

删库跑路?不如老实操作!21天SQL精通教程

删库跑路?不如老实操作!21天SQL精通教程

那么,该如何把数据库的数据导出成Excel表格呢?

这个问题就留待大家思考查阅资料吧。

展开 收起
110评论

  • 精彩
  • 最新
  • 张大妈IPO后文章质量严重下降,这种文章居然也能出现在张大妈?!在单位兼职维护服务器和数据库并且写过单位内部软件的我都不敢说自己精通某种语言和SQL,毕竟非计算机专业出身,这些只是业余爱好罢了……何况语言是随着IDE的更新持续发展的,学无止境~还是不要在这里发这种文章了,又不是CSDN……在Windows为主的时代,有小型数据库需求我选择access,大量数据管理维护我选择SQL Sever或Oracle,数据库这东西如果非必须,那日常掌握一个最通用、自己最熟悉的就好了,数据仓库而已,何必整这么复杂,有时间多研究点别的不好么……

    校验提示文案

    提交
    笑死我了,你翻翻我的评论,这个是小编标题党,而且是小编的征稿,这样子一上来就怼人?

    校验提示文案

    提交
    收起所有回复
  • 到最后还是变成了excel。。。

    校验提示文案

    提交
    不是到最后变成了Excel哦,是Excel是在zdm里面多数人会接触到的使用SQL的东西...

    校验提示文案

    提交
    收起所有回复
  • 这个也能发!!!!!!!!

    校验提示文案

    提交
    这个为什么不能发?

    校验提示文案

    提交
    收起所有回复
  • 对外行来说太专业,对内行来说太简单。
    nosql和关系型的使用场景完全不同。
    要不要顺便讲讲python,培训越来越火了

    校验提示文案

    提交
    要不顺便看看我写的上一篇,之后看看里面的观点

    校验提示文案

    提交
    收起所有回复
  • 我觉得我也可以在大妈网上写写dedecms wordpress seo与sem了

    校验提示文案

    提交
    欢迎你分享

    校验提示文案

    提交
    收起所有回复
  • 期待 三天学会制造原子弹 一文

    校验提示文案

    提交
    期待 一分钟学会键盘侠 一文,看看下面的评论,标题是小编起的

    校验提示文案

    提交
    收起所有回复
  • 坚持就是胜利,sql入门简单深入难,我一直在坚持。

    校验提示文案

    提交
    是的,支持你

    校验提示文案

    提交
    收起所有回复
  • Windows平台跑数据库除了Sql Server非常不建议,因报错都是莫名奇妙的,比如遇到过Oracle 报错“程序遇到了毫无理由的错误” [抠鼻孔]

    校验提示文案

    提交
    其实我一般是在Linux上面跑的,不过Windows比较日常吧

    校验提示文案

    提交
    收起所有回复
  • 好了好了,快推荐服务器吧

    校验提示文案

    提交
    ?服务器我白蹭的,不花钱

    校验提示文案

    提交
    google cloud 注册送300刀,拿去.

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 才这么点?连个皮毛都不是啊,好歹给个完整版的入门吧

    校验提示文案

    提交
    这一些讲真才是在zdm里面比较多人使用到的,深入一点的也不是没有,数据库原理同样推荐去阅读。

    校验提示文案

    提交
    sql似乎太老了,当然都拿它做数据库入门。

    校验提示文案

    提交
    收起所有回复
  • 卧槽,110这是想搞一个从入门到放弃系列

    校验提示文案

    提交
    jelly仔也搞一个啊哈哈哈

    校验提示文案

    提交
    收起所有回复
  • 先关注了,不把我教会你不要退出值得买

    校验提示文案

    提交
    我去我好害怕,我db是半桶水来的 [喜极而泣]

    校验提示文案

    提交
    我原来用过pi实时数据库,在学其他的 [皱眉]

    校验提示文案

    提交
    收起所有回复
  • 三天前开始自学的,写的语句我居然能全部看懂了! [得意]

    校验提示文案

    提交
    哈哈哈,欢迎继续学习,从这些简单的语句到复杂的操作,之后再去了解原理,之后继续实践,非常希望你能坚持 [赞]

    校验提示文案

    提交
    你离精通已经很近了,按作者的话来说。

    校验提示文案

    提交
    收起所有回复
  • 这这这。。。膜拜110妹纸

    校验提示文案

    提交
    这这这,不敢不敢

    校验提示文案

    提交
    收起所有回复
  • 写的不错啊,从无到有都有介绍到,最后还可以推荐基本专业书籍就更棒了

    校验提示文案

    提交
    谢谢!希望对你有帮助

    校验提示文案

    提交
    收起所有回复
  • 没啥意义吧,有人能看了这个就能学会写sql,只能说是天才,而且文中对nosql的一些概念是错误的

    校验提示文案

    提交
    请具体指出哪里错误了,这样子我也好及时更正,不然你讲这些也是没有意义的

    校验提示文案

    提交
    收起所有回复
  • 我还以为我在逛csdn,请教个问题:sql、mysql 、oracle几种什么区别?学C#有点linq基础听说跟他们的语法很相似?

    校验提示文案

    提交
    sql是结构性查询语言,sql数据库一般指关系数据库,你说是mysql和oracle是不同的数据库。c sharp我会,linq不知道,有事情请找百度,我不是百科全书

    校验提示文案

    提交
    学oracle 反正生产中用mysql和mariadb多 甲骨文还是贵啊

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 现在连这个也原创呀?明天写首诗,可以不?

    校验提示文案

    提交
    欢迎你分享啊

    校验提示文案

    提交
    收起所有回复
  • port 3306 in use [doge]

    校验提示文案

    提交
    被错误码支配的恐惧,先走一步老铁

    校验提示文案

    提交
    收起所有回复
  • 这个都能上首页

    校验提示文案

    提交
    欢迎你也写上首页的原创啊。

    校验提示文案

    提交
    呵呵,这种复制粘贴没营养的东西有意思吗?

    校验提示文案

    提交
    还有1条回复
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
2.0K
扫一下,分享更方便,购买更轻松