MySQL是一款广泛应用于Web开发的关系型数据库管理系统。作为开源软件,MySQL提供了高性能、可靠性和可扩展性,并且在多个平台上都得到了广泛的应用。本文将对MySQL的关键知识进行归纳总结,旨在帮助读者更好地理解和应用MySQL。
1
. 数据库基础
1.1 数据库的概念和组成
数据库是指存储数据的容器,它由数据、数据结构和操作数据的一组程序组成。数据库中的数据以表的形式存储,每个表由行和列组成。
1.2 数据库设计范式
数据库设计范式是一组规则,用于规范数据库表的结构,提高数据库的数据一致性和查询效率。常见的数据库设计范式有第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。
1、第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据线;也就是说:每列的值具有原子性,不可再分割。
2、第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,满足第二范式(2NF)必须先满足第一范式(1NF)。如果表是单主键,那么主键以外的列必须完全依赖于主键;如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。
3、第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖。
2. SQL语言
2.1 SQL语言简介
SQL(Structured Query Language)是用于管理和操作关系型数据库的语言。它可以实现数据的查询、插入、更新和删除等操作。
2.2 基本SQL语句
SQL语言包括多种基本语句,如SELECT、INSERT、UPDATE和DELETE。这些语句用于实现对数据库的数据操作和查询。
2.3 SQL函数
MySQL提供了众多内置函数,用于在SQL语句中进行数据处理和计算。常见的SQL函数包括聚合函数(SUM、AVG、COUNT等)、字符串函数(CONCAT、SUBSTRING等)和日期函数(NOW、DATE_FORMAT等)等。
3. 数据库管理
3.1 数据库的创建和删除
使用CREATE DATABASE或CREATE SCHEMA语句可以创建数据库,使用DROP DATABASE
语句可以删除数据库。创建数据库时可以指定字符集和校对规则。
语法如下:
CREATE SCHEMA 数据库名;
CREATE DATABASE 数据库名;
DROP DATABASE 数据库名;
3.2 表的创建和删除
使用CREATE TABLE语句可以创建表,指定表的字段、数据类型、约束等。使用DROP TABLE语句可以删除。
语法如下:
CREATE TABLE<表明>(
列名1 数据类型[列/行级约束...];
列名2 数据类型[列/行级约束...];
列名3 数据类型[列/行级约束...];
);
DROP TABLE<表名>
3.3 索引和主键
索引是一种数据结构,用于加快对数据库表的查询速度。主键是一种特殊的索引,用于唯一标识表中的每一行数据。
3.4 数据的导入和导出
使用LOAD DATA INFILE语句可以将外部数据文件导入到数据库表中,使用SELECT INTO OUTFILE语句可以将查询结果导出到外部文件。
3.5 查看和选择数据库
使用show create database查看指定数据库的创建信息;使用use使用指定数据库。
语法如下:
show create database 数据库名;
use 数据库名;
4.数据库的数据类型
4.1 整数类型
根据数值取值范围的不同MySQL 中的整数类型可分为5种,分别是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。
4.2浮点数类型和定点数类型
在MySQL数据库中使用浮点数和定点数来存储小数。浮点数的类型有两种:单精度浮点数类型(FLOAT)和双精度浮点数类型(DOUBLE)。而定点数类型只有一种即DECIMAL类型。
4.3字符串类型
在MySQL中常用CHAR 和 VARCHAR 表示字符串。两者不同的是:VARCHAR存储可变长度的字符串。
5单表查询
5.1.1 SELECT语句
SELECT 语句可以实现对表的选择、投影及连接操作。即SELECT 语句可以根据用户的需要从一个或多个表中选出匹配的行和列,结果通常是生成一个临时表。SELECT 语句功能强大,有很多子句,所有被使用的子句必须按语法说明中显示的顺序严格排序。例如,一个HAVING子句必须位于GROUPBY子句之后,并位于ORDERBY子句之前。
语法格式如下:
SELECT [ALL I DISTINCT] 输出列表达式,..
[FROM 表名1[,表名2]…] /*FROM子句*/
[WHERE 条件 /*WHERE 子句*/
[GROUP BY{列名|表达式| 列编号)
[ASC I DESC],… /* GROUP BY 子句*/
[HAVING 条件 /*HAVING 子句*/
[ORDER BY(列名|表达式|列编号)
[ASC | DESC] ,…] /*ORDER BY子句*/
[LIMIT {[编移量,]行数1行数OFFSET偏移量) /*LIMIT 子句*/
5.1.2选择列
1.选择指定的列
select 表达式
2.定义别列名
select列名[as]别名
3.替换查询结果中的数据
要替换查询结果中的数据,则要使用查询语句中的CASE表达式,其格式如下。
CASE
WHEN 条件1 THEN 表达式1
WHEN 条件2 THEN 表达式2
...
ELSE 表达式n
END
说明如下。
CASE表达式以CASE开始,以END结束,MySQL从条件1开始判断,条件1成立输出表达式1结束;若条件1不成立,判断条件2,若条件2成立,输出表达式2后结束…如果条件都不成立,输出表达式n。
5.1.3where语句
WHERE 句必须紧跟在FROM 子句之后,在WHERE子句中使用一个条件从FROM 子句的中间结果中选取行。
语句格式如下。
WHERE<判定运算>
判定运算:结果为 TRUE、FALSE 或UNKNOWN。
6 多表查询
6.1from子句
select的查询对象由from子句决定
格式如下
FROM 表名1[[AS]别名1][,表名2[[AS] 别名2]] /*查询表*/
|JOIN子句 /*连接表*/
6.2多表连接
6.2.1连接方式
(1)全连接
(2)内连接
(3)外连接
6.2.2join连接
使用JOIN关键字建立多表连接时,JOIN子句中定义了如何使用JOIN关键字连接表
格式如下
表名1 INNER JOIN表名2
|表名1 { LEFT | RIGHT } [OUTER] JOIN 表名2
ON连接条件 | USING(列名)
(1)内连接
指定了INNER关键字的连接是内连接。内连接是在FROM 子句产生的中间结果中应用ON条件后得到的结果。
(2)外连接
指定了 OUTER 关键字的连接为外连接
7. 数据库安全性
7.1 用户管理和权限控制
MySQL支持创建用户、授权和撤销权限等操作,以保护数据库的安全性。合理的用户管理和权限控制可以防止未经授权的访问和操作。
7.2 数据备份和恢复
定期进行数据库备份是保证数据安全的重要手段。MySQL提供了多种备份和恢复方式,如物理备份和逻辑备份等。
7.3 数据库加密
MySQL支持对敏感数据进行加密存储,以提高数据的安全性。常用的加密方式包括数据传输加密和数据存储加密。
本文对MySQL的关键知识进行了归纳总结,包括数据库基础、SQL语言、数据库管理、数据查询优化和数据库安全性等方面。通过深入理解和掌握这些知识,读者可以更好地应用MySQL进行数据管理和开发。希望本文能够为读者提供有价值的参考和帮助。