MySQL概述 -- 数据模型SQL简介DDL数据库操作

news2024/11/23 21:56:04

一. 数据模型

介绍完了Mysql数据库的安装配置之后,接下来我们再来聊一聊Mysql当中的数据模型。学完了这一小节之后,我们就能够知道在Mysql数据库当中到底是如何来存储和管理数据的。

在介绍 Mysql的数据模型之前,需要先了解一个概念:关系型数据库。

SQL语句是操作关系型数据库的统一标准

关系型数据库(RDBMS):Relational Database Management System

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

而所谓二维表,指的是由行和列组成的表,如下图:

二维表的优点:

  • 使用这种表结构存储数据,格式统一,便于数据的管理与维护

  • 使用这种表结构来存储数据,我们可以使用标准的SQL语句来操作,标准统一,使用方便,因为SQL语句可以操作所有的关系型数据库,而且使用SQL语句还可以很方便的进行一些复杂查询

什么是复杂查询?

比如,我要查询2号员工张无忌他到底归属于哪一个部门的?

此时我们可以看到在员工表当中记录了张无忌,他是归属于2号部门的,2号部门属于哪个部门?此时我们可以去部门表当中查看,部门表当中就记录了2号部门是教研部,这样我就知道了张无忌他是属于教研部的。此时我们就将这两张表通过部门这一列连接起来查询了,这就是所谓的复杂查询。当然我们将来除了在多张表之间使用这种复杂查询以外,我们还可以在一张表当中进行一些统计分析,排序分页等这种复杂的查询操作。

我们之前提到的MySQL、Oracle、DB2、SQLServer这些都是属于关系型数据库,里面都是基于二维表存储数据的。

结论:基于二维表存储数据的数据库就成为关系型数据库,不是基于二维表存储数据的数据库,就是非关系型数据库(比如大家后面要学习的Redis,就属于非关系型数据库)。

基于这种二维表来存储数据的数据库,我们就称之为关系型数据库。

反之,不是通过表结构来存储数据的,我们就称之非关系型数据库。

2). 数据模型

介绍完了关系型数据库之后,接下来我们再来看一看在Mysql数据库当中到底是如何来存储数据的,也就是Mysql 的数据模型。

刚才我们在本机上已经安装好了MySQL数据库,那其实现在我们的计算机就作为了一台MySQL数据库服务器。

那此时,我们要想操作这台MySQL数据库,就需要通过MySQL的客户端来连接上这台MySQL数据库服务器,然后才可以操作里面的数据。

在MySQL数据库服务器当中,其实就内置了一个软件,就是这个DBMS --- 数据库管理系统,我们通过数据库管理系统这个软件就可以操作数据库当中的数据了。比如我们可以通过客户端来发送一条SQL语句给数据库管理系统,告诉它我们要创建一个数据库,那此时,数据库管理系统就会根据我们的指令创建出对应的数据库,而这个数据库在我们的磁盘文件当中就是以文件夹的形式来体现的。data文件夹下存放的就是MySQL数据库的数据。

在一个数据库服务器当中,我们是可以创建多个数据库的,而且多个数据库之间它们是相互独立,互不影响的。而在这个数据库下面,我们就可以来创建表结构来存放数据,一个数据库下面我们是可以创建多张表结构的,而表结构当中存储的就是一条一条的数据。这个表最终体现在磁盘当中就是一个磁盘文件,这个文件当中存放的就是表结构当中的数据。

而我们在查询这张表中数据的时候,它就会把磁盘文件当中的数据加载出来,然后以二维表的形式呈现给我们。

总结:在MySQL数据库服务器当中存储数据,需要先去创建数据库,然后在这个数据库下再去创建对应的表结构,然后再将数据存放在这个表结构当中,而且在一个数据库服务器当中,我们可以创建多个数据库,而且多个数据库之间是相互独立的互不影响的,而一个数据库下面我们又可以创建多张表,一张表当中又可以存储多条数据,这就是MySQL的数据模型。

MySQL是关系型数据库,是基于二维表进行数据存储的,具体的结构图下:

  • 通过MySQL客户端连接数据库管理系统DBMS,然后通过DBMS操作数据库

  • 使用MySQL客户端,向数据库管理系统发送一条SQL语句,由数据库管理系统根据SQL语句指令去操作数据库中的表结构及数据

  • 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录。

在Mysql数据库服务器当中存储数据,你需要:

  1. 先去创建数据库(可以创建多个数据库,之间是相互独立的)

  2. 在数据库下再去创建数据表(一个数据库下可以创建多张表)

  3. 再将数据存放在数据表中(一张表可以存储多行数据)

二. SQL简介 

SQL语句书写的通用语法以及常见的SQL分类

SQL:结构化查询语言。一门操作关系型数据库的编程语言定义了一套操作所有关系型数据库               的统一标准。

学习数据库技术,最重要的就是学习SQL语句。

show  databases; --- 用来查看数据库服务器当中所有的数据库的。

1.3.1 SQL通用语法

1. SQL语句可以单行或多行书写,以分号结尾。指令结束需要加上分号或者反斜杠\g

2. SQL语句可以使用空格 / 缩进来增强语句的可读性。

3. MySQL数据库的SQL语句不区分大小写。

4. 注释:

  • 单行注释:-- 注释内容 或 # 注释内容(MySQL特有) 注意:-- 后面有个空格
  • 多行注释: /* 注释内容 */

1.3.2 SQL语句的分类

SQL语句根据其功能被分为四大类:DDL、DML、DQL、DCL

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(包括定义数据库,定义数据库当中的表,定义数据库表中的字段,所谓字段指的就是这一列)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录,就是用来查询数据库表结构当中的数据的
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

我们数据库安装好之后,已经有了一个默认的用户 --- root,也就是超级管理员用户。

如果我们在项目当中需要再去创建一个用户,再去给这个用户分配相关权限的话,我们就需要借助于DCL语句,DCL语句就可以创建出数据库的用户,并给这个用户分配对应的权限,来指定这个用户你能够操作的数据库是哪些,你能够操作这个数据库下的哪些表,能够对这些表执行什么样的操作,那通过DCL语句就可以控制了。

重点学习DDL、DML、DQL这三类SQL语句。

对于DCL这一类的SQL语句,其实主要是用来管理数据库的,管理数据库当中的用户,管理数据库的权限,那这类的SQL语句在企业当中主要是数据库管理员也就是dba经常会用到,我们作为Java开发人员,一般很少会用到。

2. 数据库设计 / 操作

下面我们就正式的进入到SQL语句的学习,在学习之前先给大家介绍一下我们要开发一个项目,整个开发流程是什么样的,以及在流程当中哪些环节会涉及到数据库。

2.1 项目开发流程

需求文档:

  • 在我们开发一个项目或者项目当中的某个模块之前,会先会拿到产品经理给我们提供的页面原型及需求文档。

 设计:

  • 拿到产品原型和需求文档之后,我们首先要做的不是编码,而是要先进行项目的设计,其中就包括概要设计、详细设计、接口设计、数据库设计等等。

  • 数据库设计根据产品原型以及需求文档,要分析各个模块涉及到的表结构以及表结构之间的关系,以及表结构的详细信息。最终我们需要将数据库以及数据库当中的表结构设计并创建出来。

开发/测试:

  • 参照页面原型和需求进行编码,实现业务功能。在这个过程当中,我们就需要来操作设计出来的数据库表结构,来完成业务的增删改查操作等。

部署上线:

  • 在项目的功能开发测试完成之后,项目就可以上线运行了,后期如果项目遇到性能瓶颈,还需要对项目进行优化。优化很重要的一个部分就是数据库的优化,包括数据库当中索引的建立、SQL 的优化、分库分表等操作。

在上述的流程当中,针对于数据库来说,主要包括三个阶段:

  1. 数据库设计阶段

            参照页面原型以及需求文档设计数据库表结构
  2. 数据库操作阶段

            根据业务功能的实现,编写SQL语句对数据表中的数据进行增删改查操作
  3. 数据库优化阶段

            通过数据库的优化来提高数据库的访问性能。优化手段:索引、SQL优化、分库分表等

接下来我们就先来学习第一部分数据库的设计,而数据库的设计就是来定义数据库,定义表结构以及表中的字段。

2.2 数据库操作 / 设计-DDL

讲解DDL当中关于数据库操作的SQL语句

我们在进行数据库设计,需要使用到刚才所介绍SQL分类中的DDL语句。

DDL英文全称是Data Definition Language(数据定义语言),用来定义数据库对象(数据库、表),包括定义数据库,定义表结构。

第一个部分,先来讲解数据库的常见操作

第二个部分,再来讲解表结构的常见操作

DDL中数据库的常见操作:查询、创建、切换 / 使用、删除。

注意:创建数据库时,在MySQL当中数据库的名字是不允许重复的。

2.2.1 查询数据库

查询所有数据库: show databases;

命令行中执行效果如下:

  • 第一个是我们之前创建的数据库,下面的四个是我们安装完MySQL之后自带的数据库,是系统数据库,我们不要去操作它。

假如我们使用了一段时间之后,我这里已经不知道我到底在操作哪个数据库了,那这个时候我们就可以查看一下当前正在操作的数据库。 

查询当前数据库:select database();

  • 我们要操作某一个数据库,必须要切换到对应的数据库中。 
  • 通过指令:select  database() ,就可以查询到当前所处的数据库 ,select dababase后面这对小括号这是MySQL当中的函数的调用语法,其实类似于Java当中的方法。

 2.2.2 创建数据库

语法:创建数据库:create  database [ if  not  exists ]   数据库名 ; -- 不存在我再新建 / 添加

案例: 创建一个db01数据库:create database db01;

报错了,提示:不能创建db01数据库   数据库已存在

注意:在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。

           在MySQL当中数据库的名字是不允许重复的。

  • 可以使用if not exists来避免这个问题
-- 数据库不存在,则创建该数据库;如果存在则不创建
create database if not extists itcast; 

换一个名字,创建db02,创建db02可以复用前面的这一条指令,可以按上下箭头来切换历史指令

,切换出来之后在这条指令的基础上改一下即可。

  • 出现OK,说明数据库创建成功!!!

此时,再查询一下:

 

 注:在create database后面可以加上一个可选项,这个可选项叫做if not exists,我们加上这么一          个可选项,就代表这个数据库不存在我再创建,如果数据库存在我不创建,我也不会报错,            不会执行任何操作。

 语法:创建数据库:create  database [ if  not  exists ]   数据库名 ;

演示:数据库db02已经存在,按照上述语法再次创建数据库db02,回车之后没有报错。

2.2.3 切换 / 使用数据库

语法:use  数据库名 ;

我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则不能操作。

比如,我要使用db01这个数据库:

指的就是我们切换数据库成功了!!! 

假如我们使用了一段时间之后,我这里已经不知道我到底在操作哪个数据库了,那这个时候我们就可以查看一下当前正在操作的数据库。 

查询当前数据库:select database();

  • 我们要操作某一个数据库,必须要切换到对应的数据库中。 
  • 通过指令:select  database() ,就可以查询到当前所处的数据库 ,select dababase后面这对小括号这是MySQL当中的函数的调用语法,其实类似于Java当中的方法。

我们可以看到当前正在操作的数据库是db02

2.2.4 删除数据库

语法:drop  database [ if exists ]   数据库名 ; -- itcast数据库存在时删除 存在我再删除

  • 如果删除一个不存在的数据库,将会报错。
  • 可以加上参数 if exists ,如果数据库存在,再执行删除,否则不执行删除。
  • 如果不存在,不执行任何操作。

案例:删除db02数据库

 删除db03数据库,db03数据库不存在,直接删除会报错:

 注意事项:

上述语法中的database,也可以替换成 schema。如:create schema  db01;

在我们日常开发当中,基本上用的都是database,因为database见名知意,翻译过来就是数据库

  • 如:create schema db01;

  • 如:show schemas;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/489963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SPSS如何进行对应分析之案例实训?

文章目录 0.引言1.对应分析2.多重对应分析 0.引言 因科研等多场景需要进行绘图处理,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结,本文对对应分析进行阐述。 1.对应分析 &#…

混合策略改进的金枪鱼群优化算法(HTSO)-附代码

混合策略改进的金枪鱼群优化算法(HTSO) 文章目录 混合策略改进的金枪鱼群优化算法(HTSO)1.金枪鱼群优化算法2. 改进金枪鱼群优化算法2.1 Circle混沌映射初始化种群Circle2.2 Levy flight改进螺旋式觅食 3.实验结果4.参考文献5.Matlab代码6.Python代码 摘要:针对金枪…

操作系统考试复习——第三章 进程调度和实时调度

进程调度的方式分为:抢占式和非抢占式 采用非抢占式时,一旦把处理机分配给某进程后,就让他一直运行下去,决不会因为时钟中断或其他任何原因去抢占当前正在运行进程的处理机。直至该进程完成或因为某件事情堵塞,才把处…

MMediting1.X进行视频超分训练和测试(BasicVsr++)

因为MMediting更新了版本,整体的变化比较大,导致之前的一些介绍操作的帖子不太适合新手入门,这里以作者自己对BasicVsr模型进行测试和训练的过程,写一下具体的操作过程。 (1)找到模型     首先在config…

JavaScript判断是否为NaN

(旅行是最劳顿,最麻烦,叫人本相必现的时候。经过长期苦旅行而彼此不讨厌的人,才可以结交作朋友。——钱钟书) 为什么NaN在js值得一提 相信你在实际开发中,经常遇到一下场景 const pasNumber parseInt(un…

财报解读:照明行业景气上行,欧普照明已步入增长“快车道”

2023年,随着文旅景观照明复苏,教室照明市场蓬勃发展,双碳战略下照明数字化系统加速建设,照明企业迎来行业曙光。近日,A股绿色照明龙头企业欧普照明股份有限公司(下称“欧普照明”,股票代码60351…

刷题记录˃ʍ˂

一、1033. 移动石子直到连续 思路 这道题是一道数学题,它一共分为三种可能 第一种可能为三个石子本来就是连续的时候 第二种可能为最少步数为1的时候,相邻石子不能大于一格 第三种可能为最少步数为2的时候,这时相邻石子大于一格 那么第二…

华为MPLS跨域C1方式RR场景(数据经过RR)实验配置

目录 配置BGP邻居的建立 配置MPLS LDP 配置RR之间的MP-BGP邻居 根据图配置接口的IP地址和IGP协议 配置BGP邻居的建立 PE1和RR1建立IBGP邻居、RR1和ASBR1建立IBGP邻居(RR1作为反射器) PE1和RR1建立MP-IBGP邻居(RR1传给PE1的Vpnv4路由要求更…

2023 hnust 大三下 人工智能导论课程 期中考试复习笔记

前言 ★大概率考✦个人推测考点※补充内容没有完全覆盖“人工智能导论复习2023.pdf”的重点致谢:hwl、lyf、lqx 题型 问答:5*10分综合:15分设计:25分开放题/论述题:10分 第1章 绪论 人工智能的定义 智能 思考与…

Android ADB安装apk失败:INSTALL_FAILED_TEST_ONLY

droid ADB安装apk失败:INSTALL_FAILED_TEST_ONLY 解决: 1、一种是在代码里面加, 在gradle.properties配置文件加入属性,把testOnly设置为false Android安装apk失败:The application could not be installed: INSTALL_FAILED_TES…

Java内存模型之JMM

计算机硬件存储系统 因为有这么多级的缓存(cpu和物理主内存的速度不一致) CPU的运行并不是直接操作内存而是把内存里边的数据读取到缓存,而内存的读和写操作的时候就会造成不一致的问题 JVM规范中试图定义一种Java的内存模型(ja…

【算法与数据结构】递归函数设计技巧

数学归纳法 step1: 验证P(1)成立step2: 证明如果P(k)成立,那么P(k1)也成立step3: 联合step1和step2,证明由P(1)->P(n)成立 例1: 证明: 1 3 . . . ( 2 n − 1 ) n 2 13...(2n-1) n^2 13...(2n−1)n2 证明P(1)成立&#…

Midjourney之logo设计(建议收藏)

目录 宠物诊所的logo设计 常见的Logo类型 图形logo: 字母LOGO APP LOGO 进阶技巧 设置艺术家风格 去掉不需要的元素 ChatGPT Midjourney设计logo 聊天(国产):文心一言通义千问 绘图(国产) UI设计 ChatGP…

LangChain入门(四)-构建本地知识库问答机器人

在这个例子中,我们会介绍如何从我们本地读取多个文档构建知识库,并且使用 Openai API 在知识库中进行搜索并给出答案。 目录 一、安装向量数据库chromadb和tiktoken 二、使用案例 三、embeddings持久化 四、在线的向量数据库Pinecone 一、安装向量数…

Maya云渲染怎么操作?看这一篇就够了

Autodesk Maya 是一款3D动画和视觉效果软件,拥有强大的角色建模、绑定、动画和模拟工具集,与Maya兼容的渲染器包括 Arnold(默认渲染器)、iRay、Maxwell、ProRender、Octane、Redshift、V-Ray、RenderMan 等。 与 Autodesk 的所有产…

异常排查 | 有关页面部署Tomcat造成的端口冲突问题

今日在写Servlet的时候,将网页部署到tomcat时,出现了如下错误👇 严重 [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-8080]]一开始其实还没有发现这个地方出了问题&…

安装适用于Linux的Windows11子系统(WSL2)

1. 主板BIOS开启虚拟化 开启虚拟化需要在BIOS中进行设置,进入主板BIOS→找到虚拟化设置→开启。 2. 检验是否开启虚拟化 打开Windows命令行,并运行 systeminfo固件中已启用虚拟化为是,代表主板BIOS已经开启虚拟化。 3. 启用Windows功能…

操作系统——内存管理

0.关注博主有更多知识 操作系统入门知识合集 目录 7.1内存管理功能 思考题: 7.2物理内存管理 7.2.1分区内存管理 思考题: 7.2.2分区放置策略 7.2.3内存覆盖技术 7.2.4内存交换技术 7.2.5内存碎片 7.3虚拟内存管理 7.3.1页式虚拟存储管理 思…

安全服务体系建设主体内容

安全服务体系建设总共10类工作内容,每类分若干咨询方案或技术实施方案,同时也是一个长期建设与服务的工作,这些工作都是依据《网络安全等级保护基本要求》、《网络安全等级保护安全设计技术要求》《网络安全等级保护定级指南》。关于如何定级在这篇 等保定级报告模版_luozho…

STM32F4_USMART调试组件

目录 1. USMART是什么? 2. USMART的特点 3. USMART实现流程 4. USMART组件 5. 在usmart_config.c中添加想要被USMART调用的函数 6. 实验程序 6.1 main.c 6.2 usmart.c 6.3 usmart.h 7. USMART调试的优越性说明 1. USMART是什么? USMART 是 AL…