MySQL数据库基础

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 把相同列的分为一组,如果不使用聚合函数的话,数据可能可以会产生不想要的结果。。。group by 可以搭配条件 :1. where 一般写在前面,先执行where,再执行group by,最后执行聚合。2. having 一般写在后面,先执行group by 再执行聚合,最后执行having。

目录


数据库约束


null


unique


default


primary key


外键约束


聚合查询


聚合函数


group by


联合查询


理解笛卡尔积


内连接


外连接


自连接


子查询


合并查询


目标:


1. 数据库约束


2. 聚合查询


3. 联合查询


数据库约束

对数据库中的数据来说,有的是合法的,有的是非法的,我们为了使数据库中的数据为合法的进而引入了 “约束 ”。


约束类型 说明

null 值不能为空

unique 值不能重复

default 没有赋值时的默认值

primary key 使某列有位移标识

外键约束 使一个表与另一个表匹配完整

null

使插入的值不能为空,为空的话,就不能插入。


unique

不能插入原来已有的值


注意:


unique 约束会让后续插入数据 / 修改数据 的时候,都先进行一次 查询 操作。


default

没有赋值时的默认值(默认情况下为空)


primary key

1. 一个表中只能有一个primary key


2. 设置为priamry的列,具有唯一性,并且不能为空


3. 带有主键的表 / 列,每次插入也都进行查询(影响不大,通过索引查)


如何保证主键唯一 ???


mysql 提供了 " 自增主键" ,主键一般为 int / bigint 的类型,在插入数据的时候,不必手动指定主键值,由服务器自动分配(从 1 开始递增),当然也可以自己插入,但是插入的值必须比上一个值大(系统插入的时候会按照当前最大值进行分配)。


外键约束

foreign key (当前表中被约束的列) references class (根据这个列约束);


1. 使两个表存在关系


2. 子表中的数据在对应的父表的列中要存在


3. 想删除父表的的时候,先删除子表


3. 父表中必须有主键(primary kay)


聚合查询

聚合函数

表达式查询是针对 列 和 列 之间的进行运算的,聚合查询相当于 行 和 行 之间的查询。因此 sql 中提供了 聚合函数。


1. count(...) 查询出来结果集的行数(“...” 为 “ * ” 的时候null也能算入)


2. sum(...) 把这一列的行求和(自动把null排除)


3. avg(...) 求平均值


4.max(...) 求最大值 min(求最小值)


eg:


select count(*) from 表名;


select sum / avg / max (列名) from 表名;


group by

select 列名, 聚合函数 from 表名 group by 列名;


把相同列的分为一组,如果不使用聚合函数的话,数据可能可以会产生不想要的结果。。。


group by 可以搭配条件 :


1. where 一般写在前面,先执行where,再执行group by,最后执行聚合。


2. having 一般写在后面,先执行group by 再执行聚合,最后执行having。


联合查询

理解笛卡尔积

在sql中,笛卡尔积的应用用于两个表求笛卡尔积,求后成为一个表。


假如有两个表,表1(2行,2列),表2(3行,3列)


求完笛卡尔积是将第一个表中的行和第二个表中的每一行进行结合,最终形成一个 6 行,5 列的表

e8d99119aacf2a73bea55e51c18f0f2d_47ab853cd7084651823d24ac00ad7924.png



内连接

select 列名, 列名... from 表1, 表2 where 条件 gruop by 列;


select 列名, 列名... from 表1 (inner)join 表2 on 条件;


1. 先将两个表进行笛卡尔积


select * from 表1, 表2;


2. 加上连接条件,筛选出有效数据


select * from 表1, 表2 where ... ;


3. 针对列进行精简


select 列名, 列名... from 表1, 表2 where ... ;


4. 针对上述结果进行聚合查询


select 列名, 列名... from 表1, 表2 where ... gruop by 列;


外连接

左外连接:select 列名, 列名... from 表1 left join 表2 on 条件;


右外连接:select 列名, 列名... from 表1 right join 表2 on 条件;


左外连接:以左侧表为基准,保证左侧表的数据都存在,如果对应列右侧不存在,填为空


右外连接:以右侧表为基准,保证右侧表的数据都存在,如果对应列左侧不存在,填为空


自连接

select 列名, 列名... from 表1,表1 where 条件;


sql中一张表只能进行列和列的比较,但是同一个表进行笛卡尔积就能将行的关系转换为列的关系。


子查询

select ... from 表1 where 字段 = (select ... from ...);


select ... from 表1 where 字段1 in (select ... from ...);


select ... from 表1 where exists (select ... from ... where 条件);


select ... from 表1, (select ... from ...) as tmp where 条件;


合并查询

-- UNION:去除重复数据


select ... from ... where 条件 union select ... from ... where 条件


-- UNION ALL:不去重


select ... from ... where 条件 union all select ... from ... where 条件


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础与实战应用
MySQL数据库基础与实战应用
89 0
|
5月前
|
SQL 安全 关系型数据库
sql数据库技术
SQL(Structured Query Language,结构化查询语言)数据库技术涉及多个方面,包括其定义、功能、应用以及查询结构等。以下是对这些方面的详细解释: 一、SQL数据库定义与功能
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库基础
MySQL数据库基础
|
11月前
|
关系型数据库 MySQL 数据库
一文带你了解MySQL数据库基础
一文带你了解MySQL数据库基础
116 1
|
关系型数据库 MySQL 数据库
MySQL数据库的设计
MySQL数据库的设计
|
SQL 关系型数据库 MySQL
2.MySQL数据库基础
2.MySQL数据库基础
72 0
|
SQL 关系型数据库 MySQL
MySQL数据库的基础练习(上)
MySQL数据库的基础练习(上)
195 0
MySQL数据库的基础练习(上)
|
关系型数据库 MySQL 数据库
MySQL数据库的基础练习(下)
MySQL数据库的基础练习(下)
224 0
MySQL数据库的基础练习(下)
|
存储 SQL 缓存
MySQL数据库系列(一)------基础
数据不会随程序结束而消失
156 0
MySQL数据库系列(一)------基础
|
SQL 存储 关系型数据库
MySQL数据库基础(1)
MySQL数据库基础(1)
146 0
MySQL数据库基础(1)