• MySQL的基础知识


    一、数据库的定义

    数据:

    描述事物符号记录。(包括数字、文字、图形、图像、声音、档案记录等)以记录形式统一的格式进行存储。

    程序的概念

    程序=指令+数据

    狭义的数据和广义数据

    狭义的数据(文字和符号记录)  

    结构化数据:文字、数字、符号记录被称为结构化数据,有一定的结构,可以放在表里面。例如:mysql

    非结构化数据:图形、图像、声音、档案记录,一般称之为静态资源,一般存在静态资源web服务器(或者CDA的代理服务器)如:apche,nginx

    半结构化数据:半结构化数据是现代数据体系中非常常见的数据类型。与严格格式化的数据库数据相反,它能以灵活的格式存在。例如,电子邮件就是一个常见的例子,其中包含了一定的结构(如发件人、收件人、主题等字段),但其内容往往不遵循固定格式。结构化数据通常存储在关系型数据库中,如SQL数据库,具有预定义的数据模型。相比之下,半结构化数据不遵循这样严格的模型,但仍有组织的方式表达数据的层次关系和语义。

    二、数据层次模型

    数据存在文本文件中,采用什么结构组织数据,称为数据结构模型。

    文件系统:树状模型(层次模型,检索效率低)

    层次模型、网状结构(检索效率高,存储效率不高)、关系模型(数据组织成二维表,将数据组织成二维关系,类似与excel表,分为行和列)

    二维关系:行(row) 列(column)

    表与表的关系性(降低数据冗余) 表与表的约束性

    三、数据库的构成

    数据:

    表:将不同的记录(数据)组织在一起,就形成了表;用于存储数据。      (表是存储数据的唯一单位)

    库:表的集合体,是存储数据的仓库,以一定的组织方式存储的互相有关的数据。(ORACLE只有一个数据库)

    库--->表--->数据(行、列)

    四、数据库管理系统(DBMS)

    将二维关系数据结构模型规范得以实现,我们称为数据库管理系统DBMS

    遵循三种基本范式才能被成为关系型数据库,关系型数据库管理系统称为RDBMS

    三大范式:

              第一范式:在满足关系模型基础之上,任意一列必须是原子的(不可分割)

              第二范式:在满足第一范式的情况下,必须有一列的数据可以区分每一行的数据(主键)

              第三范式:在满足前两范式的情况下,在表和表有连接关系的情况下,如果第一张表依赖第二张表,那么被依赖的表的字段必须是能够区别每一行的数据的字段(主键)

    主键:有且只有一个,而且不能为空

    外键:依赖于被依赖表中的某个字段已有的数据,被依赖表中这个数据可重复,可以为空

    数据库管理系统的分类:

     DBMS:数据库管理系统

    RDBMS:关系型数据库管理系统

    NOSQL:非关系型数据库

    NEWSQL:新型数据库

    关系型数据库管理系统(RDBMS)

    包括  开源解决方案: mysql、mariadb、Percona-server、pgsql  .....

             商业解决方案: ORACLE、DB2、MS-SQL(SQLSERVER)  ......

    基本组成结构:磁盘空间管理器、缓冲管理器、文件和存取接口、锁管理器、事务管理器、恢复管理器、SQL引擎

    磁盘空间管理器:磁盘空间存储对应一些数据块,管理磁盘数据拉区到数据字典的过程叫做磁盘空间管理器。如:使用 drop database;的一瞬间,就是调用磁盘管理器,把磁盘块里面数据删掉。

    缓冲管理器:如mysql表中新增的数据,一瞬间没存储到磁盘,在缓冲阶段,就在缓冲管理器里,数据库IO并发大

    文件和存取接口:数据字典

    锁管理器:数据备份;冷备份直接copy、温备份先将数据上锁(没有读权),等备份完再解锁。

    恢复管理器:恢复数据和锁管理器一起使用。

    SQL引擎:提供SQL接口的一个终端界面,同时将sql语句翻译成二级制执行码。

    关系型数据库的事务:原子性、一致性、隔离性、持久性。

    SQL引擎:传递SQL语句进行解释执行

               数据存储   C/S架构

    S:服务端,监听于套接字3306,接受并处理客户端应用请求、

    C:客户端:CLI 命令行字符界面   GUI:图形化处理界面

    客户端三种:程序、命令行、图形化999

    五、数据库内容的部分基本概念

    1:约束:constraint   向数据表提供的数据要遵守的限制

    完整性约束:表约束和键约束

    主键(primary key):一个或多个字段的组合,填入的数据必须在本表中唯一标识本行,必须提供数据,不能为空(not null),一个表只能有一个。

    唯一键(unique key):一个或多个字段的组合,填入的数据必须在本表中唯一标识本行,可以为空,一个表可以有多个。

    外键:一个表中的某字段可填入数据取决于另一个表的主键已有的数据。

    表约束:范围大小,非空,字段大小,字段类型等。

    2:索引:将表中的一个或多个字段中的数据复制一份另存,并且此些需要按照特定次序排序存储。(键一定是索引,但索引不一定是键)

    3:关系运算:(非常重要,主要运用在数据的查询操作)

           选择:挑选出符合条件的行。

           投影:挑选出需要的字段。

           连接:(设计连表操作的运算)内连接、外连接、左外连接、

    六、关系型数据库常见组件(视图层)

    数据库:database

    表    :table

    行:row

    列:column

    索引:index

    视图:view

    用户:user

    权限:privilege

    跟程序开发相关的(sql引擎一般都支持过程式编程,支持条件判断、循环等。调用sql代码)

    存储过程:procedure          直接调用,仅仅做了数据加工,不返回结果。

    存储函数:function            调用完后有返回结果的代码片段

    触发器:trigger               也是一片代码片段,特殊事件发生,满足条件触发。

    事件调度器:event scheduler   定期执行内建任务,完成周期性调度任务

    七、简单的SQL语句

    DDL:数据定义语言 CREATE,DROP,ALTER(非数据层面的组件   库  表  视图  索引  存储过程  存储函数) 

    DML: 数据操作语言 INSERT,DELETE,UPDATE,SELECT

    DCL:数据控制语言 GRANT,REVOKE(授权和撤销授权).....

    命令帮助(查看帮助文档)

    HELP  KEYWORD(命令关键字)

    \?  (相当于HELP)

    SQL语句操作:

    查看mysql的状态和版本      status 相当于\s

    创建库  CREATE DATABASE [IF NOT EXISTS]  DB_NAME;同时可以指定字符集和排序规则

    删除库  DROP DATABASE [IF EXISTS] ‘DB_NAME’;(非常危险,生产环境不建议使用) 

     创建表:CREATE TABLE 表名(字段1 数据类型 修饰符,字段2 数据类型 修饰符......) [ENGINE=’’]

    查看存储引擎:SHOW ENGINES;

     删除表  DROP TABLE [IF EXISTS] ‘tbl_name’;  (也非常危险,谨慎操作)

    例:给 root 安全加固、创建新用户、给用户赋权

    mysql -u root -p

    set password for 'root'@'localhost' = '123456'; //给 root 重新设置密码

    create user 'test'@'%' identified by '123456'; //创建新用户

    grant all privileges on *.* to 'test'@'%'; //给用户赋权

    flush privileges; //刷新授权 

    创建 shopxo 用户,库,授权

    mysql -u root -p

    create database shopxo;

    create user 'shopxo'@'%' identified by '123456';

    grant all privileges on * .* to 'shopxo'@'%'; //授权给 wordpress 所有表

    flush privileges; //刷新授权

    systemctl restart mysqld.service  //重启服务

    MySQL(windows版本)命令行的快捷操作键

    ESC:光标删除至最左侧

    F3:上一次命令再操作补全

    F7:之前操作过的sql命令列表

    exit:退出sql接口(或者quit   或者\q)

  • 相关阅读:
    【力扣】1588. 所有奇数长度子数组的和 <前缀和>
    科目二倒车入库
    Stable Diffusion XL搭建
    一个 MySQL 隐式转换的坑,差点把服务器整崩溃了
    终于可以一行代码也不用改了!ShardingSphere 原生驱动问世
    CSS动画实现节流
    文件包含笔记
    洋码头API 根据ID取商品详情 Onebound电商数据接口
    kail 搭建docker和vulhub漏洞环境
    设计模式之美——基于接口编程
  • 原文地址:https://blog.csdn.net/m0_51586984/article/details/137998130