《MySQL数据库基础知识总结》

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。

MySQL是中型关系型数据库,使用表来存储数据,利用表和表之间的关系来存储数据和数据之间的关系

MySQL数据库

  • 一、环境准备
    • [1. MySQL下载及安装](#1. MySQL下载及安装)
    • [2. MySQL启动](#2. MySQL启动)
    • [3. MySQL客户端连接](#3. MySQL客户端连接)
    • [4. MySQL基本语法](#4. MySQL基本语法)
  • 二、数据库操作
    • [1. 查询](#1. 查询)
    • [2. 创建](#2. 创建)
    • [3. 使用](#3. 使用)
    • [4. 删除](#4. 删除)
    • [5. 案例](#5. 案例)
  • 三、表操作
    • [1. 查询](#1. 查询)
    • [2. 创建](#2. 创建)
    • [3. 修改](#3. 修改)
    • [4. 删除](#4. 删除)
    • [5. 数据类型](#5. 数据类型)
    • [6. 案例](#6. 案例)
  • 四、数据操作
    • [1. 添加](#1. 添加)
    • [2. 修改](#2. 修改)
    • [3. 删除](#3. 删除)
    • 4.查询
    • [5. 案例](#5. 案例)
  • 五、查询操作
    • [1. 条件查询 where](#1. 条件查询 where)
    • [2. 分组 group by](#2. 分组 group by)
    • [3. 排序 order by,desc/asc](#3. 排序 order by,desc/asc)
    • [4. 条件 having](#4. 条件 having)
    • [5. 分页查询 limit](#5. 分页查询 limit)
    • [6. 特殊查询](#6. 特殊查询)
    • [7. 联合查询](#7. 联合查询)
    • [8. 子链接查询](#8. 子链接查询)
    • [9. 案例](#9. 案例)
  • 六、常用函数
    • [1. 信息收集类](#1. 信息收集类)
    • [2. 注入相关](#2. 注入相关)

一、环境准备

1. MySQL下载及安装

MySQL 8.0社区版下载及安装教程

2. MySQL启动

使用MySQL前,必须启动MySQL的服务。

cmd启动mysql服务:

powershell 复制代码
net start mysql80

下列两种情况,表示服务启动:

注意:mysql80是默认的mysql服务名,如果你修改过服务名,则需要改成修改后的服务名。

cmd关闭mysql服务:

powershell 复制代码
net stop mysql80

下面这种情况,表示服务关闭:

3. MySQL客户端连接

MySQL连接客户端的三种方式

4. MySQL基本语法

  1. SQL语句以分号结尾。
  2. SQL语句不区分大小写
  3. 注释的内容不被执行
    a. 单行注释:-- 注释内容 或 # 注释内容
    b. 多行注释:/注释内容 /

二、数据库操作

1. 查询

sql 复制代码
show databases;					# 查看所有数据库
select database();				# 查看当前使用的数据库
show create database test;		# 查看数据库建表语句
show variables like '%character%';	# 查看当前使用的字符集

2. 创建

sql 复制代码
create database 数据库名;

3. 使用

sql 复制代码
use 数据库名;

4. 删除

sql 复制代码
drop database 数据库名;

5. 案例

1)查看MySQL中都有哪些数据库:有4个数据库

2)创建一个 user 数据库:创建成功

3)再次查看MySQL中有哪些数据库:可以看到,多了一个 user 表

4)查看当前使用的数据库:NULL表示当前没有使用数据库

5)使用 user 数据库:使用成功

6)再次查看当前使用的数据库:变成了 user

7)删除 user 数据库:删除成功

8)再次查看MySQL中有哪些数据库:user 表已被删除

三、表操作

1. 查询

sql 复制代码
show tables;				# 查看当前数据库下的所有表
show create table student;	# 查询建表语句
desc student;				# 查询表结构

2. 创建

sql 复制代码
create table 表名(
	字段1 字段1的数据类型,
    字段2 字段2的数据类型,
    ......
    字段3 字段3的数据类型,
)

3. 修改

修改表名

sql 复制代码
alter table 表名 rename 新表名;

添加字段

sql 复制代码
alter table 表名 add 字段名 数据类型(长度);

修改数据类型

sql 复制代码
alter table 表名 modify 字段名 新数据类型(长度)

修改字段名和字段类型

sql 复制代码
alter table 表名 change 旧字段名 新字段名 数据类型(长度);

删除字段

sql 复制代码
alter table 表名 drop 字段名

4. 删除

sql 复制代码
drop table 表名;

5. 数据类型

简单介绍两种最常用的数据类型:

  1. int:数值型,常用来保存数字
  2. varchar:字符型,常用来保存字符串

6. 案例

前提:创建一个 user 数据库,并使用 user 数据库。

1)查看当前数据库中都有那些表:空,一个表也没有

2)创建一个 student 表,有三个字段:

  1. id:int 类型,存储学号
  2. name:varchar 类型,存储学生姓名
  3. age:int 类型,存储年龄

注意:int(10) 括号中的数字是数据的最大长度,单位是字节。

3)创建成功后,再次查看数据库中都有哪些表:多了一个 student 表

4)删除 student 表,再次查看数据库中有哪个表:空,student 表已被删除

四、数据操作

1. 添加

指定字段添加数据

sql 复制代码
insert into 表名 (字段名1,......) values(值1,......),(值1,......),......

全部字段添加数据

sql 复制代码
insert into 表名 values (值1,......),(值1,......),......

2. 修改

sql 复制代码
update 表名 set 字段1 = 值1,......[where 条件]

3. 删除

sql 复制代码
delete from 表名 [where 条件]

4.查询

sql 复制代码
select * from 表名

5. 案例

1)user 数据库中,创建 user 表,建表语句如下:

sql 复制代码
use user;
create table student(
	id int(10),
	name varchar(50),
	age int(10)
);

2)指定字段(id,name,age)添加两条数据后,查询 user 表中的数据:数据添加成功

3)向所有字段添加一条数据后,查询 user 表中的数据:数据添加成功

4)修改 zhangsan 的年龄为 28:,删除 lisi 的数据后,查询 user 表中的数据:

五、查询操作

数据库90%的操作都是查询,这里单独列出来。

1. 条件查询 where

sql 复制代码
select 字段列表 from 表名 where 条件列表;
sql 复制代码
select * from student;					# 查询表中所有数据
select * from student where age = 1;	# 条件过滤
select name from student where age = 1;	# 指定字段
select name,age from student,user,user2;# 多个字段/表,使用逗号分隔
select distinct scroe from student;		# 去重
select name as newname from user;		# 别名

2. 分组 group by

提示:分组查询必须配合聚合函数。

sql 复制代码
select class ,count(grade) from student group by class;

3. 排序 order by,desc/asc

sql 复制代码
select 字段列表 from 表名 order by 排序字段列表;
sql 复制代码
select * from student group by grade desc;	# 降序排列
select * from student group by grade asc;	# 升序排列

4. 条件 having

提示:having必须在分组后使用

sql 复制代码
select * from student having grade > 60 order by grade asc;

5. 分页查询 limit

sql 复制代码
select 字段列表 from 表名 limit 第几条开始,显示几条;

查询条件可以互相配合使用,完整的查询语法如下:(查询条件可以省略,但顺序不能变)

sql 复制代码
select 字段列表
from 表名
where 条件列表
group by 分组字段列表
having 分组后条件列表
order by 排序字段列表
limit 分页参数

6. 特殊查询

sql 复制代码
select name,age+scroe as num from student;				# 查询的列 支持运算符
select salary from employee where bonus is not null;	# 查询非空
select salary+ifnull(bonus,0) 总工资 from employee;	  # 为null则取0

7. 联合查询

两张表的查询结果一起显示,字段数必须相同,默认去重

sql 复制代码
select * from student
union [all/distinct]
select * from student;

8. 子链接查询

在一条select语句中,嵌入另一条select语句

sql 复制代码
select * from exam where id = ( select id from user where name = '张三');
select * from exam where id in (select id from user);
select * from exam where (id,name) = (select id,name from user);

9. 案例

1)查询 student 表中满足条件( age > 18 )的用户信息:

2)在上面查询的基础上,按照名字排序(默认按照id排序):排序发生变化

3)在上面查询的基础上,分页展示信息,从第1条数据开始,展示1条:

注意:数据从0条开始计数。

相关文章推荐,点击下方链接查看文章:
MySQL order by关键字详解
order by排序判断字段数原理详解

六、常用函数

1. 信息收集类

函数 作用
user() 当前使用数据库的用户
version() 数据库版本
database() 当前使用的数据库
@@datadir 数据库所在位置
@@version_compile_os 操作系统版本

2. 注入相关

点击左侧函数名,可查看函数详细使用方法

函数 作用
group_concat( 字段1,字段2) 将多行查询结果拼接成一行
concat(str1,str2) 拼接多个字符串
substr(str,start,length) 截取字符串
if(condition,T,F) 条件判断
length(str) 返回字符串长度
Hex(str) 字符串转换成16进制
sleep(time) 延时指定时间(单位秒)
相关推荐
陈苏同学3 分钟前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
月空MoonSky12 分钟前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa12 分钟前
【MySQL 06】表的增删查改
数据库·mysql
吾名招财21 分钟前
yolov5-7.0模型DNN加载函数及参数详解(重要)
c++·人工智能·yolo·dnn
羊小猪~~38 分钟前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm
我是哈哈hh41 分钟前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
鼠鼠龙年发大财1 小时前
【鼠鼠学AI代码合集#7】概率
人工智能
龙的爹23331 小时前
论文 | Model-tuning Via Prompts Makes NLP Models Adversarially Robust
人工智能·gpt·深度学习·语言模型·自然语言处理·prompt
向上的车轮1 小时前
Django学习笔记二:数据库操作详解
数据库·django
工业机器视觉设计和实现1 小时前
cnn突破四(生成卷积核与固定核对比)
人工智能·深度学习·cnn