《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 分钟前
【论文精读】LPT: Long-tailed prompt tuning for image classification
人工智能·深度学习·机器学习·计算机视觉·论文笔记
深圳市青牛科技实业有限公司17 分钟前
【青牛科技】应用方案|D2587A高压大电流DC-DC
人工智能·科技·单片机·嵌入式硬件·机器人·安防监控
零炻大礼包29 分钟前
【SQL server】数据库远程连接配置
数据库
水豚AI课代表37 分钟前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
zmgst38 分钟前
canal1.1.7使用canal-adapter进行mysql同步数据
java·数据库·mysql
几两春秋梦_38 分钟前
符号回归概念
人工智能·数据挖掘·回归
令狐少侠201138 分钟前
explain执行计划分析 ref_
mysql
随心............39 分钟前
python操作MySQL以及SQL综合案例
数据库·mysql
€☞扫地僧☜€40 分钟前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
CopyDragon1 小时前
设置域名跨越访问
数据库·sqlite