SQL杂俎_陪老婆一起学SQL系列_Chapter 00

【写在前面的话】

今天是2020年12月3日,按婚礼的时间算的话今天是结婚3周年的纪念日,从今天开始写这一份教程,算是一份送给老婆的特殊礼物
 
因为使用场景基本是在工作中查询和处理一些基础数据,考虑到这样的应用场景我决定有选择性地写这一份教程:
重点放在数据的使用,,围绕“增删改查”,尤其是其中的“查”去写。
舍弃数据库设计、数据库维护这一块的理论知识.
 
基本的思路框架基于《SQL必知必会》这本书。
 
嗯 针对这本书,老婆的评价是这样的。-。-!!!
 
对于一个完全的小白而言,SQL教程即便是入门款,也是极度不友好的。
很多时候前面为了介绍概念和名词花费了很多笔墨,然而几页看下来反倒更是晕晕乎乎,耐心消磨殆尽。
 
所以这次的教程的核心点就是:“通俗浅显,突出重点”,
当然代价就是牺牲了一部分严谨性和专业性,小瑕疵~
 

一、什么是SQL?

SQL (Structured Query Language) 是具有数据操纵和数据定义等多种功能的数据库语言——百度百科
简化一下句子--> SQL 是语言
扩写一下句子--> SQL 是数据库语言
所以可以非常直白地认为,SQL是一种语言,众所周知,语言是用来沟通的,而SQL是专门用来和数据库沟通的语言。
你通过SQL让数据库懂得你想要做啥,并按照SQL语言里说的事情严格执行
 

二、什么是数据库?

顾名思义,数据库:“按照数据结构来组织、存储和管理数据的仓库”   简化版:放数据的仓库
常常听到的MySQL、Oracle、Microsoft SQL Server,这些都是数据库,由各大软件公司巨头制造的。( ̄~ ̄) 大佬就是666
为了追求个性,不同的数据库也就产生了多种不同版本的 SQL 语言,有些是不通用的。。。。 难为了学代码的娃 ┑( ̄Д  ̄)┍ 怪我咯
 
然而 ANSI(美国国家标准化组织)为了减少差异化语言的影响,规定了SQL的一套标准。
为了与 ANSI 标准相兼容,各大数据库必须以相似的方式共同地来支持一些主要的命令   (☆▽☆)霸道总裁的既视感
(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
select 查找
update 更新
delete 删除
insert 插入
where (哪里)
(混个脸熟,后面你会经常看到它们)
 

三、SQL语句要怎么写?

 
说了这么多,这里才算进入正篇
好了,我们已经知道了 数据库是放数据的仓库,SQL是专门用来和数据库沟通的语言。
那这个语言是什么样的?这个语言的语句要怎么写出来呢?
 
前文说到 SQL的标准是ANSI(美国国家标准化组织)定的,所以SQL语句的语法逻辑与英语的语法逻辑比较接近,
这时候请你切换到英语课模式 ლ(╹◡╹ლ)
 
 
鉴于和机器沟通,不用那么客客气气:
我们来对比一下
中文:从 教室  乔 和 戴
英文:Find Joe and Dai from the classroom
类似SQL:Select Joe and Dai  from the classroom
这里的 select 和 from 就承担着告诉数据库 类似“找”和“从”的含义,这些重要的单词在SQL语句中被称为【关键字】
记住不要从汉语的思维去写语句 ~~~
 
这样你就完成了第一个 “类似SQL”的编写
之所以说是“类似SQL”,是因为严谨地看这一个语句,在数据库里面并不能被执行,为什么呢?
 
这就要从数据库是如何存放数据开始说起。
 

四、数据库是如何存放数据?

1、碰瓷Excel的数据库

鲁迅说:“打比方不是一个严谨的治学态度,但是很好用。”
 
整个数据库软件你可以理解为是你电脑上的一个文件夹
文件夹里有很多工作项目的Excel表格文件(数据库Database)
每个Excel表格文件打开里面都会有很多个Sheet (表Table)
 
让我们来捋一下:
文件夹                     -->  整个数据库软件
Excel工作簿             -->  数据库
工作簿里面的Sheet  -->  表
 
数据库就是一个升级版的Excel,附带了超大容量、网络共享等等秒杀Excel的功能体验  ୧(๑•̀⌄•́๑)૭碉堡了
tips:前文提到的MySQL、Oracle、Microsoft SQL Server,这些数据库都是关系数据库
相对地还有非关系数据库,当然这个不重要,因为这辈子估计不会用到。
 
所以就关系数据库来说,数据库确实和Excel有雷同碰瓷的嫌疑:
Excel是由多个Sheet表组成,
同样的,数据库也是由多个Table组成
 
但是!注意啊,但是!数据库里面的Table与Table之间往往是有联系的,
是可以通过某些因素关联起来的,所以赐名为关系数据库
关系数据库 = 多张表+各表之间的关系 = 表 + 关系
 

2、表 与 关系的概念

1) 表的结构

数据库中每个表Table有自己的名字,例如,这个Table记录的是班级的考试成绩,可以将它命名为 StudyScore
这个Table表里包含多个带有列名的列,和记录数据的行。
表中每一列都有一个列名来标识出该列,这个表里有3列,列名分别是姓名、科目、分数。
从列名上你也可以知道这一列对应记录的是什么数据。
表的每一行里记录着一个学生某一科目的分数。
 

2)一维表与二维表概念

一维表是每一个字段都是独立参数,如姓名、科目、分数
优点:一维表最适合透视、数据分析的数据存储结构
 
二维表是字段非独立字段,如数学、英语、语文是属于科目维度,不是独立字段
优点:二维表用于展示数据更直观
 

数据录入、分析建议都采用一维表 无论是表格还是数据库计算都简单方便

对外展示与汇报建议使用二维表
 
 

3)各表之间的关系

关系数据库是由多张表组成的,如图是存放在 通讯公司数据库里的3张表。
仔细观察数据之间是有关系的。关系数据库里各个表之间是通过字段,也就是列的名称产生联系。
用户表与话费明细这两张表通过“手机号”关联起来,
例如我想知道张三这个月的总话费是多少?那么我就可以在话费明细里找到手机号为“15397127196”的行,将所有行加在一起就可以得到最后的总话费。
 
关系就是数据能够对应的匹配,在关系数据库中正式名称叫联结,对应的英文名称叫做join。
联结是关系型数据库中的核心概念,务必记住这个概念,后面会在多表查询中具体学到。
 

4)联结的功劳

换一个思路,如果将上述的3张表合并如上,这样看起来是不是就有些别扭?
为什么会感觉怪怪的?
 
因为表(Table)是某种特定类型数据的结构化清单。
 
这里关键的一点在于,存储在表中的数据是一种类型的数据或一个清单。
 
不应该将顾客的消费记录清单与入网时间这一类基础信息放在同一个数据库表中。
这样做将使以后的检索和访问很困难。应该创建多个表,每一类数据信息一个表。
 
这样也极大程度上避免了数据信息的臃肿,而联结又可以在需要的时候通过SQL语句对需要的表进行关联。
 
联结给予了数据独立的底气和相互关联的机会~     此处应有掌声~~~~
 
 
 
 
 
 
 
 

 

posted on 2020-12-03 18:46  AtDoldrums  阅读(63)  评论(0编辑  收藏  举报

导航