MYSQL基础学习记录——数据库基础内容

第一章 数据库概述与安装

1.什么是RDBMS

RDBMS就是关系型数据库,还有一类数据库就是非关系型数据库,DBMS;

我们需要学习的是关系型数据库;

用通俗的语言表达,关系型数据库就是将复杂的数据结构简化为二元关系表示,也就是“二维表格”形式;

2.数据库的安装

我直接从MYSQL网站下载的,版本为8.0,企业目前大多数都用的是5.7版本的,看自己选择,大家可以自行下载;

安装过程无非就是下一步下一步,这里也忽略了

需要注意的是,请一定记住数据库的账号密码,这个很重要,真的!

由于命令行方式敲命令过于难受,本人直接安装了一款图形化管理工具,DBeaver社区版,是一款免费的软件,大家可自行官网安装;

数据库图形化工具真的很多很多种,大家可以看自己喜好下载安装;

第二章 SQL分类

分类标准不同,这里简单分类下:

1. DDL:数据定义语言

举例:create,alter,drop,rename,truncate;

我的理解是这些语言可以初步建立对数据库和表的结构;

2. DML:数据操作语言

举例:insert,delete,update,select;

我的理解是这些语言可以对数据库中的表数据进行一系列操作,也就是我们常说的增、删、改、查、4个操作;

3. DCL:数据控制语言

举例:commit,rollback,savepoint,grant,revoke;

我的理解是这些语言可以控制整个数据的执行操作情况,比如解决是否真的删除,误删了怎么办等等处理方式;

第三章 SQL规则与规范

1.规则

规则就是必须要去遵守的内容点

1)子句分行书写,使用缩进;

2)每条命令以分号;或者\G或者\g来结束(我建议是用分号);

3)关键字不能缩写,也不能分行写;

4)标点符号:

     (1)成对出现,成对结束;

     (2)英文半角输入;

     (3)字符串类型和日期时间类型用单引号表示,其他的双引号;

     (4)列的别名,用双引号,最好别省略AS;

2.规范

规范就是建议大家去遵守的内容

由于操作系统不同的原因,MYSQL的大小写有所不同;

在Windows系统下,大小写不敏感,所以数据库不会报错;

在Linux系统下,大小写很敏感,写错就会报错;

所以建议遵守以下书写规范:

1)小写:数据库名、表名、表别名、字段名、字段别名;

2)大写:关键字、函数名、变量名;

3.注释

就是将你不用执行的或者帮你标注语句意思的字句,注释起来,数据库会忽略执行;

用好注释,可以增加整体语句的可读性,也会避免我们或者别人看懂语句字段含义;

1)单行,用#号,注意一点的是这是MYSQL特有的,其他数据库慎用;

2)单行,用--,通用性,注意要在-后面必须有至少一个空格再跟上要注释的内容;

3)多行,/*.........*/

第四章 SELETE语句基本结构

1.SELECT * FROM DUAL;

select * from XXX;
这个语句结构可能是数据库中最最最常用的结构了,没有之一;

具体含义如下:

 * 代表字段名,或者说是列名,可以有单个,也可以写多个,要想显示表内所有字段的内容,就用*号代表;

      (其实这里说的不是很规范,严格来说,是SELECT与FROM之间的内容,是我们想要显示的字段名,当然这中间可能也会有关键字等,具体内容具体分析,不能一棒子打死,太绝对;)

 DUAL,在from后面跟上表名,同样表可以列多个,结构可能就是变得有点复杂;

       (DUAL,一个伪表,不存在的,我们在练习过程中,可以用,特别方便;)

2.列的别名

模板:select 字段1 字段别名,字段2 “字段别名”,字段3 AS 字段别名 from 表名;

从上述模板可以看出,字段别名有三种方式表示,我觉得还是看自己习惯吧,手动滑稽:

1)直接空格加别名;

2)空格加字段名,字段名用双引号括起来;

3)空格AS空格字段名;

3.去除重复行

关键字:DISTINCT

模板:select distinct 字段名 from 表名

单独字段时使用,常用在子查询当中;

4.空值运算

关键字:NULL

由于表格中的数据不一定必须有数据,可能是空的,所以用NULL代表无数据;

在表格进行相关运算时,可能会参与运算;

参与运算时,该结果一定也为空;

要注意的是NULL不等于0,也不代表空,也不代表‘null’这个数据;

必须参与运算时,解决办法就是通过函数将其转化为其他值;

举例:a*(1+ifnull(b,0))*12

a,b为某字段,当b列数据为空值NULL时,ifnull函数会将b列数据替换为0进行运算;

5.着重号

用``表示,即ESC按键下方的按键,使用场景为字段与关键字冲突(一致)的时候用;

6.查询常数

其字段并不在表中,但出于工作需要,可使用此方式;

用单引号‘’括起来,比如‘软件’,写到别名处;

7.显示表结构

关键字:DESC

显示表中字段的详细信息;

8.过滤条件

关键字:WHERE

从表中过滤出想要的字段名;

第五章 运算符

1.算术运算符

可进行基础运算;

常见的: 加、减、乘、除、取余(+、-、*、/、%(mod))

div:分母为0时,结果为null;

mod:除数为负数,则结果也为负数;

2.比较运算符

1) =、>、<、>=、<=、<>或!=、<=> 安全等于

说明:结果为真,返回1,结果为假,返回0;其他,则为null(在实际应用总不会有结果);

若表中有null数据要查,可以用<=>安全等于来查询;

2) is null,is not null;isnull(); 函数;

3)least 最小值 greast最大值;

4)between…and… 包含在…之间的 否定用not; 上界与下界条件不可互换位置;

5)in not in;

6)like:模糊查询; 用%来代表,可放前、中、后任意位置;

7)regexp,rlike 正则表达式;

3.逻辑运算符

and (&&) 与

or (||) 或

not ()

第六章 排序与分页

1.排序

1)未排序操作时,默认为插入数据时的顺序;

关键字:order by

升序:ASC 默认值

降序:DESC

2)可以使用列别名来代替

3)执行过程:从from开始,再从select,然后order by,因此where后面不能写列别名;

4)二级(三级)排序,后面直接跟上即可。(这句写的笔记,不记得什么意思了,没懂,先记上)

2.分页

当需要浏览的数据量过大,无法在一页内完整显示时,使用;

关键字:limit X,Y 位置偏移量,条目数(行数)

举例:每页显示M条数据,此时显示第N页,公式为: limit (N-1)*M,M

声明位置:order by之后

第七章 多表查询

1.多表连接

语句:select * from where A表.列名 = B表.列名 and C表.列名 = B表.列名

2.多表查询分类

等值连接 VS 非等值连接

自连接 VS 非自连接

内连接 VS 外链接

1)非等值连接举例:

select a.列名,a.列名,b.列名

from a表,b表

where a.列名 >= b.列名 and a.列名 <=b.列名

2)自连接:同一张表中取数据,通过取别名来区分取数;

3)内连接与外链接:

内连接:取数是where条件满足的数据;

外连接:与内连接相反; 外连接分三种,左外连接,右外连接,满外连接; left / right/ full join … on … (MYSQL不支持满外连接,不可以用full,用union all代替)

特别说明:MYSQL不支持SQL92语法,即不能使用“+”作为连接,支持SQL99语法,即join…on…(可以去掉where用on代替)

举例:select a.列名,b.列名

 from  a表 left (right) join b表

 on a.列=b.列

 一般哪边数据多就放哪边;

3.7种join的实现方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zvc9bdZ5-1666962859658)(image.png)]

(1)左外连接:上图左上角

select 表.列

from  a表名

left  join b表

on a.key = b.key;

(2)内连接:上图中

select 表.列

from  a表名

inner  join b表

on a.key = b.key;

(3)右外连接:上图右上角

select 表.列

from  a表名

right  join b表

on a.key = b.key;

(4)A-A∩B:上图左中图

select 表.列

from  a表名

left  join b表

on a.key = b.key

where b.key is null;

(5)B-A∩B:上图右中图

select 表.列

from  a表名

left  join b表

on a.key = b.key

where a.key is null;

(6) 满外连接:上图左下图,图3和图4的集合,使用union all连接两个select语句

select 表.列

from  a表名

full  outer join b表

on a.key = b.key

(7) 上图右下图,图4和图5的集合,使用union all连接两个select语句

select 表.列

from  a表名

full  outer join b表

on a.key = b.key

where a.key is null or b.key is null;

第八章 函数

1.函数分类

按照函数的输出方式,分为单行函数和聚合函数;

1)常见的单行函数(一行输出一行数据):

数值函数、字符串函数、日期时间函数、流程控制函数、加/解密函数、信息函数和其他函数;

2)常见的聚合函数(多行内容输出一行数据):

avg、sum、max、min、count;(count统计列的个数,null值不计)

avg = sun/count;

3)group by 按照某列分组;

有几列就必须group by几列;

声明位置:在from之后,where之后,order by之后,linit之前;

with rollup 不能和order by同时使用;

4)having 过滤数据使用 和where作用相似,但有所不同的应用场景;

(1)使用聚合函数时,必须用having,不可以用where

(2)having必须放在group by之后

(3)having是用了SQL中group by再用,否则没有意义,先分组再过滤;

(4)where和having同时存在时,where执行效率更高;

2.SQL底层执行原理

1)SQL语句完整结构

select 列,列,列,(存在聚合函数)

from 表 (left/right) join

on 多表的连接条件

where …(不包含聚合函数的过滤条件)

group by…

having (包含聚合函数的过滤条件)

order by…

limit

2)SQL语句执行过程

from 表 → on → left/right join → where → group by → having → select → distinct → order by → limit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoderYuanSir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值