前言

互联网产品的主要组成部分,就是程序+数据,程序负责处理逻辑,数据负责存储信息,从事IT相关行业,如运营、产品等,了解数据库知识,对工作有很大的帮助,熟悉数据库后,可以拿到一手底层数据,进行数据分析。

本篇教程主要针对完全不懂数据库知识的新手,通过最少入门知识,快速掌握数据库技能。

一、数据库

1、什么是数据库?

顾名思义,数据库是存储数据的仓库,数据库由一张张数据表组成,表就是直接存储数据的“容器”。

每一张数据表, 由字段和数据两部分组成,字段就像Excel里的表头,数据就是具体的信息。数据表都是二维的结构,多张表之间可以通过相同的字段进行关联,这个后面会说。

那么这些填充在表格里的数据,具体有哪些类型呢?

主要有3种类型:①数字 ②字符串 ③日期

  名称 类型 说明
数字 INT 整型 范围约+/-21亿,如1000
BIGINT 长整型 范围约+/-922亿亿
REAL 浮点型 4字节浮点数,范围约+/-1038
DOUBLE 浮点型 8字节浮点数,范围约+/-10308
DECIMAL(M,N) 高精度小数 由用户指定精度的小数,例如,DECIMAL(20,10)表示一共20位,其中小数10位,通常用于财务计算
字符串 CHAR(N) 定长字符串 存储指定长度的字符串,例如,CHAR(100)总是存储100个字符的字符串
VARCHAR(N) 变长字符串 存储可变长度的字符串,例如,VARCHAR(100)可以存储0~100个字符的字符串
日期 DATE 日期类型 存储日期,例如,2018-06-22
TIME 时间类型 存储时间,例如,12:20:59
DATETIME 日期和时间类型 存储日期+时间,例如,2018-06-22 12:20:59
  BOOLEAN 布尔类型 存储True或者False

别看有这么多数据多类型就有点懵,其实常用的类型主要就表格里标记为红色的部分。

数据库有多种类型,不同类型由不同的公司研发,例如常用的MySql数据库,是由瑞典一家公司开发的,可以免费使用,还有oracle数据库,是美国甲骨文公司开发的,需要付费使用。本文都是以MySql数据库为例。

2、什么是SQL

SQL的全称是:Structured Query Language,翻译成中文叫:结构化查询语言。主要用来向数据库发出指令,进行增、删、改、查等操作,本文只介绍“查”,即如何使用SQL进行数据查询。

二、环境部署

要学习SQL,首先肯定得部署环境,首先,我们需要部署一套服务器,并将MySql安装到服务器上,然后我们安装一个数据库工具,用于连接和操作数据库。完事开头难,别看到上面要部署服务器安装MySql就吓到了,其实很简单,有一套封装好的软件,一键就可以完成安装。下面说说具体流程。

①下载phpstudy并安装

下载地址>> https://www.xp.cn/

下载后直接安装即可

②启动MySql

点击启动,启动后你的电脑上就在运行MySql了。

③下载数据库管理工具Navicat

下载地址>>https://www.pcsoft.com.cn/soft/20832.html

下载完成后,打开软件,就可以看到操作界面:

我们先按照上图创建一个数据库连接,配置好数据库信息后,点击连接测试,提示ok的话,就表示已连上数据库,再点确定保存信息。

保存成功后,左侧连接列表可以看到=>本地数据库服务器,双击即可连接上服务器。

为了进行测试,我们先来创建一个数据库,取名为:test

a. 右键点击 本地数据库服务器,选择创建数据库

b. 按照上图设置,点确定

c. 创建成功,左侧可以看到名为test的数据库,双击就可以打开

到这里,我们环境已经搭建好,并且也创建一个数据库,下面,我们开始创建一些表,来熟悉SQL的语法。

三、语法

我们先创建2张表,一张学生表,一张班级表。学生表记录所有学生,班级表记录所有班级,结构如下:

学生表(表名:student):

id name age sex class class_id score
1 小红 18 二班 2 99
2 小军 22 五班 5 100

班级表(表名:class)

id class_id class_name teacher
1 2 2班 毛老师
5 5 5班 张老师

为了创建以上2张表,我们需要在工具里进行操作:

a. 右键点击表,选择创建表,在新窗口中设置字段:

保存的时候,输入表名:sutdent,表就创好了。在建表的时候有要注意:

  • 需要给每张表至少一个字段设置主键,主键就是唯一不重复的意思,主键不能为空,通常主键都是用id作为唯一标识,id设置为自动递增。

创建班级表(class):

以上表创建好以后,添加一些测试数据。ok,我们的准备工作就做好了。下面开始学习SQL语法

本文我们只学习查询数据。

查询数据

①基本语法

select * from `表名`

select是选择的意思,星号表示从查询结果中选择显示那几个字段,from表示从哪张表查,表名用键盘左上角那个符号标记,注意不是引号是Esc下面那个键。

例如,我们查询所有学生信息,使用以下sql

select * from `sutdent`

例如,查询结果里,我们只看姓名和成绩,使用以下sql

select name,score from `student`

是不是挺简单的?

②条件查询

select * from `表名` where 条件

在表名后面加where,表示添加查询条件的意思,例如,我们要查询成绩大于99的学生

select * from `student` where score>99
  • 当有多个条件时,使用and表达式
select * from `表名` where 条件1 and 条件2

例如,查询分数大于99且性别为男的学生:

select * from `student` where score>99 and sex = '男'

注意,如果是字符串,需要使用引号标记(和表名使用那个符号不一样)

  • 满足任一条件就查出来时,使用 or
select * from `表名` where 条件1 or 条件2

满足任一条件就查出来,还可以使用in,例如查询二班、五班的学生:

select * from student where class_id in (2,5)

class_id为2或者5,都可以查出来,相比or,这种方法更常用

  • 排除条件时,使用 not
select * from `表名` where not 条件2

③投影查询

前面我们提到过,从查询结果里,显示全部字段使用星号(*),如果只显示部分字段,就叫投影查询,例如,从学生表查询结果中,只显示姓名和分数:

select name,score from `student`

查询结果就只显示name和score,还可以对查询出来的结果设置别名,例如将name显示为姓名:

select name as 姓名, score from `student`

④ 排序

排序是使用order by 语句

select * from `表名` order by `字段名`  

例如,我们对查询结果按照成绩排序

select * from `student` orderby `score`

默认是按正序,如果倒序的话加desc关键词

select * from `student` orderby `score` desc

⑤聚合查询

例如,查询学生表一共有多少个学生:

select count(*) from `student`

使用聚合查询时,也可以使用where条件,这样就可以查出,男生有多少人,女生有多少人。

处理count(*)聚合查询外,还有以下聚合查询:

sum:求某一列的和

avg:求某一列的平均值

max:求某一列最大值

min:求某一列最小值

在学生表里,有很多是人二班的,有很多人是五班的,那么我们如何分别统计二班有多少人,五班有多少人呢?这时我们可以用分组查询,分别统计出二班、五班有多少人。

select class,count(*) from student group by class

查询结果:

我们查处二班1人,五班1人,这里可以添加更多的学生数据,来进行测试。

⑥连接查询

a. 内连接 inner join

我们注意到,学生表里没有所在班级的班主任信息,如果我们想在查出来的信息中获得班主任信息,怎么办?这时就可以用内连查询。

select * from student s inner join class c on s.class_id = c.class_id
  • 可以给表名设置别名来简化书写格式
  • 通过on关键字来将两张表的连起来

查询结果:

但是inner join有个问题,只能查出在两张表都存在的数据,比如,我们加一个学生,小丽,她没有班级信息,那么在查询结果中,她就不见了,因为她没有班级信息。如何把没有班级信息的人也查出来呢?这时就可以用左连接。

b. 左连接 left  join

select * from student s left join class c on s.class_id = c.class_id

查询结果

这样,我们就把小丽也显示出来了,小丽桀骜不驯,没有加入任何一个班,所有没有班级信息。

c. 右连接 right join

假设,我们还有个刘老师,这时,我们想以老师为主角,从老师的角度来看下学生信息,如何查询呢?这是就可以用到右连接。

select * from student s right join class c on s.class_id = c.class_id

查询结果

刘老师教学水平不行,班上还没有学生,所有,没有学生信息。小丽没有班级信息,所以跟他也没半毛钱关系。

以上,就是一个简洁版的SQL入门教程,专注投入可能根本就不用不了1天的时间,但掌握的这些技术却可以终身受用。

通过SQL+Tableau,还可以做出非常多数据可视化视图,对于数据监控、数据分析统计,有非常大的帮助。

以下是我做利用简单SQL+Tableau做出来的一些可视化图表:

另外,在熟悉数据库以后,对数据结构,又有更深的认识,在做产品设计时,会考虑得更全面,以上,就是我总结的一些经验,希望对你有帮助。

一天学会SQL,写给小白的数据库教程相关推荐

  1. sql 如何查询上次的记录_学会SQL并不难,小白学习记录之五(多表查询)

    1.表的加法 加法(union) 将两个表的数据按行合并在一起 两个表中重合部分会删除 union all 会保留重复行 2.表的联结 联结(join) 通过表和表之间的关系,将两个表合并在一起: 交 ...

  2. sql出现列名无效的原因_学会SQL并不难,小白学习记录之二(简单查询)

    1.基本的查询语句练习 select 语句 select <列名1><列名2>,... ... <表名>; 查询结果中列顺序与select子句中列顺序一样,查询多个 ...

  3. 写给小白的 Asyncio 教程

    来源:https://segmentfault.com/a/1190000008814676 所谓「异步 IO」,就是你发起一个 IO 操作,却不用等它结束,你可以继续做其他事情,当它结束时,你会得到 ...

  4. sql where中用case_从零学会SQL:求职面试题(汇总)

    题目的数据表来自前面系列文章教程创建的4个表:学生表.成绩表.课程表.教师表. 一.简单查询 1. 查询姓"猴"的学生名单 2. 查询姓名中最后一个字是"猴"的 ...

  5. python小白从哪来开始-写给小白的工程师入门 - 从 Python 开始

    题图:pexels 这是我面向小白写的 Python 编程教程的第一篇.周三已经抓勺子同学上完了这节课,得到了很多珍贵反馈,于是我把讲义初版又修改了一遍,放到⌈影子练习SinanTalk⌋上来. 原本 ...

  6. Linux系统学习方法——写给小白 每个人都有心中向往的一些事情,而我,刚进实验室,看到师兄师姐在电脑前面噼里啪啦的敲代码,真的好羡慕,看着他们实现一个又一个的功能满心欢喜,我也很想尝试。后来了解到师

    Linux系统学习方法--写给小白 每个人都有心中向往的一些事情,而我,刚进实验室,看到师兄师姐在电脑前面噼里啪啦的敲代码,真的好羡慕,看着他们实现一个又一个的功能满心欢喜,我也很想尝试.后来了解到师 ...

  7. 初学者怎么快速学会SQL

    前言:SQL可以说是在数据处理和分析领域最常用的程序语言了,有很多想从事这个数据业务但还没入门的同学都在问这个问题.但是,这个问题大概率是个无意义的问题. 且听我道来. 文章目录 SQL简介 SQL语 ...

  8. 5分钟学会Java写一个接口

    今天学习了如何用Java写一个简单的接口,方法简单好用(本人是前端,后端小白) 用的软件是idea,框架是spring boot,在spring boot中创建我们需要的项目就可以开始了. 注:开始运 ...

  9. 第 01 篇 和数据打交道的你,一定要学会 SQL

    <SQL 从入门到精通>专栏目录 第 01 篇 和数据打交道的你,一定要学会 SQL 第 02 篇 在 SQL 的世界里一切都是关系 第 03 篇 使用 SELECT 语句初步探索数据库 ...

最新文章

  1. mqtt android简书,iOS MQTT协议笔记
  2. javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键
  3. window mobile 5.0截获来电
  4. java swing jar 字体不一样_终于读完了腾讯T4架构师整理的Java深度学习笔记
  5. c#怎么调用oracle存储过程,c# 调用oracle 存储过程、方法简易例子
  6. 百度google关键字优化的小技巧
  7. 5.4.2 Using Hibernate templates
  8. /dev/null脚本中作用
  9. C++_二维数组的动态申请内存3种方法
  10. DSP28335的RS232串口通讯试验
  11. libiconv移植
  12. k8s的命令行管理工具
  13. 计算机常见故障判断方法,电脑故障判断-计算机常见故障判断方法
  14. python 字典类型 get 参数_python如何利用urllib解析url参数成字典
  15. php开发公众号 token验证失败 其中一个原因
  16. 【游戏编程扯淡精粹】TinySTL源码阅读
  17. ssm智能餐厅菜品厨位分配管理系统 java
  18. PHP入门《PHP程序设计案例教程》——PHP网站开发
  19. idea重装后打不开,点起来没反应(难受)
  20. 如何有效管理自己电脑里的文件?

热门文章

  1. 计算机主机的核心部件是什么意思,电子计算机三大核心部件 是什么
  2. 双MIPI摄像头图像系统设计
  3. 网站点击流数据分析系统揭晓
  4. 野火STM32例程学习笔记
  5. Unity3D UGUI学习笔记
  6. 双电阻差分电流采样_合金采样电阻的特点及作用
  7. 【C生万物】 结构体篇
  8. 高中学历可以直接升本科学历吗
  9. IBM小型机的补丁安装
  10. 如何理解「数字化是 IT 公司在给传统企业贩卖焦虑」?