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

MySQL数据库概述与基础

存储数据的方式

在数据库领域,存储数据的方式多种多样,主要包括以下几种:

  1. 变量和列表
    • 变量:在编程语言中用于存储单个数据项。
    • 列表(或数组):用于存储一系列有序的数据项。
  2. 文件
    • 将数据以文本或二进制形式存储在文件中,如CSV、JSON、XML等格式。
  3. 数据库
    • 数据库是专门用于存储、管理和检索大量数据的系统。它提供了更加复杂的数据组织、访问和安全性控制功能。
DBMS 和 数据库的关系
  • DBMS(数据库管理系统):是一种用于创建、维护、管理和访问数据库的软件系统。它提供了数据的存储、查询、更新和删除等功能。
  • 数据库:是存储在DBMS中的数据的集合,包括数据表、视图、索引等对象。

DBMS与数据库的关系类似于操作系统与文件系统的关系,DBMS是管理数据库的软件系统,而数据库则是存储数据的实际场所。

关系型数据库与非关系型数据库
  • 关系型数据库:基于关系模型组织数据,以表格形式存储数据,并通过SQL(结构化查询语言)进行数据操作。常见的关系型数据库有MySQL、Oracle、SQL Server等。
  • 非关系型数据库(NoSQL):不遵循传统的关系模型,而是以键值对、列存储、文档存储或图形数据库等形式存储数据。非关系型数据库更适合处理大量非结构化或半结构化数据,如MongoDB、Redis、Cassandra等。
常用的数据库
  • MySQL:开源的关系型数据库管理系统,广泛应用于Web开发中。
  • Oracle:商业化的关系型数据库管理系统,功能强大,适用于大型企业级应用。
  • SQL Server:微软开发的关系型数据库管理系统,与Windows平台紧密集成。
  • MongoDB:非关系型数据库中的代表,以文档形式存储数据,支持灵活的查询和索引。

环境搭建

安装MySQL

安装MySQL主要有两种方式:

  1. 小皮方式:使用小皮(HeidiSQL)等图形化工具进行一键安装和配置。
  2. 官网下载安装包:从MySQL官网下载对应版本的安装包,按照提示手动安装并配置环境变量。
SQL的可视化工具
  • SQLYog:一款流行的MySQL数据库管理工具,提供图形化界面,方便用户进行数据库操作。
  • Navicat:支持多种数据库系统的管理工具,包括MySQL、Oracle、SQL Server等。
  • DataGrip:JetBrains出品的数据库IDE,支持多种数据库,提供强大的代码补全和调试功能。
  • PyCharm:虽然主要是Python IDE,但也可以通过插件支持数据库操作,如DataGrip插件。

SQL语法介绍

通用语法
  1. 语句格式:可以写一行或多行,以分号(;)结尾。
  2. 阅读性:空格、换行、制表符(\t)等用于提高代码的可读性。
  3. 大小写:SQL语句不区分大小写,但通常关键字大写以提高可读性。
  4. 注释
    • --:单行注释。
    • #:在某些SQL方言中作为单行注释(MySQL中不常用)。
    • /* 注释内容 */:多行注释。
常用的数据类型
  • 整型INT,用于存储整数。
  • 浮点型FLOATDOUBLE,用于存储小数。
  • 字符型VARCHAR(n),用于存储可变长度的字符串,n表示最大长度。
  • 日期类型DATEDATETIME,分别用于存储日期和时间。
SQL语句分类
  • DDL(数据定义语言):用于定义数据库、数据表、字段等结构,如CREATEDROPALTERSHOW等。
  • DML(数据操纵语言):用于操作表中的数据,如INSERTDELETEUPDATE等。
  • DQL(数据查询语言):用于查询表中的数据,如SELECTFROMWHERE等。
  • DCL(数据控制语言):用于定义数据库的安全性和完整性,如GRANTREVOKE等(此处仅作了解)。

实操

DDL语句
  • 操作数据库
    • 增:CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET '码表名'];
    • 删:DROP DATABASE 数据库名;
    • 改:ALTER DATABASE 数据库名 CHARSET '码表名';
    • 查:SHOW DATABASES;SHOW CREATE DATABASE 数据库名;SELECT DATABASE();
    • 用(切库):USE 数据库名;
  • 约束
    • 单表约束
      • 主键约束:PRIMARY KEY,非空且唯一,常结合AUTO_INCREMENT使用。
      • 唯一约束:UNIQUE,唯一但可以为空。
      • 非空约束:NOT NULL,非空但可以重复。
      • 默认约束:DEFAULT,添加数据时未指定值则使用默认值。
    • 多表约束
      • 外键约束:FOREIGN KEY,用于建立表之间的关联。
  • 操作数据表
    • 增:CREATE TABLE [IF NOT EXISTS] 数据表名 (列名 数据类型 [约束], ...);
    • 删:DROP TABLE 数据表名;
    • 改:ALTER TABLE 旧表名 RENAME 新表名; 或 RENAME TABLE 旧表名 TO 新表名;
    • 查:SHOW TABLES;DESC 数据表名;SHOW CREATE TABLE 数据表名;
  • 操作字段
    • 增:ALTER TABLE 数据表名 ADD 新列名 数据类型 [约束];
    • 删:ALTER TABLE 数据表名 DROP 旧列名;
    • 改:ALTER TABLE 数据表名 MODIFY 旧列名 数据类型 [约束名]; 或 ALTER TABLE 数据表名 CHANGE 旧列名 新列名 数据类型 [约束名];
    • 查:DESC 数据表名;
DML语句
  • 操作表数据
    • 增:
      • 单条:INSERT INTO 数据表名 (列名1, 列名2...) VALUES (值1, 值2...);
      • 多条:INSERT INTO 数据表名 VALUES (值1, 值2...), (值1, 值2...);
    • 删:DELETE FROM 数据表名 WHERE 条件;
    • 改:UPDATE 数据表名 SET 列名=列值, ... WHERE 条件;
DQL语句
  • 单表查询
    • 完整格式:
      SELECT [DISTINCT] 列名1 [AS] 别名, 列名2 [AS] 别名 ... 
      FROM 数据表名 
      WHERE 组前筛选 
      GROUP BY 分组字段1, 分组字段2 ... 
      HAVING 组后筛选 
      ORDER BY 排序字段1 [ASC|DESC], 排序字段2 [ASC|DESC] 
      LIMIT 起始索引, 数据条数;
    • 简单查询:SELECT * FROM 数据表名 WHERE 条件;
    • 聚合查询:使用COUNT()MAX()MIN()AVG()SUM()等聚合函数。
    • 排序查询:ORDER BY子句用于排序查询结果。
    • 分组查询:GROUP BY子句用于将查询结果按一个或多个列进行分组。
    • 分页查询:LIMIT子句用于实现分页功能。
  • 多表查询
    • 细节: 多表查询的精髓:就是把多张表拼接成一张表  去 进行单表查询.
    • 交叉查询:SELECT * FROM A, B;(结果集为表的笛卡尔积)。
    • 连接查询:
      • 内连接:SELECT * FROM A INNER JOIN B ON 关联条件; 或 SELECT * FROM A, B WHERE 关联条件;(结果集为表的交集)。
      • 外连接:
        • 左外连接:SELECT * FROM A LEFT OUTER JOIN B ON 关联条件;(结果集为左表全集+交集,无交集部分用Null填充)。
        • 右外连接:SELECT * FROM A RIGHT OUTER JOIN B ON 关联条件;(结果集为右表全集+交集)。
    • 子查询:一个SQL语句的查询条件依赖于另一个SQL语句的查询结果。
    • 自关联查询:表自己与自己进行关联查询,常用于处理具有层级关系的数据(如省市区)。
窗口函数
  • 概述:窗口函数用于给表新增一列,新增的内容取决于与什么函数一起使用。
  • 格式窗口函数 OVER(PARTITION BY 分组字段 ORDER BY 排序字段 ASC|DESC)
  • 常用函数
    • 排序类:ROW_NUMBER()RANK()DENSE_RANK()NTILE(n)
    • 聚合函数类


http://www.mrgr.cn/news/31545.html

相关文章:

  • 2024年中国研究生数学建模竞赛F题思路代码模型文章——X射线脉冲星光子到达时间建模
  • How can I stream a response from LangChain‘s OpenAI using Flask API?
  • 生活小助手系统小程序的设计
  • 语言的复合语句
  • PCDN技术如何实现动态调度与负载均衡(壹)?
  • 【渐冻勇士的营养秘籍!这些营养素让爱更坚强】
  • 若依shiro非前后端分离项目集群化改造
  • 技术大神把Linux装进Intel 4004?4 位运算能力,640字节内存地址!怎么做到的?
  • windows环境下配置MySQL主从启动失败 查看data文件夹中.err发现报错unknown variable ‘log‐bin=mysql‐bin‘
  • 音视频入门基础:AAC专题(3)——AAC的ADTS格式简介
  • python 多边形越界
  • Python | Leetcode Python题解之第420题强密码检验器
  • 煤矿智慧矿井数据集 (1.煤矿采掘工作面智能分析数据集2.煤矿井下钻场智能分析数据集 )
  • zabbix7.0容器化部署测试--(1)准备容器镜像
  • Rust 文件与 IO
  • 【Python】探索 Errbot:多功能聊天机器人框架
  • SOAP 实例
  • C 标准库 - <ctype.h>
  • Python中使用Scikit-learn进行线性回归分析的实用指南
  • 如何在 PHP 中处理 MySQL 的结果集