第一章 数据库操作

news2024/10/5 21:14:20

一、 数据库操作

1.1 创建数据库

  1. 创建数据库是指在数据库系统中划分一块空间,用来存储相应的数据,这是进行表操作的基础,也是数据库管理的基础
  2. 在MySQL中创建数据库之前,可以使用show语句来显示当前已经存在的数据库,具体SQL语句如下
    show databases
    
  3. 创建数据库的SQL语句如下,其中参数database_name代表所要创建的数据库的名称
    create database database_name;
    
  4. 创建数据库之前判断是否已存在,其中参数database_name代表所要创建的数据库的名称
    create database if not exists database_name
    
  5. 创建数据库并指定字符集,其中参数database_name代表所要创建的数据库的名称、UTF8代表字符集
    create database database_name character set utf8
    

1.2 选择数据库

  1. 在操作数据对象之前,首先需要确定是哪一个数据库,即在对数据库操作对象进行操作时,需要先选择一个数据库,语句如下
    use database_name
    
  2. 如果选择一个不存在的数据库,就会出现unkown database 'database_name’错误

1.3 删除数据库

  1. 在删除数据库之前,首先需要确定所需要的数据库对象已经存在,在MySQL中删除数据库使用SQL语句 drop database来实现,语句如下
    drop database datavase_name;
    

二、 什么是存储引擎

  1. MySQL中提到了存储引擎的概念,简而言之,存储引擎就是指表的类型,在具体开发时,为了提高MySQL数据库管理系统的使用效率和灵活性,可以根据实际需要来选择存储引擎,存储引擎指定了表的类型,即如何存储和索引数据、是否支持事务等,同时存储引擎也决定了表在计算机中的存储方式
  2. 用户在选择存储引擎之前,首先需要确定数据库管理系统支持那些存储引擎,在MySQL数据库管理系统中,通过show engines来查看支持的存储引擎,语法如下
    show engines;
    
    在这里插入图片描述
  • engines参数:表示存储引擎的名称
  • Support参数:表示MySQL数据库系统是否支持该存储引擎
  • default参数:系统默认支持的存储引擎
  • Comment参数:表示对存储引擎的评论
  • Transaction参数:表示存储引擎是否支持事务
  • XA参数:表示存储引擎所支持的分布式是否复合XA规范
  • Savepoints参数:表示存储引擎是否支持事务处理的保存点
  1. 还可以通过show variables来查看所支持的存储引擎,具体语句如下
    show variables like 'have%';
    
  2. 创建表时,若没有指定存储引擎,表的存储引擎将为默认存储引擎,查看默认存储引擎,语句如下
    show variables like 'default_storage_engine%'
    
    在这里插入图片描述
  • variable_name参数:表示存储引擎的名字
  • value参数:表示MySQL数据库管理系统是否支持存储引擎

2.1 InnoDB存储引擎

  1. InnoDB是MySQL数据库的一中存储引擎, InnoDB给MySQL的表提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全,MySQL从3.23.34a开始就包含InnoDB存储引擎,InnoDB是MySQL第一个提供外键约束的表引擎,而且InnoDB对事务处理的能力是MySQL的其它存储引擎所无法比拟的。
  2. InnDB存储引擎支持自动增长列auto_increment。自动增长列的值不能为空吗,且值必须唯一,MySQL中规定自动增长列必须为主键,在插入值时,如果自动增长列不输入值,插入的值就为自动增长后的值,如果输入的值为0或空,插入的值也为自动增长后的值,如果插入某个确定的值,且该值在前面没有出现过,就可以直接插入
  3. InnoDB存储引擎支持外键(foreign key,外键所在的表为子表,外键所依赖的表为父表,父表中被子表外键关联的字段必须为主键,当删除、更新父表某条信息时,子表必须有相应的变化
  4. InnoDB存储引擎的优势在于提供了良好的事务管理、崩溃修复能力和并发控制,缺点是读写效率差,占用数据空间相对比较大

2.2 MyISAM

  1. MyISAM存储引擎的表存储成三个文件,文件的名字和表名相同,扩展名包括frm、MYD和MYI,其中,frm为扩展名的文件存储表的结构;MYD为扩展名的文件存储数据,其是MYData的缩写;MYI为扩展名的文件存储的索引,其是MYIndex的缩写
  2. 基于MyISAM存储引擎的表支持三种存储格式,包括静态型、动态型和压缩型。其中,静态型为MyISAM存储引擎的默认存储格式,其字段是固定长度的,动态性包括变长字段,记录的长度是不固定的,压缩型需要使用myisampack工具创建,占用的磁盘空间较小
  3. MyISAM存储引擎的优点在于占用空间小,处理数据块,缺点是不支持事务的完整性和并发性

2.3 MEMORY存储引擎

  1. MEMORY存储引擎是MySQL中的一类特殊的存储引擎,其使用存储在内存中的内容来创建表,而且所有数据都放在内存中, 这些特性都与InnDB存储引擎、MyISAM存储引擎不同
  2. 每个基于MEMORY存储引擎的表实际对应一个磁盘空间,该文件的文件名与表名相同,类型为frm,该文件中只存储表的结构,而其数据文件都存储在内存中,这样有利于对数据的快速处理,提高整个表的处理效率,值得注意的是,服务器需要足够的内存来维持MEMORY存储引擎的表的使用,如果不需要使用就可以释放这些内存,甚至可以删除不需要的表
  3. MEMORY存储引擎默认使用哈希索引,其数据要比使用B型树索引快,如果需要使用B型树索引,就可以在创建索引时选择使用
  4. MEMORY表的大小是受到限制的,表的大小主要取决于两个参数,分别是max_rows和max_heap_table_size。其中max_rows可以在创建表时指定;max_heap_table_size的大小默认为16MB,可以按需要扩大,因此其存在内存中的特性,这类表的处理数据非常快,但是,其数据容易丢失,生命周期短,基于这个缺陷,选择MEMORY存储引擎时需要特别小心

2.4 选择存储引擎

  1. 在具体使用MySQL数据库管理系统时,选择一个合适的存储引擎是一个非常复杂的问题,因为每种存储引擎都有自己的特性,优势和应用场合,所以不能随便选择存储引擎,为了正确的选择存储引擎必须掌握各种存储引擎的特性
  2. 下面从存储引擎的事务安全、存储限制、空间使用、内存使用、插入数据的数据和对外键支持等角度来比较InnDB、MyISAM和MEMORY。
特性InnoDBMyISAMMEMORY
事务安全支持
存储显示64TB
空间使用
内存使用
插入数据的速度
锁机制行锁表锁表锁
对外键的支持支持
数据可压缩支持
批量插入速度
  • INNoDB存储引擎支持事务处理,支持外键,同时支持崩溃修复能力和并发控制,如果对事务的完整性要求比较高,要求实现并发控制,那么选择INNoDB存储引擎有很大的优势,**需要频繁的更新、删除操作的数据库,**也可以选择INNoDB存储引擎,因为这类存储引擎可以实现事务的提交和回滚
  • MyISAM存储引擎出入数据块,空间和内存使用比较低,如果表主要用于插入新记录和读出记录,那么选择MyISAM存储引擎能实现处理的高效率,如果应用的完整性、并发性要求很低,也可以选择MyISAM 存储引擎
  • MEMORY存储引擎的所有数据都在内存中,数据的处理速度快,但安全性不高,如果要很快的读写速度,对数据的安全性要求比较低,就可以选择MEMORY存储引擎,MEMORY存储引擎对表的大小有要求,不能建立太大的表,所有这类数据库使用相对较小的数据库表,
  • 这些选择存储引擎的建议是根据各个存储引擎的不同的特点提出的,并不是绝对的,实际应用中还需要根据实际情况进行分析
  • 在同一个数据库中,不同的表可以使用不同的存储引擎,如果一个表要求较高的事务处理,就可以使用InnoDB存储引擎,如果一个表会被频繁查询,就可以选择MyISAM存储引擎,如果一个用于查询的临时表,就可以选择MEMORY存储引擎

面试题

  1. 如何查看默认存储引擎
  2. 如何选择存储引擎

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

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

相关文章

java基于springboot协同过滤算法的网上图书商城推荐系统m44xq2

开发环境 开发语言:Java 框架:springboot 技术:JSP JDK版本:JDK1.8 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器:谷歌浏览器功能介绍 Spring…

微服务—Redis实用篇-黑马头条项目用户签到功能(使用bitmap实现)与UV统计

微服务—Redis实用篇-黑马头条项目用户签到功能(使用bitmap实现)与UV统计 1、用户签到 1.1、用户签到-BitMap功能演示 我们针对签到功能完全可以通过mysql来完成,比如说以下这张表 用户一次签到,就是一条记录,假如有…

npm 账户的创建、测试、登录

目录 1、账户的创建 2、测试创建的账户 3、通过电子邮件接收一次性密码 3.1 使用一次性密码登录: 3.2 启用双因素身份验证: 3.3 无法访问电子邮件 1、账户的创建 如果您还没有npm用户帐户,您可以创建一个帐户,以便在公共注…

MATLAB 之 二维图形绘制的基本函数和辅助操作

文章目录 一、绘制二维曲线的基本函数1. plot 函数的基本用法2. 含多个输入参数的 plot 函数3. 含选项的 plot 函数4. 双纵坐标函数 plotyy 二、绘制绘制图像的辅助操作1. 图形标注2. 坐标控制3. 图形保持4. 图形窗口的分割 二维图形是将平面坐标上的数据点连接起来的平面图形。…

C++的cout详解

2023年5月20日,周六早上: 我发现我找不到非常详细的cout类的成员函数,只好自己写了。 不定期更新。 cout的继承关系 cout类继承自ostream类,ostream类继承自ios类,ios类继承自ios_base类 cout类拥有的所有成员函数 …

包图的画法

包图 1.包图 1.1概念 包图是UML中用来组织模型元素的模型元素。 可以把包图比作一个存放模型元素的箱子或者是容器,里面可以可以存放各种各样的模型元素。 包图中可以包含的信息主要有:类 构件 用例 结点 活动 状态 等其他的相关的模型元素。 1.2包…

秒杀场景checklist

在面试中经常碰到的问题,列下来备忘。

车载以太网 - SomeIP - 协议用例 - Messages_01

目录 Service Discovery Messages 1、验证Instance ID为0xFFFF时DUT需要返回该Serveice ID包含的所有Instance ID

chatgpt赋能Python-python3去掉空格

Python3去掉空格——让你的代码更整洁高效 在Python3编程中,去掉无用的空格可以使代码更具可读性和高效性。因此,在本文中,我们将介绍如何使用Python3去掉空格,包括字符串中的空格和代码文件中的空格。 字符串中的空格 在Pytho…

学系统集成项目管理工程师(中项)系列23a_信息系统集成及服务管理(上)

1. 提供的专业信息技术咨询服务、系统集成服务、技术支持服务、运行维护服务等工作 2. 信息技术咨询服务 2.1. 信息系统集成及服务的前端环节 2.2. 为企业提供信息化建设规划和解决方案 3. 原因 3.1. 不具备技术实力的系统集成商搅乱信息系统集成及服务市场 3.2. 一些建设…

chatgpt赋能Python-python3快捷键大全

Python3快捷键大全 介绍 Python是一种高级编程语言,广泛应用于科学计算、人工智能、网络编程、Web开发和数据分析等领域。Python具有简洁、易读、易学和可扩展等特点,因此成为了生产力非常高的编程语言之一。Python3是Python语言的最新版本&#xff0c…

印度和巴基斯坦网络优势和劣势的综合研究

由于网络空间在当今世界的重要性日益增加,各国已将网络安全放在首位并开发技能来保护其重要基础设施、数字资产和私人数据。 没有豁免适用于印度和巴基斯坦,这两个拥有动荡历史的核武器邻国。 这项研究深入比较了他们的网络能力,并评估了巴…

基于DBSCAN密度聚类的风电-负荷场景削减方法

​目录 ​ 1 主要内容 基于密度聚类的数据预处理: 场景提取: 算法流程: 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序复现文章《氢能支撑的风-燃气耦合低碳微网容量优化配置研究》第三章内容,实现的是基于DBSCAN…

shiro与Spring Boot 整合

目录 框架整合 创建模块 添加依赖 添加配置文件 添加启动类 ​编辑 登录认证实现 后端接口服务实现 实现前端页面 框架整合 创建模块 添加依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-p…

音视频windows安装ffmpeg6.0并使用vs调试源码笔记

建立在上一步&#xff0c;vs已经能够正常调试qt项目&#xff0c;可以实现&#xff1a; 1&#xff1a;qt可以使用mvsc &#xff08;使用cdb&#xff09;进行调试。 2&#xff1a;vs已经可以加载qt项目&#xff0c;借助vs进行调试。 本文目标&#xff1a;编译ffmpeg库&#xf…

chatgpt赋能Python-python3的内置函数

Python3内置函数大全 Python3是一种高级编程语言&#xff0c;拥有丰富的内置函数库。这些内置函数包括许多核心功能和常用操作。在这篇文章中&#xff0c;我们将介绍一些最常用和最有用的Python3内置函数。 1. print() print()函数用于将输出打印到控制台。它是Python中最常…

chatgpt赋能Python-python3怎么换行

Python3中的换行是许多初学者和经验丰富的工程师们都需要掌握的关键概念之一。在本文中&#xff0c;我们将探讨Python3中如何使用换行&#xff0c;包括介绍和结论。 什么是Python3中的换行&#xff1f; 在Python3中&#xff0c;换行是指将一行代码分成多个部分&#xff0c;以…

数据结构-单调栈1

先介绍一下单调栈是什么 一种特别设计的栈结构&#xff0c;为了解决如下的问题&#xff1a; 给定一个可能含有重复值的数组arr&#xff0c;i位置的数一定存在如下两个信息 1&#xff09;arr[i]的左侧离i最近并且小于(或者大于)arr[i]的数在哪&#xff1f; 2&#xff09;arr[…

【天线专题】史密斯(Smith)圆图

对一个器件进行表征时,所发生的反射大小取决于入射信号“看到的”阻抗。由于任何阻抗都能用实部和虚部(R+jX 或 G+jB )表示,故可以将他们绘制在所谓复阻抗平面的直线网络上,如下图所示。遗憾的是,开路(一种常见的射频阻抗)在实轴上表现为无限大,因而无法表示出来。 …

集合Arrary

目录 ArraryList 引用基本类型 案例1&#xff1a;定义一个集合添加学生姓名年龄 案例2&#xff1a;查看是否存在这个id 案例3&#xff1a;手机 案例4&#xff1a;学生管理系统&#xff08;不完整&#xff09; 集合长度可变&#xff1a;自动扩容集合和数据 长度存储数据类…