一、MySQL介绍和安装
一、MySQL简介
什么是 MySQL?
MySQL 是目前最流行的开源关系型数据库管理系统(RDBMS),由瑞典 MySQL AB 公司开发(现属于 Oracle)。它使用结构化查询语言(SQL)进行数据的访问和管理,具备高性能、高可靠性和易使用等特点,广泛应用于 Web 开发、数据分析、ERP 系统等各种场景。
MySQL 的核心特点:
- 开源免费:大多数功能免费开放,可商用;
- 跨平台支持:可在 Windows、Linux、macOS 等系统运行;
- 高性能和可扩展性:适用于中小型项目也能支撑大型系统;
- 安全性强:提供用户权限管理和数据加密机制;
- 与流行语言无缝集成:支持 PHP、Java、Python、Node.js 等。
二、MySQL 安装流程(以 Windows 为例)
1:下载安装包
- 访问官网: 👉 dev.mysql.com/downloads/
- 选择 "MySQL Installer for Windows" 下载适合你操作系统的安装程序(推荐使用带有 GUI 的 Full 版本)。

2:启动安装程序
- 双击运行安装包
- 选择安装类型(推荐 Server only)其他的可以自行学习了解
- 安装仅安装mysql服务
继续执行
执行后点击next
直到出现界面, 这里表示用哪个协议链接,端口号哪个,默认即可
继续next 默认强类型密码就行
继续next 设置密码可以自己搭配系统会提示强弱 add user可以新建其他用户,这里看你需要。我这里继续next Linxiroot.123
继续next即可直到最后出现下一个界面
出现最后一个页面点击执行即可
然后出现finish按钮,出现这个界面
后续我不需要进行配置就直接略过next了,然后再点击finish
默认已经启动中,但是可以查看
安装完成

可以使用这个来查看数据库;输入密码后可以输入show databases;
来查看
MySQL默认的数据库:
- information_schema:信息数据库,其中包括MySQL在维护的其他数据库、表、列、访问权限等信息;
- performance_schema:性能数据库,记录着MySQLServer数据库引擎在运行过程中的一些资源消耗相关的信息;
- mysql:用于存储数据库管理者的用户信息、权限信息以及一些日志信息等
- sys:相当于是一个简易版的performance schema,将性能数据库中的数据汇总成更容易理解的形式;
三、安装过程中的常见问题及解决方法
问题 | 可能原因 | 解决方法 |
---|---|---|
无法连接到 MySQL 服务 | 服务未启动 | 在"服务"中手动启动 MySQL |
忘记 root 密码 | 权限问题 | 重置密码或重新初始化数据库 |
端口被占用 | 3306端口被占用 | 修改为其他端口,如 3307,并在配置中同步调整 |
二、MySQL连接和GUI
验证 MySQL 是否安装成功
方法一:命令行登录
这个方式需要先进行环境变量配置
配置后验证一下
bash
mysql -u root -p
输入密码后,如果进入 MySQL 提示符,则说明安装成功。
方法二:使用 GUI 工具(navicat)
打开工具,配置连接参数(主机名、端口、用户名、密码),点击"连接"即可。
三、SQL语句和数据类型
在数据库管理中,SQL(结构化查询语言)是用于与关系型数据库交互的标准语言。SQL语句允许用户进行数据操作、查询、更新、删除等操作。
SQL语句的常用规范:
- 通常关键字使用大写的,比如CREATE、TABLE、SHOW等等:
- 一条语句结束后,需要以
;
结尾 - 如果遇到关键字作为表明或者字段名称,可以使用
反引号
包裹;
SQL语句的基本结构
SQL语句一般包括以下几类操作:
- 数据查询(SELECT)
- 数据插入(INSERT)
- 数据更新(UPDATE)
- 数据删除(DELETE)
- 创建表(CREATE TABLE)
- 修改表结构(ALTER TABLE)
- 删除表(DROP TABLE)
常见的SQL数据类型
在SQL中,每个列都有一个数据类型,它决定了该列可以存储什么类型的数据。以下是一些常见的数据类型:
1. 数值类型
- INT: 整数类型。可以存储没有小数部分的数字。
- DECIMAL(p, s) : 精确的定点数,
p
表示总位数,s
表示小数位数。 - FLOAT: 浮动小数点数。
- DOUBLE: 双精度浮动小数点数,精度高于FLOAT。
2. 字符串类型
- CHAR(n) : 固定长度字符串,长度为
n
。 - VARCHAR(n) : 可变长度字符串,最多存储
n
个字符。 - TEXT: 用于存储较长的文本数据。
- LONGTEXT: 用于存储非常大的文本数据。
3. 日期和时间类型
- DATE : 存储日期,格式为
YYYY-MM-DD
。 - TIME : 存储时间,格式为
HH:MM:SS
。 - DATETIME : 存储日期和时间,格式为
YYYY-MM-DD HH:MM:SS
。 - TIMESTAMP: 用于存储时间戳,通常用于记录数据的修改时间。
4. 布尔类型
- BOOLEAN : 用于存储
TRUE
或FALSE
值。
5. 二进制类型
- BLOB: 存储二进制数据(如图片、文件等)。
6. 其他数据类型
- ENUM: 枚举类型,用于限制列的值只能是预定义的一组值中的一个。
- SET: 用于存储一组独立的值,可以包含多个值,但每个值只能选择一次。
四、SQL语句-DDL语句
DDL(Data Definition Language)是用于定义和修改数据库结构的语言部分,主要包括创建、修改、删除数据库对象,如表、视图、索引等。 DDL(Data Definition Language,数据定义语言)是SQL的一个子集,用于定义、修改和删除数据库中的结构性对象,如表、视图、索引等。常见的DDL语句包括 CREATE
、ALTER
、DROP
等,它们通常不涉及数据的操作,而是用于数据库结构的定义和修改。
常见的DDL语句:
CREATE
:用于创建数据库对象。ALTER
:用于修改数据库对象。DROP
:用于删除数据库对象。TRUNCATE
:用于删除表中的所有数据。RENAME
:用于重命名数据库对象。COMMENT
:用于为数据库对象添加注释。
1. CREATE 语句
CREATE
语句用于创建新的数据库对象,如数据库、表、视图、索引等。它是数据库的最基本的定义语句。
示例:
-
创建数据库:
sqlCREATE DATABASE school; --推荐使用下面这一种方式因为上面已经存在数据库的话会提示报错。 CREATE DATABASE IF NOT EXISTS test_study; --你也可以执行创建时候编码格式一般就是默认即可。
-
创建表:
sqlCREATE TABLE students ( student_id INT PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50), birth_date DATE );
-
创建索引:
sqlCREATE INDEX idx_student_name ON students (last_name, first_name);
-
创建视图:
sqlCREATE VIEW student_view AS SELECT student_id, first_name, last_name FROM students WHERE birth_date > '2000-01-01';
2. ALTER 语句
ALTER
语句用于修改已经存在的数据库对象的结构,比如增加、删除列,修改列的数据类型等。
示例:
-
添加列:
sqlALTER TABLE students ADD email VARCHAR(100);
-
删除列:
sqlALTER TABLE students DROP COLUMN email;
-
修改列的数据类型:
sqlALTER TABLE students MODIFY COLUMN first_name VARCHAR(100);
-
重命名表:
sqlALTER TABLE students RENAME TO alumni;
3. DROP 语句
DROP
语句用于删除数据库中的对象。执行 DROP
后,数据和结构会永久丢失,因此在使用时需要非常小心。
示例:
-
删除数据库:
sqlDROP DATABASE school; --推荐加上条件更完善 DROP DATABASE IF EXISTS test_study;
-
删除表:
sqlDROP TABLE students;
-
删除索引:
sqlDROP INDEX idx_student_name;
-
删除视图:
sqlDROP VIEW student_view;
4. TRUNCATE 语句
虽然 TRUNCATE
语句不是严格意义上的DDL语句,但它常被归类于DDL,因为它主要用于删除表中的所有数据,而不涉及数据的逐行删除。它比 DELETE
快,因为它不生成日志和触发器。
示例:
sql
TRUNCATE TABLE students;
5. 其他 DDL 语句
-
RENAME 语句:重命名数据库对象(如表、列等)。
sqlRENAME TABLE old_table TO new_table;
-
COMMENT 语句:为数据库对象添加注释。
sqlCOMMENT ON COLUMN students.first_name IS '学生的名字';
6. 总结
DDL语句是数据库管理中必不可少的部分,主要负责数据库对象的定义、修改和删除。与DML(数据操作语言)不同,DDL主要操作数据库结构,而非数据本身。
五、SQL语句-DML语句
DML(Data Manipulation Language,数据操作语言)
DML语句允许用户查询、插入、更新和删除数据库中的数据。DML语句的执行不直接影响数据库的结构(如表、索引等),只会影响数据本身。
常见的DML语句有以下几种:
- SELECT --- 查询数据
- INSERT --- 插入数据
- UPDATE --- 更新数据
- DELETE --- 删除数据
下面将分别介绍这些DML语句。
1. SELECT 语句
SELECT
语句用于从一个或多个表中查询数据,可以通过不同的条件进行筛选和排序。
示例:
sql
SELECT * FROM employees;
这条语句查询employees
表中的所有数据。
常见用法:
- 查询指定列:
sql
SELECT name, salary FROM employees;
- 带条件的查询:
sql
SELECT * FROM employees WHERE department = 'HR';
- 排序查询结果:
sql
SELECT * FROM employees ORDER BY salary DESC;
- 限制返回的记录数:
sql
SELECT * FROM employees LIMIT 10;
2. INSERT 语句
INSERT
语句用于向数据库表中插入新的数据行。
示例:
sql
INSERT INTO employees (name, department, salary)
VALUES ('John Doe', 'IT', 60000);
批量插入数据:
sql
INSERT INTO employees (name, department, salary)
VALUES
('Alice Smith', 'Finance', 70000),
('Bob Johnson', 'HR', 55000),
('Charlie Brown', 'IT', 65000);
3. UPDATE 语句
UPDATE
语句用于更新表中已存在的数据。
示例:
sql
UPDATE employees
SET salary = 75000
WHERE name = 'John Doe';
这条语句将employees
表中name
为"John Doe"的记录的salary
更新为75000。
更新多个字段:
sql
UPDATE employees
SET salary = 80000, department = 'Marketing'
WHERE name = 'Alice Smith';
4. DELETE 语句
DELETE
语句用于从表中删除一条或多条数据记录。
示例:
sql
DELETE FROM employees WHERE name = 'John Doe';
这条语句会删除employees
表中name
为"John Doe"的记录。
删除所有数据:
sql
DELETE FROM employees;
注意 :
DELETE
会删除记录,但不会删除表结构;如果需要删除表结构,应该使用DROP
语句。
DML语句的事务控制
在执行DML语句时,通常会涉及到事务(Transaction)的概念。事务是一组要么全部执行,要么全部不执行的操作。SQL提供了事务控制语句,帮助确保数据的完整性和一致性:
- COMMIT:提交事务,使得所有更改持久化。
- ROLLBACK:回滚事务,撤销自上次提交以来的所有更改。
- SAVEPOINT:设置事务中的保存点,可以在之后进行回滚。
示例:
sql
BEGIN;
UPDATE employees SET salary = 90000 WHERE name = 'Charlie Brown';
-- 发现错误,撤销
ROLLBACK;
小结
DML语句是数据库操作的核心,它提供了对数据库数据的增、删、改、查功能。掌握DML语句的使用,可以帮助你高效地进行数据库的管理和操作。在实际应用中,DML语句通常与事务控制一起使用,以保证数据操作的安全性和一致性。
六、SQL语句-DQL语句(重要)
DQL(Data Query Language)是SQL中的一种子语言,DQL语句是进行数据库查询操作的核心部分
DQL主要包含 SELECT
语句,它允许用户从数据库表中检索数据,可以根据条件筛选数据,排序,限制返回的数据数量等。
常见的DQL操作如下:
SELECT
:查询数据FROM
:指定数据来源的表WHERE
:设置查询条件ORDER BY
:对结果进行排序GROUP BY
:对结果进行分组HAVING
:对分组后的数据进行筛选
常用的DQL操作
-
简单查询 使用
SELECT
语句从一个表中查询所有数据。sqlSELECT * FROM employees;
这里,
*
表示查询该表中的所有列。 -
查询指定列 如果只想查询表中的部分列,可以指定列名。
sqlSELECT name, age, salary FROM employees;
-
条件查询 使用
WHERE
子句来筛选符合条件的数据。sqlSELECT * FROM employees WHERE age > 30;
该语句将查询年龄大于30岁的员工。
-
逻辑运算符
AND
、OR
和NOT
运算符可以组合多个条件进行查询。sqlSELECT * FROM employees WHERE age > 30 AND salary > 5000;
-
排序查询 使用
ORDER BY
子句对查询结果进行排序。可以使用ASC
(升序)或DESC
(降序)指定排序方式。sqlSELECT * FROM employees ORDER BY salary DESC;
该查询会按薪水降序排序员工。
-
限制返回结果的数量 使用
LIMIT
子句来限制返回的结果行数。sqlSELECT * FROM employees LIMIT 5;
该查询将返回前5条员工数据。
-
分组查询 使用
GROUP BY
子句来对数据进行分组,并且通常结合COUNT
、SUM
、AVG
等聚合函数一起使用。sqlSELECT department, COUNT(*) FROM employees GROUP BY department;
该查询将按部门分组,统计每个部门的员工数量。
-
过滤分组结果 使用
HAVING
子句来对分组后的数据进行进一步筛选。注意,HAVING
是对GROUP BY
子句后的结果进行筛选的,而WHERE
是对原始数据进行筛选的。sqlSELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 10;
该查询将返回员工人数超过10人的部门。
-
联合查询 使用
UNION
或UNION ALL
将多个查询结果进行合并。UNION
会去重,而UNION ALL
会返回所有结果,包括重复的。sqlSELECT name FROM employees WHERE age > 30 UNION SELECT name FROM employees WHERE salary > 5000;
-
子查询 子查询是嵌套在主查询中的查询语句,可以用于复杂查询。
sqlSELECT name FROM employees WHERE department = (SELECT department FROM employees WHERE name = 'John');
该查询将返回与员工 'John' 同一部门的所有员工的姓名。
DQL语句的示例
示例1:查询某一特定条件的数据
sql
SELECT name, age FROM employees WHERE salary > 6000;
这个查询会返回所有薪水超过6000的员工的姓名和年龄。
示例2:查询并排序数据
sql
SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 10;
这个查询会返回薪水最高的前10位员工。
示例3:使用聚合函数
sql
SELECT department, AVG(salary) AS average_salary FROM employees GROUP BY department;
该查询会按部门分组,并计算每个部门的平均薪水。
示例4:使用HAVING子句过滤分组数据
sql
SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department HAVING COUNT(*) > 5;
这个查询会返回员工数量大于5的部门。
四、总结
DQL语句主要用于从数据库中查询数据,常见的查询操作包括选择列、添加条件、排序、分组、限制结果等。通过灵活使用 SELECT
语句和不同的子句,可以实现各种复杂的数据查询需求。在实际工作中,理解并掌握这些DQL操作,可以帮助我们更高效地获取和分析数据。
七 、SQL语句-DCL语句
DCL(Data Control Language):数据控制语言;对数据库、表格的权限进行相关访问控制操作,
常见的 DCL 语句包括 GRANT
和 REVOKE
。
1. GRANT 语句
GRANT
语句用于将权限授予用户或角色。可以授予的权限包括数据库操作权限(如:SELECT、INSERT、UPDATE、DELETE)以及数据库结构权限(如:CREATE、ALTER、DROP)。
1.1 GRANT 语法
sql
GRANT 权限类型 ON 数据库对象 TO 用户;
- 权限类型 :指定授予用户的权限类型,例如
SELECT
、INSERT
、UPDATE
、DELETE
等。 - 数据库对象:指定授予权限的对象,通常是数据库、表、视图等。
- 用户:指定要授予权限的数据库用户。
1.2 示例
-
授予 SELECT 权限给用户:
sqlGRANT SELECT ON employees TO 'john'@'localhost';
-
授予用户对表的所有权限:
sqlGRANT ALL PRIVILEGES ON employees TO 'admin'@'localhost';
-
授予用户多个权限:
sqlGRANT SELECT, INSERT, UPDATE ON employees TO 'manager'@'localhost';
-
授予用户权限,并使其立即生效:
sqlGRANT SELECT ON *.* TO 'user1'@'localhost'; FLUSH PRIVILEGES;
-
授予对所有数据库的所有权限:
sqlGRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
这条语句授予
admin
用户对所有数据库的所有权限,并且WITH GRANT OPTION
允许用户将这些权限再授予其他用户。
2. REVOKE 语句
REVOKE
语句用于撤销之前授予的权限。与 GRANT
语句相反,REVOKE
会撤销对数据库用户的访问权限。
2.1 REVOKE 语法
sql
REVOKE 权限类型 ON 数据库对象 FROM 用户;
- 权限类型:要撤销的权限类型。
- 数据库对象:指定撤销权限的对象。
- 用户:指定要撤销权限的用户。
2.2 示例
-
撤销用户对表的 SELECT 权限:
sqlREVOKE SELECT ON employees FROM 'john'@'localhost';
-
撤销多个权限:
sqlREVOKE SELECT, INSERT ON employees FROM 'manager'@'localhost';
-
撤销对所有数据库的所有权限:
sqlREVOKE ALL PRIVILEGES ON *.* FROM 'admin'@'localhost';
-
撤销权限后刷新权限表:
sqlREVOKE ALL PRIVILEGES ON *.* FROM 'user1'@'localhost'; FLUSH PRIVILEGES;
3. SHOW GRANTS 语句
SHOW GRANTS
语句用于显示当前数据库用户的权限。通过该语句,管理员可以查看某个用户在数据库中的所有权限。
3.1 SHOW GRANTS 语法
sql
SHOW GRANTS FOR 用户;
3.2 示例
sql
SHOW GRANTS FOR 'admin'@'localhost';
此语句将返回用户 admin
在数据库中的所有权限列表。
4. 权限的类型
常见的权限类型包括:
- SELECT:允许查询数据库表。
- INSERT:允许在表中插入数据。
- UPDATE:允许更新表中的数据。
- DELETE:允许删除表中的数据。
- CREATE:允许创建新的数据库对象(如表、视图、索引等)。
- DROP:允许删除数据库对象(如表、视图等)。
- ALTER:允许修改数据库对象(如修改表结构)。
- INDEX:允许创建或删除索引。
- EXECUTE:允许执行存储过程或函数。
- ALL PRIVILEGES:授予所有权限。
5. WITH GRANT OPTION
在授予权限时,可以使用 WITH GRANT OPTION
来允许授予者将其拥有的权限再次授予给其他用户。只有具备此选项的用户才能继续授予其他用户权限。
示例:
sql
GRANT SELECT, INSERT ON employees TO 'user1'@'localhost' WITH GRANT OPTION;
该语句授予 user1
用户对 employees
表的 SELECT
和 INSERT
权限,并允许 user1
将这些权限授予其他用户。
6. FLUSH PRIVILEGES
在修改用户权限(例如使用 GRANT
或 REVOKE
)后,通常需要执行 FLUSH PRIVILEGES
来刷新权限缓存,使得新的权限立即生效。
示例:
sql
FLUSH PRIVILEGES;
7. DCL 语句的作用
- 权限控制:DCL 语句主要用于数据库安全管理,确保不同用户对数据库的访问权限合理分配,防止数据泄露、篡改等问题。
- 数据访问控制:通过授予或撤销特定权限,可以控制用户可以执行哪些操作,如查询数据、插入数据、删除数据等。
- 灵活性 :
WITH GRANT OPTION
使得权限管理更为灵活,允许用户将自己获得的权限转授权给其他用户。
8. 总结
- DCL 语句 主要包括
GRANT
和REVOKE
,用于控制数据库用户的权限。 GRANT
:授予权限,能够指定用户对数据库对象的访问权限。REVOKE
:撤销权限,用于取消用户对某个数据库对象的访问权限。- 权限管理:DCL 语句是确保数据库安全、避免非法访问和操作的重要工具。
使用 DCL 语句时,数据库管理员应谨慎授予权限,确保每个用户仅能访问其需要的数据和功能,避免权限过大导致潜在的安全风险。