MySQL基础入门【mysql初识 | 数据库操作 | 表操作 | sql数据类型】

 博客主页:花果山~程序猿-CSDN博客

文章分栏:Linux_花果山~程序猿的博客-CSDN博客

关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!

 

目录

一,为什么会有数据库?

二,服务器,数据库,表的关系

三,Mysql架构

四,数据库的操作

1.数据库创建

校验规则对数据检索的影响

2.数据库的修改

3.数据库的备份与恢复

备份操作(退出mysql)

恢复操作(进入mysql)

数据库用户连接情况

五,表的操作

1.创建表

删除表

2.详细查看表结构

3.修改表结构

修改表名 

增加列

修改列

删除列

修改列名

六,mysql 数据类型

1. bit——位类型

2. float & decrimal

3.char  & varchar

4. 日期类型

5. enum & set

enum & set的索引策略


嗨!收到一张超美的风景图,愿你每天都能顺心!

版本信息:centos7.6,mysql57 

一,为什么会有数据库?

        想我们电脑上的普通文件保存数据有以下几个缺点 安全性问题 ,不利于数据查询和管理 ,不利于存储海量数据 ,控制不方便,程序员如果想要自己控制文档就需要每个程序员自己进行第二次开发,这无疑是令人恼火的,于是乎数据库工具的诞生就解决了这一个难题。
        
常见的数据库工具: SQL Sever,SQLite(嵌入式),H2(java开发的嵌入式类库),Oracle(大型复杂项目), MySql(广泛使用)。

        

二,服务器,数据库,表的关系

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库, 一般开发人员会针对每一个应用创建一个数据库。
为保存应用中实体的数据,一般会在数据库中创建多个表(游戏里的设置信息等的),以保存程序中实体的数据。
数据库服务器、数据库和表的关系如下:

使用案例:

首先我们先在root下进入mysql客户端

mysql -h 127.0.0.1 -P 3306 -u root -p  #前面mysql安装设置了免密,直接登

(-h : 主机名,这里是同一台主机当然是本地环回;

   -P:端口号

   -u: 用户名

   -p: 密码,由于咱们已经免密了,可以直接回车进入) 

首先我们跟这下面的示例,大致的走一下基本的流程,后面我们再深入学习。 

三,Mysql架构

在学习mysql使用前,我们先拉高眼界,以全局视角来看mysql的架构。MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行。
下面是Mysql的基本架构

 查看全部引擎:

show engines \G  #\G  显示简化

常见的SQL语句命令

  • DDLdata definition language数据定义语言,用来维护存储数据的结构,代表指令: create, drop, alter(就是对数据库的操作(文件夹的操作)
  • DMLdata manipulation language数据操纵语言,用来对数据进行操作,代表指令: insertdeleteupdate(对表的操作增删,更新,DML中又单独分了一个DQL,数据查询语言,代表指令: select(对表的查
  • DCLData Control Language数据控制语言,主要负责权限管理和事务,代表指令: grantrevokecommit。

四,数据库的操作

首先我们得了解两个编码集概念:

  • 编码集:用于数据存储与读取,同一个数据库编码集得统一。
  • 校验集:用于数据里面的比较,同时编码集与校验集也要标准对应。

首先,我们先查看数据库支持的编码集(字符集)及校验集:

show charset;
show collation;

查看默认的字符集,校验集:

show variables like 'character_set_database';
show variables like 'collation_database';

我们会发现默认就是utf8,原因是:我们在安装mysql时,对mysqld进行了文件配置。

1.数据库创建

create   database [if not exists]  data_name [charset=...  collate ...]

括号内的表示可选内容:如果存在同名数据库,则不创建;如果不显示表示编码集,校验集,则使用默认集

例子:

校验规则对数据检索的影响

首先就是是否区分大小写,下面以utf8为例。

数据库删除:
drop   database   data_name; 

数据将被完全删除 

2.数据库的修改

通过这个方法,可以修改已存在数据库的编码集 

alter database data_name [charset=... collate=...]

3.数据库的备份与恢复

备份,虽然本质上是拷贝一份,但我们还是不推荐这样奇怪的操作。

备份操作(退出mysql)

mysqldump -P3306 -u root -p 密码 -B 数据库1 数据库2 > 数据库备份存储的文件路径

其他细节,仅备份表,或多个表:

 mysqldump -u root -p 数据库名 表名1 表名2 > 备份路径

恢复操作(进入mysql)

 source  备份路径;

本质上就是将曾经数据库的操作都执行一遍。 

数据库用户连接情况

show processlist;

五,表的操作

1.创建表

语法: 

create table 表名(内容1 comment '描述内容1',内容2 comment '描述内容2')[charset=... collate=... engine=...]

不同的存储引擎的选择影响着在磁盘中文件数量,以InnoDBMyISAM为例,如下:

删除表

drop  table  表名;

2.详细查看表结构

首先是进入一个数据库,语法:

desc   表名;

或者使用更详细查看表信息。

show create table 表名 \G;

(注:\G 用来简化无用信息)

3.修改表结构

修改表名 

语法: 

alter table 表名 rename  新表名;

增加列

语法: 

alter table student add address varchar(100) comment'链接' after age;

 

修改列

alter table student  modify name varchar(20);

可以修改,列的描述信息。

删除列

alter table student drop geader;

这样我们就删除了列‘geader’,表中的geader列全部数据将被删除。

修改列名

alter table student change id id varchar(64) comment'学号';

六,mysql 数据类型

需要注意的是,相比于其他编程语言,超出类型范围,可能会进行数据截断,但mysql中的数据类型,为保证数据正确性,不允许超出类型范围,这样以来插入到数据库中的数据是原始输入。

mysql选取数据类型的思想:由于mysql未来将会用于存储大量信息,数据类型不能太小,也不能太大,选择合适的数据类型大小是值得我们考虑

下面我就跳几个特殊的类型进行讲解:

1. bit——位类型

语法:

bit(num)    num : 比特位数 

2. float & decrimal

语法:

float( num1, num2)  或者 decrimal(num1, num2 )   num1 : 全部的位数,num2:小数点后的位数。 

事实上float也存在精度丢失的情况,而这时decrimal类型将被我们认识:

3.char  & varchar

char语法:

char(L): 固定长度字符串 L 是可以存储的长度,单位为字符,最大长度值可以为 255个字符

(注:中文在utf8编码下,一个字符占3字节,在gbk下是 2字节每个字符) 

 varchar语法:

varchar(L): 可变长度字符串, L 表示字符长度,最大长度 65535 个字节。

在sql语句中,char类型的分配字节是按照,你要多少个字符就给你多少个字符的字节(要多少给多少);varchar类型,则是用多少给多少L是最大字符数。但varchar也需要付出些代价,一般varchar会花费1~3字节来表示当前行varchar占用量,因此最大字节长度为65532(utf8最大字符数:21844,这里提一句,由于mysql是按行读取,一行的最大字节数也是65535,超过影响varchar创建,也影响后面类型创建)

两者比较:

  • char占用字节数固定,效率高。
  • varchar占用字节数较少,但维护成本高。
  • char更适合长度变化小的数据,比如身份证号,手机号等。
  • varchar适合长度变化大的数据,如网络地址。

4. 日期类型

常用的日期有如下三个:
  • date :日期 'yyyy-mm-dd' ,占用三字节。
  • datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 9999 ,占用八字节。date,与datetime就是一个固定时间,程序员不修改则不变化。
timestamp :时间戳,从 1970 年开始的 yyyy - mm - dd HH:ii:ss 格式和 datetime 完全一致,占用四字节,但 如果当前行的数据被修改,timestamp列数据将自动更新

5. enum & set

        C语言中我们也学过枚举,mysql中的枚举,也是为数据内容进行约束,就像填问卷一样,有答案限定一样

enum语法:

nume_   enum(‘内容一’,‘内容二’, ‘内容三’...)

set语法:

 nume_  set('内容一',‘内容二’, ‘内容三’...)

 

两者的区别,通过实验来展示:

set如果使用数字,是通过位来标记是否数据,如下:

enum & set的索引策略

   find_in_set(sub,str_list) , sub: 目标,str_list:目标可能存在的范围。找到则返回下标,反之返回0。

语法使用,我们通过下面情况来举例:

 情况一:简单的绝对查找

(注:where我们可以理解为mysql的判断语句,类似于if)

 

情况二:在范围内查找一个存在

如果我们需要对判断一些数据是否存在,我们就需要了解and,类似于语言中 &&,“与”,如下:

ok,这样子,我们就可以在enom,set中任意的索引我们需要的数据了。

 

结语

   本小节就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区评论,如果给小伙伴带来一些收获,请动动你发财的小手点个免费的赞,你的点赞和关注永远是博主创作的动力源泉。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Viso画图】Viso导出与图形适配的pdf

step1:选中开发工具点击shapeSheet,选中页 step2:进入页面参数设置窗口,将下面框选的参数设为0,enter后保存 目前效果: step3:选中设计->大小,选择适应页面大小或者自己根据图片调整 目前效果: step4: 以…

[Fork.dev] 增加用idea打开

用Fork做git管理工具时, 只有vscode 和sublime 等. 没有idea的. 今天研究了下如何操作.记录一下 点击 Action 文本框进行编辑 Path填写idea的执行位置. Parameters: 填写 ${repo:path} 代表用idea打开的文件夹路径为当前. 最终显示效果

ConfigError: Main class ‘XXX’ doesn’t exist in the workspace.Vscode

前言 唉,又是被Vscode折磨的一个晚上,本想好好写点代码的,却被一个个小问题搞得团团转,服了。 错误原因分析 正如标题所示,这是扩展“Java->debug”抛出的一个错误,意思是这个“XXX”主类不在工作区内…

数据结构与算法学习笔记十---链队列的表示和实现(C语言)

目录 前言 1.什么是链队 2.链队的表示和实现 1.定义 2.初始化 3.销毁 4.清空 5.空队列 6.队列长度 7.获取队头 8.入队 9.出队 10.遍历队列 11.完整代码 前言 本篇博客介绍链栈队列的表示和实现。 1.什么是链队 链队是采用链式存储结构实现的队列。通常链队使用单…

RAG 面向 LLM: 基于检索增强的大语言模型调研

摘要 作为 AI 领域最先进的技术之一,检索增强生成(RAG)技术可以提供可靠和最新的外部知识,为众多任务提供巨大的便利。特别是在 AI 生成内容(AIGC)时代,RAG 中检索强大的提供额外知识的能力使得检索增强生成能够辅助现有生成式 AI 生产高质量输出。最近,大语言模型(LLM)在语言…

如何将3DMax中制作的特效渲染为AVI格式视频?---模大狮模型网

在3D设计中,制作出精美的特效是吸引眼球的关键之一。然而,仅仅制作特效还不够,将其渲染为视频并分享给观众才能展现出其真正的魅力。本文将为您提供一份完整的指南,教您如何在3ds Max中将制作的特效渲染为AVI格式视频,…

【iOS】——RunLoop学习

文章目录 一、RunLoop简介1.RunLoop介绍2.RunLoop功能3.RunLoop使用场景4.Run Loop 与线程5.RunLoop源代码和模型图 二、RunLoop Mode1.CFRunLoopModeRef2.RunLoop Mode的五种模式3.RunLoop Mode使用 三、RunLoop Source1.CFRunLoopSourceRefsourc0:source1: 2.CFRu…

EEL中 python端的函数名是如何传递给js端的

python端的函数名是如何传递给js端的 核心步骤:将函数名列表注入到动态生成的 eel.js 中,这样前端一开始引用的eel.js本身已经包含有py_function的函数名列表了。你打开开发者工具看看浏览器中的 eel.js文件源代码就知道了。 具体实现: # 读…

如何将一个流固耦合的爆炸案例修改成一个没有固体的爆炸案例(类似于blastfoam的twochargeDetonation案例,可以重点模仿这个来)

t技巧总结:~/myapp/OpenFOAM-7/blastfoam_2_0/tutorials/twoChargeDetonation案例对比,发现确实这个案例也没有固体文件夹和precice-config文件夹,只需要用到openfoam7与blastfoam2.0.0。(这个案例可以当做一个很好的爆炸案例的入…

Spring MVC 介绍及其使用(详细)

目录 一.什么是SpringMVC呢? 1.1MVC的介绍 1.2SpringMVC和MVC的关系 二.SpringMVC的学习 第一步:创建项目 第二步,SpringMVC的连接 第三步,Spring MVC获取参数 第四步 SpringMVC的输出 总结 特点和优势 核心组件 一.什…

ue引擎游戏开发笔记(37)——实现造成伤害

1.需求分析: 在游戏中已经能够射击,并且能得到实际的落点反馈,但本质上这种射击没有任何实际数值伤害,为射击添加实际的子弹伤害数值。 2.操作实现: 1.思路:ue本身函数FPointDamageEvent就可以解决&#x…

谷歌邮箱2024最新注册教程

大家好,我是蓝胖子,今天教大家如何注册谷歌邮箱 谷歌邮箱的注册后面的用途会经常用得到 首先,需要魔法自行解决 第一步:打开谷歌官网 www.google.com 确保谷歌官网能正常打开 第二步:创建账号 接下来可能会遇到这…

鸿蒙原生应用数量激增20倍,鸿蒙生态“一路狂奔”!

过去几个月,在各地政府和千行百业伙伴的全面支持下,鸿蒙生态建设正在以前所未有的速度和规模蓬勃发展。 鸿蒙生态跑出“加速度”,再迎里程碑进展 从1月华为宣布首批200多家应用厂商加速开发鸿蒙原生应用以来,到3月底已有超4000款…

鸿蒙ArkUI开发:常用布局【相对布局】

相对布局(RelativeContainer) 相对布局可以让子元素指定兄弟元素或父容器作为锚点,基于锚点做位置布局必须为RelativeContainer及其子元素设置ID,用于指定锚点信息。未设置ID的子元素不会显示RelativeContainer ID为“__containe…

nginx配置域名与IP访问服务冲突问题

在最近的一次开发中遇到一个问题,我在云服务器上部署了两个服务,A服务和B服务, A服务在服务器中用的端口是80端口,所以我在浏览器访问的地址就是 B服务在服务器中用的是9818端口,所以我在浏览器访问的是 现在我给B服务…

【综述】人工智能、机器学习、深度学习

文章目录 前言 概念 算法 训练 性能 应用 参考资料 前言 见《初试人工智能》 概念 人工智能系统(artifieial intelligence system),针对人类定义的给定目标,产生诸如内容、预测、推荐或决策等输出的一类工程系统。该工程系…

黑马程序员鸿蒙HarmonyOS端云一体化开发【13-15】

前置知识:arkts 一套开发工具,一套语言,搞定客户端和云端两个的编写。其中application就是客户端,cloudProgram就是云端。 开发人员->全栈开发工程师,降低了开发成本,且提供了很多现成的云服务&#xf…

如何使用AI总结超长PDF文件?NoteGPT做到了!

NoteGPT(PDF Summary with AI - NoteGPT)是我在做一个产品,其中一个功能就是如题,总结超长的PDF文件。 这篇文章从业务和技术的角度,来给大家分享下,我是如何实现的。 为什么要做总结总结超长PDF文件&…

npm install 卡在reify:rxjs: timing reifyNode的解决办法

今天要逆向跑一个electron,但是npm install一直卡在 reify:element-plus: timing reifyNode:node_modules/lodash Completed in 6664ms这里一动不动,一番研究之后发现可能跟用的镜像有关系,我原本是官方镜像,总感觉第三方镜像有一…

vuex的基本认知

目录 一、什么是vuex 二、vuex的应用场景 三、vuex的优势 一、什么是vuex Vuex是一个vue的状态管理工具,状态就是数据。 进一步解释:vuex是一个插件,可以帮助我们管理vue通用的数据(多组件共享的数据) 二、vuex的…