Web安全
基础漏洞
01前端基础【HTML】
02前端基础【CSS】
03后端基础【PHP速通】
04后端基础【PHP面向对象】
05MySQL基础操作
06前后端联动【代码练习】
07SQL注入【1】
07SQL 注入【2】
08SQL注入 Labs
08SQL注入速查表
09XSS
09跨站脚本攻击【XSS】
09XSS Labs
10跨站请求伪造【CSRF】
11服务器端请求伪造【SSRF】
12XML 外部实体注入【XXE】
13代码执行漏洞
14命令执行漏洞
15文件包含漏洞
16文件上传漏洞
17反序列化漏洞
18业务逻辑漏洞
19未授权访问漏洞集合
20跨源资源共享【CORS】
21SSTI模板注入
22并发漏洞
23点击劫持【Clickjacking 】
24请求走私
25路径遍历
26访问控制
27身份验证漏洞
28WebSocket
29Web缓存中毒
30HTTP 主机头攻击
31信息泄露漏洞
32原型污染
33NoSQL注入
API 安全
01web应用程序
02HTTP协议
03API概述
04分类类型
05交换格式
06身份验证
07常见API漏洞
08crAPI靶场
09JWT
10OAuth 2.0身份验证
11GraphQL【1】
11GraphQL【2】
12DVGA靶场
13服务器端参数污染
14API文档
15API Labs
16OAuth Labs
17GraphQL API Labs
18JWT Labs
小程序
小程序抓包
数据库
MySQL
Oracle
MongoDB
Redis
PostgreSQL
SQL server
中间件
Nginx
Apache HTTP Server
IIS
Tomcat
框架
ThinkPHP
Spring
Spring Boot
Django
访问控制
-
+
首页
05MySQL基础操作
# 一、关于数据 ## 数据 1、数据(Date) 是用来描述事物的记录符号,是数据库中存储的基本对象,数据库的核心。 2、数据的形式多种多样,包括:数字、字母、文字、图形、声音、动画等。 ## 信息 1、信息通常指被加工处理过的数据, 是行为、决策的基础。 2、数据库软件不仅仅保存数据,而且具有加工数据产生信息的能力。 信息 \= 数据 + 处理。 ## 数据库 1、数据库(DataBase 简称DB),是长期储存在计算机内、有组织的、可共享的相关数据的集合。 2、数据库不仅仅包括数据本身,还包括数据间的联系,而且能够被不同用户和程序访问。 ## 数据库系统 1、数据库系统(DataBase System 简称DBS),指在计算机系统中引入数据库后的系统构成。 2、主要包括:数据库、硬件、软件、数据库管理系统、数据库管理员、数据库用户。 注意:DBMS在操作系统的支持下工作,应用程序DBMS支持下才能使用数据库。 ## 数据管理系统 1、数据库管理系统(DataBase Management System 简称为DBMS)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。 2、数据库管理系统有:MySQL、Oracle、Microsoft SQL server、Microsoft Access等等。 3、数据库管理系统是数据库系统的核心,是管理数据库的软件。 4、主要功能: * 数据定义功能(建库建表等); * 数据操纵功能(增删查改); * 数据运行管理功能; * (备份还原等)。 ## 数据库管理人员 1、数据库管理人员(DataBase Administrator 简称DBA)是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称。 2、DBA的主要职责是运维和管理数据库管理系统,如数据备份还原等。 # 二、概述 MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL作为网站数据库。 # 三、表结构 库--表--字段名--数据 MySQL表由information\_schema表、schemata表、tables表和columns表等组成,如数据库名、表名、列的数据类型,以及访问权限等。 information\_schema表:MySQL自带的系统数据库,用于存储数据库元数据(关于数据的数据),如数据库名、表名、列的数据类型,以及访问权限等。 schemata表:存储数据库名的表,当前MySQL实例的所有数据库(select schema\_name from schemata)。 tables表:存储数据库及数据库中的表名(select table\_schema,table\_name from information\_schema.tables)。 columns表:存储数据库、表,以及表中的字段(select group\_concat(column\_name) from information\_schema.columns)。  # 四、库操作 ## 增加库 `create database 库名;`  ## 查看当前有哪些数据库 `show databses;`  ## 切换数据库 需要使用哪个数据库就使用`use 库名;`  ## 删除数据库 `drop database 库名;`  # 五、表操作 ## 增加 创建表,格式: ```sql create table 表名(字段名1 字段类型,字段名2 字段类型, ...); ``` ```sql create table users(name varchar(200),age int); ```  向表中增加数据,格式: ```sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); ``` 注意:如果数据是字符型,必须使用单引号 ' 或者双引号 ",如: 'value1', "value1"。 ```sql mysql> insert into users (name,age) values ('Ming',20); Query OK, 1 row affected (0.00 sec) mysql> insert into users values ('Lin',22); Query OK, 1 row affected (0.00 sec) ```  也可以进行批量插入数据 ```sql mysql> insert into users values ('Hong',18),('Kong',25); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 ```  ## 修改 关键词 update,语法: `update 表名 set 字段名=值 [where 条件表达式]` 全部字段都做了更改 ```sql mysql> update users set age = 50; Query OK, 4 rows affected (0.00 sec) Rows matched: 4 Changed: 4 Warnings: 0 ```  如果只想修改name\=‘Ming’的age为20呢? ```sql mysql> update users set age = 20 where name='Ming'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 ```  ## 删除 只想删除数据表中的一行数据 ```sql delete from users where 字段名=值; ```  清空整张表 ```sql truncate [table] 表名; ```  删除记录 ```sql delete from 表名; ```  truncate与delete的区别: ```bash DELETE: DELETE是一个DML(Data Manipulation Language)操作,用于删除表中的行。 当你使用DELETE删除数据时,MySQL会生成一个事务日志来记录每一行的删除操作,以便进行回滚操作。 DELETE操作是可回滚的,因为它记录了足够的信息来撤销删除操作。 DELETE操作会触发与被删除行相关的任何外键约束,如果存在外键依赖,则可能阻止删除操作。 DELETE操作通常比TRUNCATE慢,因为它需要逐行处理并记录日志。 TRUNCATE: TRUNCATE是一个DDL(Data Definition Language)操作,用于快速删除表中的所有行,并重置任何自增的计数器。 TRUNCATE操作实际上是重新创建表,但它保留了表结构、索引、触发器和外键约束。 TRUNCATE操作不会生成事务日志,因为它不是逐行删除,而是一次性删除所有行。 TRUNCATE操作是不可回滚的,因为它不记录每行的删除信息。 TRUNCATE操作通常比DELETE快得多,因为它不逐行处理数据。 TRUNCATE操作不能用于有外键依赖的表,除非外键约束被禁用或使用TRUNCATE CASCADE。 ``` 其他操作 ```sql - 删除字段:alter table 表名 drop 字段名 - 修改表名:rename table 旧表名 to 新表名 - 修改表名:alter table 旧表名 rename 新表名 - 添加新的字段:alter table 表名 add 新字段名 新数据类型 [新约束条件] [first|after 旧字段名]; - 修改表的字段名:alter table 表名 change 旧字段名 新字段名 新数据类型 ; - 仅对字段的数据类型进行修改:alter table 表名 modify 字段名 数据类型; - 添加约束条件:alter table 表名 add constraint 约束名 约束类型(字段名); - 删除表的主键约束:alter table 表名 drop primary key; - 删除表的外键约束:alter table 表名 drop foreign key 约束名; - 删除表字段的唯一约束:alter table 表名 drop index 唯一索引名 - alter table 表名 engine = 新的存储引擎类型 - alter table 表名 default charset = 新的字符集 - alter table 表名 auto_increment = 新的初始值 注意:存在外键约束关系,若想删除父表,首先需要删除父表与子表之间的外键约束条件,解除“父子”,在删除表 ``` ## 查询 查询不但能实现数据检索,而且可以在查询过程中进行计算、合并不同数据源的数据 查询当前数据库下有哪些表,关键词show ```sql show tables; ```  ### 查询格式 ```txt SELECT[ALL | DISTINCT] <目标列表达式> [,<目标列表达式>] ... FROM <表名或视图名>[, <表名或视图名> ] ... [WHERE <条件表达式> ] GROUP BY <列名1> [HAVING <条件表达式> ] ] [ORDER BY <列名2> [ ASC | DESC ] ]; ``` ### 单表查询 1、查询表中全部数据 ```sql select * from table_name; ```  2、只查询name字段的数据  3、查询name\=lin的数据  4、查询某几行数据  5、模糊查询 字段名 [ NOT ] like ... 如果条件不确定,必须使用LIKE关键字进行模糊查询,用like进行字符串匹配,将该字符串叫做匹配串,用它与属性值进行比较。 匹配串中的通配符为:\_ 任意单个字符;% 零个或多个任意字符串 ```sql mysql> select * from users where name like 'L%'; +------+------+ | name | age | +------+------+ | Lin | 22 | +------+------+ 1 row in set (0.00 sec) ```  ## 多表查询 同时涉及**多个表的**查询称为**连接查询**,用来连接两个表的条件称为**连接条件**或连接谓词。 一般格式:[\<表名1\>.] \<列名1\> \<比较运算符\> [\<表名2\>.]\<列名2\>。 比较运算符:\=、\>、\<、\>\=、\<\=、 !\= 连接谓词中的列名 称为连接字段,连接条件中的各连接字段类型必须是可比的,但不必是相同的。 在多表查询中,存在 内连接、外连接、自连接。 联合查询,合并结果集,关键词 union,使用union将多个select语句的查询结果集组合成一个结果集 `语法:select 字段列表1 from table1 UNOIN [all] select 字段列表2 from table2` 注意: * 字段列表1和字段列表2的字段个数必须相同,且具有相同的数据类型 * union与union all的区别:union 会筛选掉select结果集中重复记录,union all 会直接合并两个结果集 交集 intersect 和 差集 except 在SQL Server中支持,MySQL不支持   # 六、常用函数 1、聚合函数count(),统计元组个数。  2、order by 字段名,根据字段进行排序,asc 顺序,desc倒序(默认使用顺序)。  3、@@hostname:主机名  4、@@datadir:数据库路径  5、database():数据库名  6、current\_user():当前用户  7、version():数据库版本 8、注释符 单行注释可以使用 # 或 -- 注释符。使用 # 后直接加注释内容,而使用 -- 后需要跟一个空格才能生效。 多行注释使用 /\* \*/ 注释符,可以跨多行。 
毛林
2025年9月6日 12:34
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码