MySQL基础

  • 数据库介绍
  • MySQL数据库安装和使用
  • SQL语句
  • DDL之数据库操作
  • DDL之表操作
  • DML数据库操纵语言
  • SQL约束
  • DQL操作
  • 多表操作
  • MySQL索引
  • 开窗函数

        数据库就是存储数据的仓库,其本质是一个文件系统,按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
        随着互联网的高速发展,大量的数据在不断的产生,伴随而来的是如何高效安全的存储数据和处理数据,而这一问题成为了信息时代的一个非常大的问题。
         使用数据库可以高效的有条理的储存数据:
  • 1、可以结构化存储大量的数据,
  • 2、可以有效的保持数据的一致性、完整性。

常见数据库

数据库又可以分为关系型数据库和非关系型数据库

 

 


登录MySQL数据库

       MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录,有两种登录方式。

 

 

 


MySQL图形化开发工具-DataGrip

       DataGrip是JetBrains公司推出的管理数据库的产品,功能非常强大,可以兼容各种数据库,另外,JetBrains公司还有一款知名的IDE开发工具IDEA,用户体验非常不错。

 


DataGrip连接MySql

 

 

 

 

 

 


SQL语句介绍

      结构化查询语言(Structured Query Language)简称SQL,是关系型数据库管理系统都需要遵循的规范,是数据库认识的语句。不同的数据库生产厂商都支持SQL语句,但都有特有内容。

普通话:各数据库厂商都遵循的ISO标准。

方言:数据库特有的关键字。


SQL语句分类

SQL分类:

1. 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
2. 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等
3. 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。

数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等


SQL通用语法

SQL语句可以单行或多行书写,以分号结尾

可使用空格和缩进来增强语句的可读性

MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

例如:SELECT * FROM user。Select * from user;

同样可以使用/**/的方式完成注释  --  #

MySQL中的我们常使用的数据类型如下

 

 


创建数据库

create database 数据库名;    #直接创建数据库,如果存在则报错

create database if not exists bigdata_db;  #如果数据库不存在则创建

create database 数据库名 character set 字符集; #创建数据库时设置字符集


查看MySQL服务器中的所有的数据库

show databases;


删除数据库

格式:

drop database 数据库名称


使用数据库

选择数据库

    use   数据库名字

查看正在使用的数据库:

select database();


创建表

 


查看表

查看数据库中的所有表:

  格式:show tables;

查看表结构:

  格式:desc 表名;

  例如:desc sort;


删除表

格式:drop table 表名;


修改表结构格式

 


 

 

 


插入表记录:insert

 

 


更新表记录:update

 

 


删除记录:delete

 


主键约束

PRIMARY KEY 约束唯一标识数据库表中的每条记录。

1. 主键必须包含唯一的值。
2. 主键列不能包含 NULL 值。
3. 每个表都应该有一个主键,并且每个表只能有一个主键。

 


删除主键约束

 


自动增长列


 


 非空约束

 


唯一约束

 


delect语句

 


简单查询

 


条件查询

 


 

 


排序查询

 


聚合查询 

 

 


分组查询

分组查询是指使用group by字句对查询信息进行分组。

格式:

SELECT 字段1,字段2… FROM 表名 GROUP BY 分组字段 HAVING 分组条件;

分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。

having与where的区别:

1).having是在分组后对数据进行过滤.,where是在分组前对数据进行过滤

2).having后面可以使用分组函数(统计函数),where后面不可以使用分组函数

 


分页查询

分页查询在项目开发中常见,由于数据量很大,显示屏长度有限,因此对数据需要采取分页显示方式。例如数据共有30条,每页显示5条,第一页显示1-5条,第二页显示6-10条。

    格式:

 


insert into select 语句

 


多表操作

       实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系,接下来我们将在单表的基础上,一起学习多表方面的知识。

 


表与表之间的关系

l一对多关系:

  常见实例:客户和订单,分类和商品,部门和员工.

n一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键.

 


外键约束

       现在我们有两张表“分类表”和“商品表”,为了表明商品属于哪个分类,通常情况下,我们将在商品表上添加一列,用于存放分类cid的信息,此列称为:外键

 

 

 


一对多操作

 

category分类表,为一方,也就是主表,必须提供主键cid

products商品表,为多方,也就是从表,必须提供外键category_id

 


多表查询

1.交叉连接查询(基本不会使用-得到的是两个表的乘积) [了解]

语法:select * from A,B;这个结果有问题是错误的

2.交际运算:内连接查询(使用的关键字 inner join  -- inner可以省略)

n隐式内连接:select * from A,B where 条件;

n显示内连接:select * from A inner join B on 条件;

3.差集运算:外连接查询(使用的关键字 outer join -- outer可以省略)

n左外连接:left outer join

uselect * from A left outer join B on 条件;

n右外连接:right outer join

uselect * from A right outer join B on 条件;

 


子查询

 


索引

       索引是 MySQL 中一种十分重要的数据库对象。它是数据库性能调优技术的基础,常用于实现数据的快速检索。

       索引就是根据表中的一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表,实质上是一张描述索引列的列值与原表中记录行之间一一对应关系的有序表。

在 MySQL 中,通常有以下两种方式访问数据库表的行数据:

1) 顺序访问

顺序访问是在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据。这种方式实现比较简单,但是当表中有大量数据的时候,效率非常低下。

2) 索引访问

索引访问是通过遍历索引来直接访问表中记录行的方式。使用这种方式的前提是对表建立一个索引,在列上创建了索引之后,查找数据时可以直接根据该列上的索引找到对应记录行的位置,从而快捷地查找到数据。索引存储了指定列数据值的指针,根据指定的排序顺序对这些指针排序。


索引分类

根据存储方式的不同,MySQL 中常用的索引在物理上分为以下两类。

B-树索引

       B-树索引又称为 BTREE 索引,目前大部分的索引都是采用 B-树索引来存储的。B-树索引是一个典型的数据结构,基于这种树形数据结构,表中的每一行都会在索引上有一个对应值。因此,在表中进行数据查询时,可以根据索引值一步一步定位到数据所在的行。

哈希索引

       哈希(Hash)一般翻译为“散列”,也有直接音译成“哈希”的,就是把任意长度的输入(又叫作预映射,pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。

HASH 索引不是基于树形的数据结构查找数据,而是根据索引列对应的哈希值的方法获取表的记录行。


索引操作

 

 


删除索引

 唯一索引

 


删除索引

 


索引的使用原则和注意事项

虽然索引可以加快查询速度,提高 MySQL 的处理性能,但是过多地使用索引也会造成以下弊端:

1. 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
2. 除了数据表占数据空间之外,每一个索引还要占一定的物理空间。如果要建立聚簇索引,那么需要的空间就会更大。
3. 当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的维护速度。
4. 对于那些在查询中很少使用或参考的列不应该创建索引。因为这些列很少使用到,所以有索引或者无索引并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度,并增大了空间要求。

开窗函数

        MySql在8.0的版本增加了对开窗函数的支持,终于可以在MySql使用开窗函数了。

开窗函数的语法结构:

 


开窗函数介绍

row_number(),rank(),dense_rank()这三个函数都是用于返回结果集的分组内每行的排名

三者区别:

row_number:不管排名是否有相同的,都按照顺序1,2,3…..n

rank:排名相同的名次一样,同一排名有几个,后面排名就会跳过几次

dense_rank:排名相同的名次一样,且后面名次不跳跃

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凤凰AI

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

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

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

打赏作者

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

抵扣说明:

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

余额充值