MySQL数据库---入门篇

news2024/9/27 9:03:16

文章目录

  • 数据库介绍
    • 什么是数据库?
    • 数据库分类
  • MySQL的结构
    • MySQL客户端和服务器
    • MySQL服务器是如何组织数据的?
  • 数据库操作
    • 显示当前数据库
    • 创建数据库
    • 使用数据库
    • 删除数据库
  • 数据库中常用数据类型
    • 数值类型
    • 字符串类型
    • 日期类型
  • 表的操作
    • 创建表
    • 查看表结构
    • 查看当前数据库有哪些表
    • 删除表

数据库介绍

什么是数据库?

数据库简单来说,就是一个存储数据的软件。

有人可能会说,用文件来存储数据不就可以了吗? 为什么还要专门搞个数据库?

那是因为文件存储数据有几个缺点

  1. 文件的安全性问题;
  2. 文件不利于数据查询和处理;
  3. 文件不利于存储海量数据;
  4. 文件在程序中操作不方便;

为了解决上述问题,专家们就设计出更加利于管理数据的软件—数据库 ,它能更有效的管理数据。数据库还可以提供远程服务,即通过远程连接来使用数据库,因此也被称为数据库服务器。

数据库分类

数据库大体可以分为 关系型数据库 和 非关系型数据库。

  • 关系型数据库:

    是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系数据库就是由一些二维表和他们之间的联系所组成的一个数据组织集合。

    他们都是基于SQL语言操作的,只是内部实现有一些区别,常用的关系型数据库有:

    1.Oracal:甲骨文公司的产品,适合大型项目、适合做复杂的业务逻辑,是世界上最好的数据库,保证了数据有极高的安全性; 但是收费
    2.MySQL:也是甲骨文公司的产品,虽然不像Oracal那样优秀,但是开源免费,所以广受欢迎
    3.SQL Server:微软公司的产品,市场份额较少。

  • 非关系型数据库

    不基于SQL语言实现,以其他的方式来组织数据,如:

    1.基于键值对(Key-Value),如Redis;
    2.基于文档,如Mongodb;
    3.基于列族,如Hbase;
    4.基于图,如Neo4j;

他们两者的区别:
在这里插入图片描述

MySQL的结构

MySQL客户端和服务器

MySQL是一个“客户端-服务器”结构的程序;

客户端:主动给服务器发送数据,这个过程叫做发起“请求”
服务器:处理请求后,向客户端返回数据,这个过程叫做“响应”

咋们安装的MySQL是既带客户端,有带服务器的。

MySQL客户端和MySQL服务器可以在一台主机上,也可以在不同主机上;
在实际工作中更常见的是客户端和服务器不在一台主机上,而我们在学习过程中客户端和服务器是在一台主机上的。

注:

  1. 对于MySQL来说,储存和管理数据都是由MySQL服务器来负责的;
  2. MySQL服务器比MySQL客户端复杂许多,甚至可以认为MySQL服务器是MySQL的本体,大部分时候谈到MySQL,指的就是MySQL服务器。

MySQL服务器是如何组织数据的?

在这里插入图片描述

  1. 一个MySQL服务器可以包含多个数据库,每个数据库都是一个数据集合;
  2. 每个数据库里有很多数据表,用来存放同一类数据;
  3. 每张表里都有很多行,每一行称为“一条记录”;
  4. 每张表里都有很多列,每一列称为“一个字段”

数据库操作

显示当前数据库

show databases;

在这里插入图片描述

注:

  1. show 和 databases 之间 至少有一个空格 末尾要有一个英文分号 “;” 所有SQL语句都是这种格式;
  2. databases 是复数 要加 s
  3. SQL不区分大小写
  4. 右下角的0.00 sec 是什么意思? sec->second 指执行这个操作消耗了0.00秒

创建数据库

create database 数据库名;

在这里插入图片描述

注:

  1. 不能使用create等关键字来作为数据库名、表面、列名;如果实在想用可以用反引号``引起来;
  2. 如果有个SQL语句写到一般不想执行了,使用ctrl+c 来中止;
  3. 在创建数据库时还可以加上 if not exists ,如果数据库存在,就啥事儿没有;如果不存在,才创建;
create database if not exists learning;
  1. 在创建数据库时还可以设置数据库使用的字符集
create database if not exists learning character set utf8mb4;

使用数据库

use 数据库名;

在这里插入图片描述

注: 只有选中某一个数据库之后,才可以执行一些与表相关的操作。

删除数据库

drop database 数据库名;

在这里插入图片描述

注: 数据库删除操作非常危险,数据库一旦删除数据就大概率恢复不回来;如果在工作中错误的删除了某个数据库,影响十分巨大。

数据库中常用数据类型

数值类型

在这里插入图片描述

注:

  1. 数值类型可以指定为无符号(unsigned),表示不取负数。
  2. 1字节 = 8bit
  3. decimal相比与float和double,可以更精确的表示小数。decimal相当于是通过字符串的方式来表示浮点数。优势就是能够精确表示、精确计算;但劣势是计算时消耗的时间更多、消耗的存储空间更大。

字符串类型

在这里插入图片描述

注:
varchar(size),是最常用的类型,因为它可以自己指定使用空间的大小。要注意的是,比如varchar(50),表示这个字段最多存50个字符(注意不是字节)。一个字符在不同的字符编码环境下所占的字节数不同。

日期类型

在这里插入图片描述

注:

  1. timestamp:时间戳,以1970年1月1日0时0分0秒作为基准时刻,计算当前时刻和基准时刻的秒数之差。
  2. timestamp最大表示21亿,现在已经达到16亿了,一旦到达极限,很多代码都会失效,不建议使用,推荐使用datetime

注: 总结常用的数据类型:int、bigint、double、decimal、varchar、datetime

表的操作

创建表

create table 表名(列名 类型,列名 类型....;

在这里插入图片描述

注:

  1. 在表操作之前,必须先选中数据库。
  2. 需要保证在一个数据库里不能有同名的表。
  3. 在创建表的时候表名和列名,不能和SQL关键字冲突,实在要使用时,用``反引号引起来。

查看表结构

desc 表名;

在这里插入图片描述

注:
int(11)不是占11个bit的意思,int就是固定的4个字节占32个bit,11表示的是打印数字的时候显示数字的最大宽度是11位数。11只影响在客户端中的显示,不影响数据的存储和计算。

查看当前数据库有哪些表

show tables;

在这里插入图片描述

注: 此操作的前提得先选择某一个数据库。

删除表

drop table 表名;

在这里插入图片描述

注:

  1. 删表操作也非常危险,比起删库操作危险程度只多不少!
  2. 一个库里通常有很多的表,删库就会把所有的表都删除。如果真的删库了,程序在运行时只要是涉及到该数据库的操作100%会报错,第一时间就能发现问题。但如果是删除了一个库中的一张表,此时程序运行的时候就不一定第一时间报错。
    程序很可能会“带伤运行”,虽然能跑,但是结果是错的!

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

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

相关文章

Linux系统编程:线程

从进程到线程 为什么需要线程?这是因为进程本身存在一定问题: 首先是进程切换时,各类进程资源如寄存器CPU、包括虚拟地址和物理地址要进行映射等等进行上下文切换,这是非常消耗资源和时间的事情,并且实现进程间通信非…

死锁的发生原因和怎么避免

死锁 死锁,简单来说就是两个或者两个以上的线程在执行的过程中,争夺同一个共享资源造成的相互等待的现象。如果没有外部干预,线程会一直阻塞无法往下执行,这些一直处于相互等待资源的线程就称为死锁线程。 死锁产生原因 导致死…

使用强化学习训练 AI 去玩神奇宝贝

使用强化学习训练 AI 去玩神奇宝贝 这两天在逛 Youtube 的时候意外发现了一个非常有趣的视频,十天的时间已经获得了两百多万的点击: 现在已经 360w 点击了 视频的名称就和题目的名称一样:Training AI to Play Pokemon with Reinforcement Le…

Kaggle - LLM Science Exam(四):Platypus2-70B with Wikipedia RAG

文章目录 一、赛事概述1.1 OpenBookQA Dataset1.2 比赛背景1.3 评估方法和代码要求1.4 比赛数据集1.5 优秀notebook1.6 RAG 二、Platypus2-70B with Wikipedia RAG(Version8)2.1 离线安装依赖2.2 导入库并设置常量2.3设置辅助功能2.4 SentenceTransforme…

phpstorm+phpstudy+xdebug快速搭建php调试环境

1、安装phpstudy 让你的项目能正常跑起来,再来进行下一步 2、安装拓展 勾选需要用到的插件,配置好端口 再php.ini最下面复制如下配置,插件的地址按实际路径配置 [Xdebug] zend_extensionD:/phpstudy_pro/Extensions/php/php5.6.9nts/ext/p…

UG\NX二次开发 实现“适合窗口”的功能

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 shsjdj 订阅本专栏,非常感谢。 简介 实现“适合窗口”的功能 效果 代码1 #include "me.hpp"extern DllExport void ufusr(char* param, int* re…

java将list转为逗号隔开字符串,将逗号连接的字符串转成字符数组,​将逗号分隔的字符串转换为List​(Java逗号分隔-字符串与数组相互转换)

一、通过testList.stream().collect(Collectors.joining(",")) &#xff0c;通过流转换&#xff0c;将list转为逗号隔开字符串 List<String> testList new ArrayList<>(); testList.add("test1"); testList.add("test2"); testList…

Jenkins部署失败:JDK ‘jdk1.8.0_381‘ not supported to run Maven projects

Jenkins部署报错&#xff1a;JDK ‘jdk1.8.0_381’ not supported to run Maven projects提示使用的jdk有问题&#xff0c;启动的jdk版本不能满足项目启动。 登录Jenkins管理页面&#xff0c;系统管理——全局工具配置——JDK安装配置满足条件的JDK版本&#xff0c;保存配置&…

Stable-diffusion-webui

AI 画图&#xff0c;之前整理的 AI换脸 CSDN不给通过&#xff0c;说是换脸之类的不给通过&#xff0c;只能自己看了。 GitHub&#xff1a;https://github.com/AUTOMATIC1111/stable-diffusion-webuihttps://github.com/AUTOMATIC1111/stable-diffusion-webui 安装完毕跑起来大概…

k8s-----18、Ingress(对外服务)

Ingress 1、Ingress概念2、 pod和ingress的关系3、 Ingress的工作流程4、 使用步骤5、对外暴露应用实战5.1 创建nginx应用&#xff0c;对外暴露端口使用NodePort5.2 部署ingress controller5.3 创建ingress规则5.4 访问 1、Ingress概念 k8s 对外暴露服务&#xff08;service&am…

uniapp解决iOS切换语言——原生导航栏buttons文字不生效

uniapp 切换语言原生导航栏buttons文字不生效&#xff1f; 文章目录 uniapp 切换语言原生导航栏buttons文字不生效&#xff1f;效果图page.json配置解决方式 效果图 场景&#xff1a;在 tabbar 页面中&#xff0c;配置 原生导航栏 buttons &#xff0c;切换语言时&#xff0c;不…

单片机中的 _nop_() 函数及 us 延时

使用 _nop_() 函数做延时遇到的一些问题 ...... by 矜辰所致前言 最近还是继续做着项目&#xff0c;因为在某 8051 内核芯片上使用到了 I2C 通讯&#xff0c;又需要 _nop_() 函数来实现 us 延时&#xff0c;那么正好来写一篇与_nop_() 函数有关的文章 。 我是矜辰所致&…

给运行中的docker容器挂载目录——筑梦之路

使用场景 对于一个已经运行的容器&#xff0c;如果后续需要新挂载一个目录怎么办&#xff1f;为什么不能重新创建一个容器&#xff1f; 容器内可能安装过很多东西&#xff0c;很费时&#xff0c;如果重新创建一个容器再挂载&#xff0c;还得重新安装很多东西&#xff0c;非常费…

[极客大挑战 2019]Havefun

1.打开链接 2.检查一下源代码 发现一段代码。 3.分析代码 <!-- $cat$_GET[cat]; echo $cat; if($catdog){ echo Syc{cat_cat_cat_cat}; } --> 询问ChatGPT&#xff1a; 从您提供的代码片段来看&#xff0c;这是…

【Python】Windows跟随程序启动和关闭系统代理

前言 在日常使用计算机时&#xff0c;偶尔可能需要配置代理来访问特定的网络资源或进行网络调试。 当在使用mitmproxy 时候&#xff0c; 程序开始前&#xff0c;需要手动打开系统代理&#xff1b;程序解释后&#xff0c;需要手动关闭系统代理。 这些重复性且没有技术含量工作…

CDC实时数据同步

一丶CDC实时数据同步介绍 CDC实时数据同步指的是Change Data Capture&#xff08;数据变更捕获&#xff09;技术在数据同步过程中的应用。CDC技术允许在数据源发生变化时&#xff0c;实时地捕获这些变化&#xff0c;并将其应用到目标系统中&#xff0c;从而保持数据的同步性。…

竞赛 深度学习人脸表情识别算法 - opencv python 机器视觉

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习人脸表情识别系…

ARM 汇编指令 orreq 的使用

orreq 阅读代码时&#xff0c;发现有个【组合指令】 orreq&#xff0c; orr 一般是 OR&#xff0c;也就是或操作&#xff0c;后面加个 eq 表示什么呢&#xff1f; 比如下面的代码&#xff1a;前面一个操作&#xff0c; tst&#xff0c;好像没做实际的操作&#xff0c;可能影响…

使用docker-compose私有化部署 GitLab

在软件开发和协作过程中&#xff0c;版本控制是至关重要的一环。GitLab 是一个功能强大的开源平台&#xff0c;提供了完整的代码管理功能&#xff0c;包括版本控制、问题跟踪以及持续集成等。这使得团队能够更高效地协作开发。前段时间翻阅笔记时&#xff0c;偶然发现了之前公司…

wf-docker集群搭建(未完结)

系列文章目录 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、redis集群二、mysql集群三、nacos集群1. 环境要求2. 拉取镜像2.1. 拉取镜像方式配置集群2.2. 自定义nacos镜像配置集群 3 自定义…