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

news2024/11/28 10:42:00

 博客主页:花果山~程序猿-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中任意的索引我们需要的数据了。

 

结语

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

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

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

相关文章

Vue3 动态引入图片: require is not defined报错

问题&#xff1a;在 Vue3 项目中&#xff0c;使用 require 引入图片&#xff0c;报错 require is not defined 原因&#xff1a; Vue3 使用的是 vite&#xff0c;而 require 是 Webpack 的方法。 官网说明&#xff1a; 解决代码&#xff1a; <template><div v-fo…

k8s coredns配置

1.coredns可根据集群具体数量修改pod数&#xff0c;官方推荐比例为5/1&#xff0c;即有15台服务器最好是3个pod。 2.coredns会继承pod所在主机的dns解析,修改了主机的dns解析之后&#xff0c;coredns有一段时间的缓存&#xff0c;重启coredns才会在集群内部立刻生效该解析。 …

Linux本地部署Nightingale夜莺监控并实现远程访问提高运维效率

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C/C++实现汉诺塔游戏和详细解

C/C实现汉诺塔游戏和详细解析 需要详细代码可联系QQ&#xff1a;3324729792 引言 汉诺塔问题是一个经典的递归问题&#xff0c;起源于一个传说中的印度寺庙。在这个问题中&#xff0c;我们需要将所有的圆盘从一个柱子移动到另一个柱子上&#xff0c;且在移动过程中&#xff…

OpenAI放大招:不是GPT-5和搜索引擎,或推AI助理?

近日&#xff0c;关于 ChatGPT 的开发公司 OpenAI 将推出与谷歌搜索竞争的产品的传闻甚嚣尘上。有报道指出&#xff0c;OpenAI 计划增强 ChatGPT 的功能&#xff0c;并进军搜索引擎市场&#xff0c;新产品甚至可能在 5 月 13 日谷歌 I/O 大会的前一天发布。 然而&#xff0c;Op…

React 第三十五章 Fiber 双缓冲

我们可以从三个维度来理解 Fiber&#xff1a; 是一种架构&#xff0c;称之为 Fiber 架构是一种数据类型动态的工作单元 Fiber 架构 在 React v16之前&#xff0c;使用的是 Stack Reconciler&#xff0c;因此那个时候的 React 架构被称之为 Stack 架构。从 React v16 开始&am…

01-02-2

1、typedef的使用 a.语法 typedef 原名 别名&#xff1b;。 ​ typedef struct student {int num;char name[20];char sex; }stu,*pstu;//stu相当于struct student这个类型&#xff0c;*pstu相当于struct student * 别名的理解方法&#xff1a;若是字母前面有符号&#xff0…

uniapp编译H5解决ios的border-radius失效问题

1.解决方案 .card-itemA {width: 650rpx;height: 326rpx;box-shadow: 0rpx 0rpx 30rpx 14rpx rgba(236, 235, 236, 0.25);background: linear-gradient(180deg, #FFFFFF 0%, rgba(255, 255, 255, 0) 100%);border-radius: 60rpx;overflow: hidden;// 兼容ios的圆角问题transfor…

python实现星号打印出金字塔

#编程实现下列图形的打印 a input() for i in range(int(a)//21): num * * ((i1)*2-1) print(num.center(int(a), )) 编译后通过。输入20后得到下面的星号金字塔

Pikachu 靶场 RCE 通关解析

前言 Pikachu靶场是一种常见的网络安全训练平台&#xff0c;用于模拟真实世界中的网络攻击和防御场景。它提供了一系列的实验室环境&#xff0c;供安全专业人士、学生和爱好者练习和测试他们的技能。 Pikachu靶场的目的是帮助用户了解和掌握网络攻击的原理和技术&#xff0c;…

31万奖金池等你挑战!IJCAI 2024 第九届“信也科技杯”全球AI算法大赛正式开赛!聚焦AI尖端赛题!

赛事概况 随着语音合成技术的不断进步,合成语音与真实语音之间的界限变得模糊,这不仅对数据安全构成威胁,也对科技伦理提出了新的要求。 第九届“信也科技杯”全球AI算法大赛聚焦于语音深度鉴伪识别领域,旨在激发全球算法爱好者和专家的创新潜力,共同应对由人工智能技术发展带来…

Bean的生命周期与循环依赖

如有不对的地方&#xff0c;还请大佬指正 Bean生命周期 扫描类 得到 BeanDefinition(包含bean的class等属性值) 后在BeanFactoryPostProcessor对bean实例化之前对Bean的元数据进行操作&#xff0c;修改Bean的属性值、添加自定义的BeanDefinition 实例化非懒加载单例bean1. …

Android 系统省电软件分析

1、硬件耗电 主要有&#xff1a; 1、屏幕 2、CPU 3、WLAN 4、感应器 5、GPS(目前我们没有) 电量其实是目前手持设备最宝贵的资源之一&#xff0c;大多数设备都需要不断的充电来维持继续使用。不幸的是&#xff0c;对于开发者来说&#xff0c;电量优化是他们最后才会考虑的的事情…

【Linux】自动化构建工具make/Makefile和git介绍

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/qinjh_/category_12625432.html 目录 前言 Linux项目自动化构建工具-make/Makefile 举例 .PHONY 常见符号 依赖关系…

如何把root账号的文件修改为tank账号

linux系统 以当前用户命令创建的目录都是root的用户并且是只读的&#xff1a; 用优盘拷贝的文件及文件夹的权限是&#xff1a; 解决方案是&#xff1a;把root账号的文件修改为tank账号 在Linux系统中&#xff0c;如果您需要将属于root用户的文件或目录的所有权更改到另一个用…

【数据库】docker搭建mysql8一主两从节点,配置proxysql读写分离

docker搭建mysql8一主两从节点&#xff0c;配置proxysql读写分离 一、docker 搭建 mysql8 一主两从节点1.1 相关配置文件与docker启动1.2 半同步复制1.3 主从同步异常处理 二、mysql 中间件 ProxySql 配置读写分离2.1 在mysql服务里创建给proxySQL访问的用户2.2 安装ProxySql及…

Flask 通过SQLAlchemy连接mySQL实现一个实用的用户管理功能

Flask 通过SQLAlchemy连接mySQL实现一个实用的用户管理功能 安装配置 首先确保已经安装如下程序&#xff1a; flask&#xff1a;用于构建web应用程序。flask-sqlalchemy&#xff1a;用于在 Flask 中连接 MySQL 数据库&#xff0c;通过pip install flask-sqlalchemy安装。pym…

2024第二届智慧教育和人类发展国际会议(ICSEHD2024)

2024第二届智慧教育和人类发展国际会议(ICSEHD2024) 会议简介 智慧教育对于提升教育质量、促进教育公平、推动教育现代化和数字化转型、培养创新人才以及推动教育理论的发展都具有重要的意义&#xff0c;对人类发展产生着深远的影响&#xff0c;人类发展是智慧教育的最终目的…

Weblogic 任意文件上传漏洞(CVE-2018-2894)

1 漏洞描述 CVE-2018-2894漏洞存在于Oracle WebLogic Server的Web服务测试页面&#xff08;Web Service Test Page&#xff09;中。这个页面允许用户测试Web服务的功能&#xff0c;但在某些版本中&#xff0c;它包含了一个未经授权的文件上传功能。攻击者可以利用这个漏洞&…

uni-app跨端兼容

1.样式兼容 小程序端不支持*选择器&#xff0c;可以使用&#xff08;view,text&#xff09; 页面视口差异(tabar页、普通页) H5端默认开始scoped 例如骨架屏样式出现问题&#xff0c;需要将之前的样式拷贝到骨架屏中 提示&#xff1a;H5端是单页面应用&#xff0c;scoped隔离…