Mysql 简介
学习目的
MySQL作为目前最流行的关系型数据库管理系统之一,因其开源免费的特性,成为小型Web应用的重点关注对象。几乎所有的动态Web应用基本都在使用MySQL作为数据管理系统。学习MySQL的目的也是为了更好地理解数据库相关的SQL注入漏洞,并学习如何保护应用程序的数据安全。
SQL注入是一种常见的网络安全威胁,它利用应用程序未正确过滤或转义用户输入数据的弱点,将恶意的SQL代码注入到应用程序的查询中。这种漏洞可能导致恶意用户访问、篡改或删除数据库中的数据,甚至获取敏感信息。
通过学习MySQL,可以深入了解SQL语言和MySQL数据库的基础知识,并学习数据安全性和防御机制的最佳实践。您将学习如何编写安全的查询语句、使用参数化查询和存储过程来防止SQL注入攻击。此外,了解MySQL的配置和权限管理也是确保数据库安全的重要方面。
SQL的专业术语
以下是一些SQL的专业术语:
- 数据库(Database): 
  
- 用于存储和组织数据的结构化数据集合。
 
 - 数据表(Table): 
  
- 数据库中的一个独立数据对象,用于组织数据。表由列和行组成。
 
 - 列(Column): 
  
- 表中的一个字段,用于定义数据的类型和属性。
 
 - 行(Row): 
  
- 表中的一个记录,包含各个列的数据。
 
 - 主键(Primary Key): 
  
- 用于唯一标识表中每一行的一列或一组列。主键的值不能重复或为空。
 
 - 外键(Foreign Key): 
  
- 用于建立表与表之间的关系。外键是一个表中的字段,它引用了另一个表的主键。
 
 - 索引(Index): 
  
- 用于提高查询速度的数据结构。索引可以加速查询过程,但会增加修改数据的开销。
 
 - 触发器(Trigger): 
  
- 与表关联的特殊类型的存储过程。在特定事件(如插入、更新、删除)发生时自动执行。
 
 - 存储过程(Stored Procedure): 
  
- 在数据库中存储的一组预编译的SQL语句。存储过程可以接受参数,并将结果返回给调用方。
 
 - 视图(View): 
  
- 虚拟表格,由查询语句定义。视图可以简化复杂查询、提供安全性和简化对数据的访问。
 
 - 查询(Query): 
  
- SQL语句用于获取/修改数据库中的数据的请求。
 
 - 事务(Transaction): 
  
- 一系列数据库操作的逻辑单元,要么全部成功完成,要么全部回滚。事务确保数据的一致性和完整性。
 
 - 规范化(Normalization): 
  
- 设计和组织数据库中的表,以减少重复数据和提高数据的一致性。
 
 - 反规范化(Denormalization): 
  
- 为了提高查询性能而人为引入冗余数据。
 
 - 数据类型(Data Type): 
  
- 定义数据的存储格式和操作的特性,如整数、字符串、日期等。
 
 

Mysql基本语法规则
- SQL语句大小写规则: 
  
- SQL语句的关键字不区分大小写,但建议使用大写以增强可读性。
 - 数据库名称、表名、列名等标识符是不区分大小写的,但建议保持一致且使用小写。
 - 字符串和值是区分大小写的。
 
 - SQL语句结尾标记: 
  
- 使用分号(;)作为语句的结束标记。
 - 大多数情况下,每个语句应单独占一行并以分号结束。
 
 - 关键字和标识符命名规则: 
  
- 标识符可以包含字母、数字和下划线。
 - 标识符必须以字母或下划线开头。
 - 标识符不能与MySQL保留的关键字相同。
 
 - 字符串值的表示: 
  
- 用单引号(')或双引号(")表示字符串值。
 - 例如:
'Hello',"World"。 
 - NULL值的表示: 
  
- 使用关键字NULL表示空值。
 
 - 使用方括号: 
  
- 方括号([])在MySQL中没有特殊含义,不用于标识符。
 
 - 空格和缩进: 
  
- 可以在SQL语句中使用空格和缩进来提高可读性。
 - MySQL会忽略SQL语句中的多余空格。
 
 - 对象引用: 
  
- 使用反引号(`)来引用对象名称(如数据库名称、表名、列名等),以避免与关键字冲突。
 
 
Mysql基本语句组成
SQL语句通常由几个基本部分组成,包括:
DDL (Data Definition Language) 数据定义语言部分:
- CREATE:创建数据库、表格等对象。
 - ALTER:修改数据库、表格等对象的结构。
 - DROP:删除数据库、表格等对象。
 
DML (Data Manipulation Language) 数据操作语言部分:
- INSERT:插入数据到表格中。
 - UPDATE:更新表格中的数据。
 - DELETE:删除表格中的数据。
 
DQL (Data Query Language) 数据查询语言部分:
- SELECT:从表格中查询数据。
 
DCL (Data Control Language) 数据控制语言部分:
- GRANT:授予用户或角色权限。
 - REVOKE:撤销用户或角色权限。
 
TCL (Transaction Control Language) 事务控制语言部分:
- COMMIT:提交事务。
 - ROLLBACK:回滚事务。
 
一个完整的SQL语句可以由上述的语句部分组成,也可能只包含其中的一部分,取决于具体的需求。
此外,SQL语句还包含一些关键字和子句,用于进一步指定操作和条件,例如:
- WHERE:用于指定查询条件。
 - ORDER BY:用于排序查询结果。
 - GROUP BY:用于分组聚合查询结果。
 - HAVING:用于过滤聚合查询结果。
 - JOIN:用于连接多个表。
 
Mysql 与编程语言
MySQL可以与多种编程语言进行集成和交互,以下是一些常用的编程语言:
- PHP: 
  
- PHP是一种用于Web开发的脚本语言,MySQL与PHP的集成非常紧密,广泛应用于Web应用程序开发。通过PHP的MySQL驱动程序(如:MySqli)可以与MySQL数据库进行连接和操作。
 
 - Python: 
  
- Python是一种简单易学、功能强大的脚本语言,通过Python的MySQL驱动程序(如MySQL Connector/Python、PyMySQL等),可以与MySQL数据库进行连接和操作。
 
 - Java: 
  
- Java是一种广泛应用于大型企业级应用程序开发的编程语言。通过Java的JDBC(Java Database Connectivity)接口和相应的MySQL驱动程序(如MySQL Connector/J),可以与MySQL数据库进行交互。
 
 - C#: 
  
- C#是在.NET框架下开发的一种面向对象的编程语言。通过使用ADO.NET和相应的MySQL数据提供程序(如MySQL Connector/NET),可以在C#应用程序中与MySQL数据库进行连接和操作。
 
 - Ruby: 
  
- Ruby是一种简单、面向对象的脚本语言,通过Ruby的MySQL驱动程序(如mysql2 gem),可以实现与MySQL数据库的交互。
 
 - JavaScript: 
  
- JavaScript是一种用于Web前端开发的脚本语言,通过JavaScript的MySQL驱动程序(如MySQL for Node.js),可以在浏览器端和服务器端与MySQL数据库进行交互。
 
 
这只是其中的一小部分语言,实际上还可以使用其他编程语言与MySQL进行交互,例如Perl、Go、Swift等。无论选择哪种编程语言,都需要使用相应的MySQL驱动程序或库来实现与MySQL数据库的连接和操作。
Mysql的特殊符号
MySQL中的一些特殊符号包括:
-  
通配符符号:
- 百分号(%):用于模糊匹配字符串中的任意字符。
 - 下划线(_):用于模糊匹配字符串中的任意单个字符。
 
示例:
SELECT * FROM table_name WHERE column_name LIKE 'abc%'; -- 匹配以"abc"开头的字符串 SELECT * FROM table_name WHERE column_name LIKE 'a_c'; -- 匹配第一个字符为"a",第三个字符为"c"的字符串 -  
反引号符号(`):
- 反引号用于引用 MySQL 中的标识符,如数据库名、表名、列名等。也用于避免与 MySQL 关键字发生冲突。
 
示例:
SELECT `column_name` FROM `table_name` WHERE `column_name` = 'value'; -  
单引号(')和双引号("):
- 用于表示字符串值或文本常量。
 
示例:
SELECT * FROM table_name WHERE column_name = 'value'; SELECT * FROM table_name WHERE column_name = "value"; -  
分号(;):
- 在 SQL 语句中,分号用作语句的结束标记,表示该语句的结束。
 
示例:
SELECT * FROM table_name; -  
注释符:
MySQL支持两种类型的注释符:
-  
单行注释:
- 使用双横线(–)或井号(#)开头表示单行注释。
 - 注释从符号后开始,直到行尾结束。
 
示例:
-- 这是单行注释 SELECT column1, column2 FROM table_name; SELECT column1, column2 FROM table_name; # 这也是单行注释 -  
多行注释:
- 使用斜杠星号(/* … */)将多行注释内容包裹起来,注释位于斜杠星号之间。
 
示例:
/* 这是 多行注释 */ SELECT column1, column2 FROM table_name; 
 -  
 
是单行注释
 ```
-  
多行注释:
- 使用斜杠星号(/* … */)将多行注释内容包裹起来,注释位于斜杠星号之间。
 
示例:
/* 这是 多行注释 */ SELECT column1, column2 FROM table_name; 
这些特殊符号在 MySQL 查询和操作中具有特定的语义和用途。熟悉和正确使用这些特殊符号可以帮助您编写有效和准确的 MySQL 语句




![[ELK安装篇]:基于Docker虚拟容器化(主要LogStash)](https://img-blog.csdnimg.cn/73e06574e85c4f4cb60662c0d89e9b38.png)













