当前位置: 首页 > article >正文

数据库 - MySQL介绍

目录

前言

一、MySQL介绍

(一)关系型数据库

(二)SQL支持

(三)开源

(四)性能和拓展性

(五)支持多种存储引擎

(六)事物与锁机制

(七)跨平台支持

(八)社区支持与生态系统

(九)适用场景

(十)优缺点

 总结

二、MySQL的简单操作

(一)连接数据库

(二)创建数据库

(三)创建表

(四)插入数据

(五)查询数据

(六)更新数据

(七)删除数据

(八)删除表

(九)删除数据库

(十)数据类型简介

(十一)导入和导出数据

(十二)用户管理


前言

从这篇文章就开始讲述MySQL相关知识,数据库在项目中是非常重要的存在,主要用于存储数据,让我们接着往下看。


一、MySQL介绍

MySQL 是一个广泛使用的开源关系型数据库管理系统(RDBMS),主要用于管理和组织存储在表格中的数据。它由瑞典的 MySQL AB 公司开发,现属于 Oracle 公司。MySQL有以下几个关键点:

(一)关系型数据库

MySQL 使用关系型模型存储数据,这意味着数据被组织成表格,表格之间可以通过特定的字段(如外键)建立关系。每张表由组成,列代表数据的属性,而行则是实际的记录。

(二)SQL支持

MySQL 支持SQL(结构化查询语言),这是数据库操作的标准语言。你可以使用 SQL 来执行数据查询、插入、更新、删除操作。常见的 SQL 语句包括:

  • SELECT:从表中查询数据。

  • INSERT:向表中插入新数据。

  • UPDATE:更新表中的现有数据。

  • DELETE:删除表中的数据。

(三)开源

MySQL 是一个开源软件,这意味着你可以免费下载、使用和修改其源代码。尽管 MySQL 现在属于 Oracle,但其社区版仍然保留开源模式,用户可以根据需要进行扩展和定制。

(四)性能和拓展性

MySQL 因其高性能扩展性而广受欢迎。它可以处理从小型应用程序到大型系统的多种数据工作负载,适合高并发的在线事务处理(OLTP)系统。MySQL 的存储引擎(如 InnoDB 和 MyISAM)提供了不同的方式来管理数据和提高性能。

(五)支持多种存储引擎

MySQL 支持多种存储引擎,这让用户可以根据具体需求选择适合的引擎。常用的存储引擎包括:

  • InnoDB:支持事务、外键和行级锁,适用于高一致性要求的应用。

  • MyISAM:不支持事务,适用于高读取速度的应用。

这些引擎之间的差异让 MySQL 在不同场景下表现灵活,适合多种需求。

(六)事物与锁机制

MySQL 支持事务处理,这意味着一组 SQL 操作可以作为一个原子操作执行,要么全部成功,要么全部失败。事务通常用于确保数据一致性和完整性。MySQL 还提供了锁机制,以防止并发操作时的数据冲突问题。

(七)跨平台支持

MySQL 是跨平台的,支持多种操作系统,包括 Linux、Windows、macOS 等,这使得它可以在不同的开发环境中广泛使用。

(八)社区支持与生态系统

由于 MySQL 的流行,它拥有强大的社区支持和丰富的第三方工具、库与扩展。你可以很容易地找到文档、教程、插件,以及与 MySQL 相关的各种资源。

(九)适用场景

MySQL 适用于各种类型的应用,特别是在网络应用中十分流行。例如,许多 Web 开发框架(如 PHP、Python 的 Django)都可以与 MySQL 无缝集成。它在内容管理系统(CMS)电子商务社交媒体平台等方面有广泛应用。

(十)优缺点

  • 优点

    • 免费开源:对于大部分应用场景来说,MySQL 的社区版已经足够使用。

    • 快速性能:尤其是对读取和查询操作优化得很好。

    • 易于学习:语法直观,学习门槛较低。

    • 广泛的第三方工具支持:例如 phpMyAdmin、HeidiSQL 等工具使数据库管理更简单。

  • 缺点

    • 事务处理较弱(尤其是相比于 PostgreSQL 等其他数据库)。

    • 功能相对简单:对于一些高级数据需求,MySQL 可能不够强大。

 总结

MySQL 是一款轻量级、灵活、可靠的数据库管理系统,适用于各种网络应用。它的广泛使用、良好的社区支持、以及跨平台的特性,使得 MySQL 成为现代开发中不可或缺的一部分。


二、MySQL的简单操作

MySQL 的基本操作主要围绕数据库和表的创建、管理以及数据的增删改查。以下是一些常见的 MySQL 操作及其 SQL 语句示例。

(一)连接数据库

首先,连接到 MySQL 服务器,可以通过命令行工具或图形化界面来连接。

mysql -u 用户名 -p

输入正确的密码后,你就会进入 MySQL 命令行界面,准备执行 SQL 语句。

(二)创建数据库

创建一个新的数据库可以使用 CREATE DATABASE 语句:

CREATE DATABASE test_db;

创建后,可以选择使用这个数据库:

USE test_db;

(三)创建表

创建表需要指定表的名称和列的结构,包括列的数据类型、长度等。例如,创建一个用户表 users

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  • id 列是主键(PRIMARY KEY),并且自动递增(AUTO_INCREMENT)。

  • username 列是 VARCHAR(50) 类型,表示最多包含 50 个字符,且不能为空(NOT NULL)。

  • email 列是 VARCHAR(100) 类型,可以为空。

  • created_at 列是时间戳类型,默认值是当前时间。

(四)插入数据

向表中插入数据可以使用 INSERT INTO 语句。例如,向 users 表中插入一条新记录:

INSERT INTO users (username, email) 
VALUES ('JohnDoe', 'johndoe@example.com');

如果某些列具有默认值,或者可以为空,那么这些列可以不在 INSERT INTO 语句中指定。

(五)查询数据

使用 SELECT 语句来从表中查询数据。以下是一些常见的查询操作:

查询所有数据:

SELECT * FROM users;

查询特定列:

SELECT username, email FROM users;

添加条件查询:

SELECT * FROM users WHERE username = 'JohnDoe';

排序查询结果:

SELECT * FROM users ORDER BY created_at DESC;

限制返回的记录数:

SELECT * FROM users LIMIT 5;

(六)更新数据

使用 UPDATE 语句来修改表中的数据。例如,修改用户 JohnDoe 的邮箱地址:

UPDATE users 
SET email = 'newemail@example.com' 
WHERE username = 'JohnDoe';

注意WHERE 子句是必要的,如果不加 WHERE,则所有的记录都会被更新。

(七)删除数据

使用 DELETE 语句来删除表中的数据。例如,删除用户名为 JohnDoe 的记录:

DELETE FROM users WHERE username = 'JohnDoe';

同样需要注意 WHERE 子句,否则会删除所有记录。

(八)删除表

删除表时,使用 DROP TABLE 语句:

DROP TABLE users;

(九)删除数据库

如果不再需要某个数据库,可以删除它:

DROP DATABASE test_db;

(十)数据类型简介

在创建表时,你需要为每一列指定适当的数据类型。常用的数据类型包括:

  • 整数类型INTTINYINTBIGINT 等。

  • 字符串类型VARCHAR(n)TEXT 等。

  • 日期和时间类型DATEDATETIMETIMESTAMP 等。

  • 浮点数类型FLOATDOUBLE

(十一)导入和导出数据

可以使用 MySQL 的导入导出功能来备份和恢复数据。

导出数据库:

mysqldump -u 用户名 -p 数据库名 > backup.sql

导入数据库:

mysql -u 用户名 -p 数据库名 < backup.sql

(十二)用户管理

MySQL 也支持用户管理,例如创建用户并赋予权限:

创建新用户:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

授予权限:

GRANT ALL PRIVILEGES ON test_db.* TO 'newuser'@'localhost';

刷新权限:

FLUSH PRIVILEGES;

三、总结

该篇文章主要是MySQL的入门简介,主要是MySQL的介绍和较为基础的操作,下篇文章会进行数据查询相关的探讨,拭目以待吧!


http://www.kler.cn/a/315962.html

相关文章:

  • Cellebrite VS IOS18Rebooting
  • 【NLP】医学搜索Query相关性判断【阿里云:天池比赛】
  • 大模型在蓝鲸运维体系应用——蓝鲸运维开发智能助手
  • 浅谈“通感一体”
  • 算法每日双题精讲——滑动窗口(长度最小的子数组,无重复字符的最长子串)
  • DAY112代码审计PHP开发框架POP链利用Yii反序列化POP利用链
  • 离职员工客户如何管理?解锁2024企业微信新功能
  • 清空当前机器所有Docker容器和镜像
  • C#通过键盘钩子实现二维扫描枪传输数据的接收
  • 亮相世界制造业大会,智象未来(HiDream.ai)揭示产业发展新趋势
  • python爬虫:将知乎专栏文章转为pdf
  • JMeter(需要补充请在留言区发给我,谢谢)
  • Mysql梳理7——分页查询
  • 经验笔记:Python 脚本打包为可执行文件(.exe)
  • 「Java开发指南」如何用MyEclipse搭建Adobe和Spring Flex?(二)
  • 自由切换存储方式:本地 or OSS
  • 《深度学习》卷积神经网络CNN 原理及其流程解析
  • 网络安全中GET和POST区别在哪?
  • 【原创】java+springboot+mysql党员教育网系统设计与实现
  • 利用WPF绘制轮廓并保存为图片
  • Logstash 安装与部署(无坑版)
  • Vue:加载本地视频
  • 【Opencv知识】图像梯度如何理解?
  • 图文深入理解SQL语句的执行过程
  • Android下反调试与反反调试
  • 开源 AI 智能名片链动 2+1 模式 S2B2C 商城小程序与社交电商的崛起