MySQL入门必备知识与语法总结(带示例收藏版)

一、数据库与SQL初识

1.1 数据库是什么?有什么作用呢?

数据库就是指数据存储的库,作用就是组织数据并存储数据。

1.2 数据库如何组织数据呢?

按照:库 -> 表 -> 数据 三个层级进行组织

1.3 数据库软件是什么?我们学习哪种数据库软件呢?

数据库软件就是提供库->表->数据,这种数据组织形式的工具软件,也称之为数据库管理系统。
常见的数据库软件有:Oracle、MySQL、SQL Server、PostgreSQL、SQLite…
在这里插入图片描述

1.4 数据库和SQL的关系是?

数据库(软件)提供数据组织存储的能力,SQL语句则是操作数据、数据库的工具语言。

二、MySQL的安装与配置

MySQL安装详见:https://blog.csdn.net/m0_46983541/article/details/129823915?spm=1001.2014.3001.5501
MySQL图形化工具DBeaver安装与连接详见:https://blog.csdn.net/m0_46983541/article/details/129836322

三、SQL语言基础

3.1 SQL的概述

SQL全称: Structured Query Language,结构化查询语言,用于访问和处理数据库的标准的计算机语言。 SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。
经过多年发展,SQL以成为数据库领域统一的数据操作标准语言,可以说几乎市面上所有的数据库系统都支持使用SQL语言来操作。简单来说,SQL语言就是操作数据库的专用工具

3.2 SQL语言分类

由于数据库管理系统(数据库软件)功能非常多,不仅仅是存储数据,还要包含:数据的管理、表的管理、库的管理、账户管理、权限管理等等。所以,操作数据库的SQL语言,也基于功能,可以划分为4类。

名称作用
DDL(Data Definition Language)库的创建删除、表的创建删除等
DML(Data Manipulation Language)新增数据、删除数据、修改数据等
DCL(Data Control Language)新增用户、删除用户、密码修改、权限管理等
DQL(Data Query Language)基于需求查询和计算数据

3.3 SQL的语法特征

特征类别特点
语句大小写SQL语言,大小写不敏感
语句结束标志SQL可以单行或多行书写,最后以;号结束
注释单行注释: – 注释内容(–后面一定要有一个空格);单行注释:# 注释内容(# 后面可以不加空格,推荐加上);多行注释:/* 注释内容 */

注释示例:
在这里插入图片描述

四、DDL(Data Definition Language)

4.1 DDL库管理语法

4.1.1 语法格式与作用

语法格式作用
SHOW DATABASES;查看数据库
USE 数据库名;使用数据库
CREATE DATABASE 数据库名 [CHARSET UTF8];创建数据库
DROP DATABASE 数据库名;删除数据库
SELECT DATABASE();查看当前使用的数据库

4.1.2 示例

#查看数据库
show databases;

在这里插入图片描述

# 创建一个test数据库
create database test charset utf8;

在这里插入图片描述

#使用test数据库
use test;

在这里插入图片描述

#查看当前使用数据库
select database();

在这里插入图片描述

#删除test数据库
drop database test;

在这里插入图片描述

4.2 DDL表管理语法

4.2.1 语法格式与作用

语法格式作用
SHOW TABLES;查看有哪些表
CREATE TABLE 表名称(
列名称 列类型,
列名称 列类型,

);
创建表
列类型:
int(整数);float(浮点数);
varchar(长度)(文本,长度为数字,做最大长度设置);
date(日期类型);timestamp(时间戳类型)。
DROP TABLE 表名称;
DROP TABLE IF EXISTS 表名称;
删除表

4.2.2 示例

前提:使用一个数据库,比如:use test;

#创建表student
create table student(
    id int,
   name varchar(20)
);

在这里插入图片描述

#查看test库有哪些表
show tables;

在这里插入图片描述

#删除表student
drop table student;

在这里插入图片描述

五、DML(Data Manipulation Language)

DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。主要有三种语法:INSERT数据插入DELETE数据删除UPDATE数据更新

5.1 数据插入 INSERT

5.1.1 基础语法

在这里插入图片描述

5.1.2 示例

# 仅插入id数据
insert into student(id) values(1001),(1002),(1003);

在这里插入图片描述

# 插入多列数据
# 插入字符串数据,需要用单引号包围
insert into student(id,name,age) values(1004,'老李',18),(1005,'老赵',16);

在这里插入图片描述

# 插入全部列数据的快捷写法
# 插入全部列的时候,列的列表可以省略
insert into student values(1006,'老王',20);

在这里插入图片描述

5.1.3 注意

(1) 插入字符串数据,需要用单引号包围;
(2)插入全部列的时候,列的列表可以省略。

5.2 数据删除 DELETE

5.2.1 基础语法

在这里插入图片描述

5.2.2 示例

原student表内容
在这里插入图片描述

/*
 * 条件判断:列 操作符 值
 * 操作符:=   <  >  <=  >=  !=  等等
 */
# 删除id = 1的数据
delete from student where id = 1001;

在这里插入图片描述

# 删除name = '老夏'的数据
delete from student where name = '老夏';

在这里插入图片描述

# 删除age > 18的数据
delete from student where age > 18;

在这里插入图片描述

# 删除全部数据
delete from student;

在这里插入图片描述

5.3 数据更新 UPDATE

5.3.1 基础语法

在这里插入图片描述

5.3.2 示例

原student表数据
在这里插入图片描述

# 修改id = 1004的name为李云龙
update student set name = '李云龙' where id = 1004;

在这里插入图片描述

# 修改所有age为18
update student set age = 18;

在这里插入图片描述

六、DQL(Data Query Language)

6.1 基础查询

6.1.1 基础查询语法

在这里插入图片描述
含义是:从(FROM)表中,选择(SELECT)某些列进行展示。

6.1.2 示例

查询表的数据
在这里插入图片描述

# 查询student表的多列数据
select name,age from student;

在这里插入图片描述

#查询全部列的快捷写法
select * from student;

在这里插入图片描述

6.1.3 过滤查询的语法

在这里插入图片描述

6.1.4 示例

查询表的数据

#查询id和name两个列,age < 19
select id,name from student where age < 19;

在这里插入图片描述

#查询id = 1005的全部列
select * from student where id = 1005;

在这里插入图片描述

6.2 分组聚合

6.2.1 基础语法

在这里插入图片描述

6.2.2 常见聚合函数

在这里插入图片描述

6.2.3 示例

# 创建teacher表
create table teacher(
    id int,
    name varchar(20),
    age int,
    gender varchar(10)
)

# 插入数据
insert into teacher values(10001,'李老师',30,'男'),(10002,'宋老师',40,'女'),
   (10003,'崔老师',45,'男'),(10004,'王老师',33,'女'),(10005,'杨老师',35,'男');

  # 查询teacher表数据
select * from teacher;

在这里插入图片描述

# 按性别分组,统计各组人数
select gender,count(*) from teacher group by gender;

在这里插入图片描述

# 按性别分组,统计平均年龄
select gender,avg(age) from teacher group by gender;

在这里插入图片描述

# 按性别分组,统计最大和最小年龄
select gender,max(age),min(age) from teacher group by gender;

在这里插入图片描述

6.2.4 注意

SELECT中,除了聚合函数外,GROUP BY 了哪个列,哪个列在能出现在SELECT中。
示例:

# SELECT中,除了聚合函数外,GROUP BY 了哪个列,哪个列在能出现在SELECT中
select name,max(age),min(age) from teacher group by gender;

在这里插入图片描述

6.3 排序分页

可以对查询的结果,使用ORDER BY 关键字,指定某个列进行排序。

6.3.1 基础语法

在这里插入图片描述

6.3.2 示例

# 按年龄升序排列
select * from teacher order by age asc;

在这里插入图片描述

# 按年龄降序排列
select * from teacher order by age desc;

在这里插入图片描述

# 查询id > 10003的数据,并按age升序排列
select * from teacher where id > 10003 order by age asc;

在这里插入图片描述

# 查询结果只保留3条
select * from teacher limit 3;

在这里插入图片描述

# 查询年龄最大的3位老师
select * from teacher order by age desc limit 3;

在这里插入图片描述

# 根据age列查询第3条开始后2条数据
select * from teacher order by age limit 3,2;

在这里插入图片描述

6.3.3 注意

(1)WHERE、GROUP BY、ORDER BY、 LIMIT均可按需求省略
(2)SELECT 和 FROM 是必写的
(3)执行顺序:FROM -> WHERE -> GROUP BY和聚合函数 -> SELECT -> ORDER BY -> LIMIT

6.4 JOIN关联

6.4.1 准备关联表格

# 创建teacher表
create table teacher(
    id int,
    name varchar(20),
    age int,
    class_id int
)

# 插入老师数据
insert into teacher values(10001,'李老师',30,3),(10002,'宋老师',40,1),
   (10003,'崔老师',45,1),(10004,'王老师',33,3),(10005,'杨老师',35,2);
 
select * from teacher;

在这里插入图片描述

# 创建class表
create table class(
    id int,
    name varchar(20)
)

# 插入班级数据
insert into class values(1,'理科一班'),(2,'理科二班'),(3,'理科三班');

select * from class;

在这里插入图片描述

6.4.2 多表查询-FROM多表

6.4.2.1 基础的FROM多表语法:
在这里插入图片描述
直接在FROM中写多个表,通过AS可以给出表别名(可以省略)。
6.4.2.2 示例

# 查询老师信息,并同步老师所在班级(非含缩写形式)
select teacher.*,class.name from teacher,class where teacher.class_id = class.id;

在这里插入图片描述

# 查询老师信息,并同步老师所在班级(缩写形式)
select t.*,c.name from teacher as t,class as c where t.class_id = c.id;
# 查询老师信息,并同步老师所在班级(缩写形式,省略as)
select t.*,c.name from teacher t,class c where t.class_id = c.id;

查询结果同上。
6.4.2.3 注意
不推荐使用,因为会先产生笛卡尔集,然后再过滤,效率低下。
如不加关联条件情况下:

# 查询老师信息,并同步老师所在班级(非含缩写形式)
select teacher.*,class.name from teacher,class;

在这里插入图片描述

6.5 内关联

直接使用FROM多表,尽管可以得到想要的结果,但是问题在于:它会让参与的表先产生笛卡尔积,然后再WHERE过滤,性能不太好。改进方式可以使用JOIN关联的写法,JOIN分为内、外两种关联方式。

6.5.1 基础语法

在这里插入图片描述

6.5.2 关联表格

在这里插入图片描述
在这里插入图片描述

6.5.3 示例

# 内关联查询(inner可以省略)
select t.*,c.name from teacher as t inner join class as c on t.class_id = c.id;

在这里插入图片描述

6.5.4 注意

内关联是交集模式,即必须双向匹配才可以,因此非匹配部分不显示,若想显示,可以用外关联方式。

6.6 外关联

关联表格同上。

6.6.1 基础语法

在这里插入图片描述
外关联分左右,必须选择LEFT JOIN(左外关联) 或者 RIGHT JOIN(右外关联), 二选一。

6.6.2 左外关联

# 左外关联(outer可以省略)
select t.*,c.name from teacher as t left outer join class as c on t.class_id = c.id;

在这里插入图片描述

6.6.3 右外关联

# 右外关联(outer可以省略)
select t.*,c.name from teacher as t right  outer join class as c on t.class_id = c.id;

在这里插入图片描述

6.6.4 注意

(1)外关联分左右,以哪边为主,必须选择LEFT JOIN(左外关联) 或者 RIGHT JOIN(右外关联), 二选一。
(2)为主的表的全部数据都会显示在结果集中,未关联到的数据以NULL代替。

有帮助的话,整理不易,麻烦点赞收藏呦,感谢感谢!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Z_凌云

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

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

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

打赏作者

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

抵扣说明:

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

余额充值