颠覆认知的MySQL全解析:安装、连接到SQL三大核心语句全掌握

一、MySQL介绍和安装

一、MySQL简介

什么是 MySQL?

MySQL 是目前最流行的开源关系型数据库管理系统(RDBMS),由瑞典 MySQL AB 公司开发(现属于 Oracle)。它使用结构化查询语言(SQL)进行数据的访问和管理,具备高性能、高可靠性和易使用等特点,广泛应用于 Web 开发、数据分析、ERP 系统等各种场景。

MySQL 的核心特点:
  • 开源免费:大多数功能免费开放,可商用;
  • 跨平台支持:可在 Windows、Linux、macOS 等系统运行;
  • 高性能和可扩展性:适用于中小型项目也能支撑大型系统;
  • 安全性强:提供用户权限管理和数据加密机制;
  • 与流行语言无缝集成:支持 PHP、Java、Python、Node.js 等。

二、MySQL 安装流程(以 Windows 为例)

1:下载安装包
  1. 访问官网: 👉 dev.mysql.com/downloads/
  2. 选择 "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语句一般包括以下几类操作:

  1. 数据查询(SELECT)
  2. 数据插入(INSERT)
  3. 数据更新(UPDATE)
  4. 数据删除(DELETE)
  5. 创建表(CREATE TABLE)
  6. 修改表结构(ALTER TABLE)
  7. 删除表(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 : 用于存储TRUEFALSE值。

5. 二进制类型

  • BLOB: 存储二进制数据(如图片、文件等)。

6. 其他数据类型

  • ENUM: 枚举类型,用于限制列的值只能是预定义的一组值中的一个。
  • SET: 用于存储一组独立的值,可以包含多个值,但每个值只能选择一次。

四、SQL语句-DDL语句

DDL(Data Definition Language)是用于定义和修改数据库结构的语言部分,主要包括创建、修改、删除数据库对象,如表、视图、索引等。 DDL(Data Definition Language,数据定义语言)是SQL的一个子集,用于定义、修改和删除数据库中的结构性对象,如表、视图、索引等。常见的DDL语句包括 CREATEALTERDROP 等,它们通常不涉及数据的操作,而是用于数据库结构的定义和修改。

常见的DDL语句:

  • CREATE:用于创建数据库对象。
  • ALTER:用于修改数据库对象。
  • DROP:用于删除数据库对象。
  • TRUNCATE:用于删除表中的所有数据。
  • RENAME:用于重命名数据库对象。
  • COMMENT:用于为数据库对象添加注释。

1. CREATE 语句

CREATE 语句用于创建新的数据库对象,如数据库、表、视图、索引等。它是数据库的最基本的定义语句。

示例:
  • 创建数据库

    sql 复制代码
    CREATE DATABASE school;
    --推荐使用下面这一种方式因为上面已经存在数据库的话会提示报错。
    CREATE DATABASE IF NOT EXISTS test_study;
    --你也可以执行创建时候编码格式一般就是默认即可。
  • 创建表

    sql 复制代码
    CREATE TABLE students (
        student_id INT PRIMARY KEY,
        first_name VARCHAR(50),
        last_name VARCHAR(50),
        birth_date DATE
    );
  • 创建索引

    sql 复制代码
    CREATE INDEX idx_student_name
    ON students (last_name, first_name);
  • 创建视图

    sql 复制代码
    CREATE VIEW student_view AS
    SELECT student_id, first_name, last_name
    FROM students
    WHERE birth_date > '2000-01-01';

2. ALTER 语句

ALTER 语句用于修改已经存在的数据库对象的结构,比如增加、删除列,修改列的数据类型等。

示例:
  • 添加列

    sql 复制代码
    ALTER TABLE students
    ADD email VARCHAR(100);
  • 删除列

    sql 复制代码
    ALTER TABLE students
    DROP COLUMN email;
  • 修改列的数据类型

    sql 复制代码
    ALTER TABLE students
    MODIFY COLUMN first_name VARCHAR(100);
  • 重命名表

    sql 复制代码
    ALTER TABLE students
    RENAME TO alumni;

3. DROP 语句

DROP 语句用于删除数据库中的对象。执行 DROP 后,数据和结构会永久丢失,因此在使用时需要非常小心。

示例:
  • 删除数据库

    sql 复制代码
    DROP DATABASE school;
    --推荐加上条件更完善
    DROP DATABASE IF EXISTS test_study;
  • 删除表

    sql 复制代码
    DROP TABLE students;
  • 删除索引

    sql 复制代码
    DROP INDEX idx_student_name;
  • 删除视图

    sql 复制代码
    DROP VIEW student_view;

4. TRUNCATE 语句

虽然 TRUNCATE 语句不是严格意义上的DDL语句,但它常被归类于DDL,因为它主要用于删除表中的所有数据,而不涉及数据的逐行删除。它比 DELETE 快,因为它不生成日志和触发器。

示例:
sql 复制代码
TRUNCATE TABLE students;

5. 其他 DDL 语句

  • RENAME 语句:重命名数据库对象(如表、列等)。

    sql 复制代码
    RENAME TABLE old_table TO new_table;
  • COMMENT 语句:为数据库对象添加注释。

    sql 复制代码
    COMMENT ON COLUMN students.first_name IS '学生的名字';

6. 总结

DDL语句是数据库管理中必不可少的部分,主要负责数据库对象的定义、修改和删除。与DML(数据操作语言)不同,DDL主要操作数据库结构,而非数据本身。

五、SQL语句-DML语句

DML(Data Manipulation Language,数据操作语言)

DML语句允许用户查询、插入、更新和删除数据库中的数据。DML语句的执行不直接影响数据库的结构(如表、索引等),只会影响数据本身。

常见的DML语句有以下几种:

  1. SELECT --- 查询数据
  2. INSERT --- 插入数据
  3. UPDATE --- 更新数据
  4. 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操作

  1. 简单查询 使用 SELECT 语句从一个表中查询所有数据。

    sql 复制代码
    SELECT * FROM employees;

    这里,* 表示查询该表中的所有列。

  2. 查询指定列 如果只想查询表中的部分列,可以指定列名。

    sql 复制代码
    SELECT name, age, salary FROM employees;
  3. 条件查询 使用 WHERE 子句来筛选符合条件的数据。

    sql 复制代码
    SELECT * FROM employees WHERE age > 30;

    该语句将查询年龄大于30岁的员工。

  4. 逻辑运算符 ANDORNOT 运算符可以组合多个条件进行查询。

    sql 复制代码
    SELECT * FROM employees WHERE age > 30 AND salary > 5000;
  5. 排序查询 使用 ORDER BY 子句对查询结果进行排序。可以使用 ASC(升序)或 DESC(降序)指定排序方式。

    sql 复制代码
    SELECT * FROM employees ORDER BY salary DESC;

    该查询会按薪水降序排序员工。

  6. 限制返回结果的数量 使用 LIMIT 子句来限制返回的结果行数。

    sql 复制代码
    SELECT * FROM employees LIMIT 5;

    该查询将返回前5条员工数据。

  7. 分组查询 使用 GROUP BY 子句来对数据进行分组,并且通常结合 COUNTSUMAVG 等聚合函数一起使用。

    sql 复制代码
    SELECT department, COUNT(*) FROM employees GROUP BY department;

    该查询将按部门分组,统计每个部门的员工数量。

  8. 过滤分组结果 使用 HAVING 子句来对分组后的数据进行进一步筛选。注意,HAVING 是对 GROUP BY 子句后的结果进行筛选的,而 WHERE 是对原始数据进行筛选的。

    sql 复制代码
    SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 10;

    该查询将返回员工人数超过10人的部门。

  9. 联合查询 使用 UNIONUNION ALL 将多个查询结果进行合并。UNION 会去重,而 UNION ALL 会返回所有结果,包括重复的。

    sql 复制代码
    SELECT name FROM employees WHERE age > 30
    UNION
    SELECT name FROM employees WHERE salary > 5000;
  10. 子查询 子查询是嵌套在主查询中的查询语句,可以用于复杂查询。

    sql 复制代码
    SELECT 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 语句包括 GRANTREVOKE

1. GRANT 语句

GRANT 语句用于将权限授予用户或角色。可以授予的权限包括数据库操作权限(如:SELECT、INSERT、UPDATE、DELETE)以及数据库结构权限(如:CREATE、ALTER、DROP)。

1.1 GRANT 语法
sql 复制代码
GRANT 权限类型 ON 数据库对象 TO 用户;
  • 权限类型 :指定授予用户的权限类型,例如 SELECTINSERTUPDATEDELETE 等。
  • 数据库对象:指定授予权限的对象,通常是数据库、表、视图等。
  • 用户:指定要授予权限的数据库用户。
1.2 示例
  • 授予 SELECT 权限给用户

    sql 复制代码
    GRANT SELECT ON employees TO 'john'@'localhost';
  • 授予用户对表的所有权限

    sql 复制代码
    GRANT ALL PRIVILEGES ON employees TO 'admin'@'localhost';
  • 授予用户多个权限

    sql 复制代码
    GRANT SELECT, INSERT, UPDATE ON employees TO 'manager'@'localhost';
  • 授予用户权限,并使其立即生效

    sql 复制代码
    GRANT SELECT ON *.* TO 'user1'@'localhost';
    FLUSH PRIVILEGES;
  • 授予对所有数据库的所有权限

    sql 复制代码
    GRANT 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 权限

    sql 复制代码
    REVOKE SELECT ON employees FROM 'john'@'localhost';
  • 撤销多个权限

    sql 复制代码
    REVOKE SELECT, INSERT ON employees FROM 'manager'@'localhost';
  • 撤销对所有数据库的所有权限

    sql 复制代码
    REVOKE ALL PRIVILEGES ON *.* FROM 'admin'@'localhost';
  • 撤销权限后刷新权限表

    sql 复制代码
    REVOKE 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 表的 SELECTINSERT 权限,并允许 user1 将这些权限授予其他用户。

6. FLUSH PRIVILEGES

在修改用户权限(例如使用 GRANTREVOKE)后,通常需要执行 FLUSH PRIVILEGES 来刷新权限缓存,使得新的权限立即生效。

示例:
sql 复制代码
FLUSH PRIVILEGES;

7. DCL 语句的作用

  • 权限控制:DCL 语句主要用于数据库安全管理,确保不同用户对数据库的访问权限合理分配,防止数据泄露、篡改等问题。
  • 数据访问控制:通过授予或撤销特定权限,可以控制用户可以执行哪些操作,如查询数据、插入数据、删除数据等。
  • 灵活性WITH GRANT OPTION 使得权限管理更为灵活,允许用户将自己获得的权限转授权给其他用户。

8. 总结

  • DCL 语句 主要包括 GRANTREVOKE,用于控制数据库用户的权限。
  • GRANT:授予权限,能够指定用户对数据库对象的访问权限。
  • REVOKE:撤销权限,用于取消用户对某个数据库对象的访问权限。
  • 权限管理:DCL 语句是确保数据库安全、避免非法访问和操作的重要工具。

使用 DCL 语句时,数据库管理员应谨慎授予权限,确保每个用户仅能访问其需要的数据和功能,避免权限过大导致潜在的安全风险。

相关推荐
朝阳5819 分钟前
Rust项目GPG签名配置指南
开发语言·后端·rust
微网兔子10 分钟前
伺服器用什么语言开发呢?做什么用什么?
服务器·c++·后端·游戏
朝阳58111 分钟前
Rust实现高性能目录扫描工具ll的技术解析
开发语言·后端·rust
小希爸爸33 分钟前
2、中医基础入门和养生
前端·后端
冰^1 小时前
MySQL VS SQL Server:优缺点全解析
数据库·数据仓库·redis·sql·mysql·json·数据库开发
盖世英雄酱581361 小时前
分布式ID所有生成方案
java·后端
小希爸爸1 小时前
1、中医基础入门和养生
前端·后端
敖云岚2 小时前
【AI】SpringAI 第五弹:接入千帆大模型
java·大数据·人工智能·spring boot·后端
桦说编程2 小时前
CompletableFuture典型错误 -- 代码出自某大厂
java·后端·响应式编程
Spring小子2 小时前
黑马点评商户查询缓存--缓存更新策略
java·数据库·redis·后端