MySQL学习笔记3: MySQL数据库基础

目录

  • 前言
  • 目标
  • [数据库操作(针对database 的操作)](#数据库操作(针对database 的操作))
    • [1. 创建数据库 create database 数据库名;](#1. 创建数据库 create database 数据库名;)
    • [2. 查看数据库 show databases;](#2. 查看数据库 show databases;)
    • [3. 选中数据库 use 数据库名;](#3. 选中数据库 use 数据库名;)
    • [4. 删除数据库 drop database 数据库名;](#4. 删除数据库 drop database 数据库名;)
  • mysql中支持的数据类型
    • [1. 数值类型: NUMERIC(M,D)](#1. 数值类型: NUMERIC(M,D))
    • [2. 字符串类型: VARCHAR(SIZE)](#2. 字符串类型: VARCHAR(SIZE))
  • [数据库的 表 操作(前提都是要选中数据库)](#数据库的 表 操作(前提都是要选中数据库))
    • [1. 创建表 create table 表名(列名 类型 列名 类型 ...);](#1. 创建表 create table 表名(列名 类型 列名 类型 ...);)
    • [2. 查看有哪些表 show tables;](#2. 查看有哪些表 show tables;)
    • [3. 查看表的结构 desc 表名;](#3. 查看表的结构 desc 表名;)
    • [4. 删除表 drop table 表名;](#4. 删除表 drop table 表名;)

前言

操作使用 MySQL 需要用到一种专门的编程语言: SQL (和 Java, C++ 是同类的)

这里需要注意的是:MySQL 是一个数据库软件,SQL 是一个编程语言,操作 MySQL 需要用到 SQL, 操作其他数据库也会用到这个语言

目标

  • 数据库的操作:创建数据库,删除数据库
  • 常用数据类型 (数据类型我只列举了一两个呜呜)
  • 表的操作:创建表,删除表

数据库操作(针对database 的操作)

数据库操作,此处 数据库 指的是 数据集合, 是逻辑上的概念, 一个 mysql 服务器上,有多个这样的数据集合.

1. 创建数据库 create database 数据库名;

create database 数据库名 charset utf8; (create, database 都是SQL 中的关键字,数据库名以字母数字下划线随便起,但是不能和关键字重复,每个语句这里带有英文分号 ; 结尾)

成功案例:

注意:一个服务器上 数据库的名字,是不能重复的

例子:

创建数据库的时候,还可以同时设置一个字符编码,对于数据库存储中文有一定的帮助

因为 mysql 5. 默认的字符集是"拉丁文"无法直接存储中文的,创建数据库的时候手动指定 utf8 的字符集

mysql 这里指定的字符集还有一种写法: utfmb4 这是mysql 专有的,因为 mysql 的utf8不是完全体,有些内容缺失了(比如emoji),

utf8mb4 是完整版本的 utf8

例子:

指令集: 比如不同的编码方式,一个汉字需要用不同的字节数保存, 使用不同的字符集,编码方式也不同.计算机存储的是"二进制数据"编码就是用数字表示字符 (比如ASCII码)

现在比较常见的中文编码方式主要有两种: utf8和gbk码表

  • GBK (Windows 简体中文版,默认使用的字符编码),在 VS 上写 C 语言代码,可以看到一个汉字占 2 个字节,这种表示方式有一定缺陷,2个字节只能表示 6w 多个不同的字符,常用汉字 4k 个,但算上生僻字,总数就 6w 了.
  • utf8 更通用的编码方式, 变长编码,一个utf8的字符,可能是1个字节,2个字节,3个字节,4个字节...utf8能表示全世界任何一种语言文字,utf8如果用来表示汉字,一般就是 3 个字节
  • java 的 char 使用的是另外一种编码,unicode, gbk,utf8,unicode 是三种编码,也就是说,同一个汉字会有三种不同的数字表示,char 使用unicode 是没问题的, 但是String 就无法使用 unicode, Java String 默认也是 utf8
  • utf8 和 unicode 是有关系的,如果现在有一组汉字,想把这一组汉字,通过网络传输/保存到文件中,势必就需要把汉字内部的编码,一个字节一个字节的进行传输/存储,在这种场景下, unicode 就寄了, 因为把多个 unicode 的字符编码的数据,按照字节挨在一起之后,然后就区分不出来,从哪到哪是一个完整的汉字了.utf8 就相当于为了解决 unicode 这个问题而产生的

2. 查看数据库 show databases;

查看当前服务器有哪些数据库?

show databases;

一个数据库服务器,可以有多个数据库,使用 s 复数形式来描述

这里有些数据库是系统自带的,有些是我后来手动创建的

testdemo就是刚才创建出来的新鲜的数据库

test是之前创建出来的数据库

information_schema, mysql, performance_schema, sys是系统自带的数据库,这些数据库维护了 mysql 内部的一些相关信息,不去修改他们

3. 选中数据库 use 数据库名;

use 数据库名;

数据库服务器上,有多个数据库,进行后续的表操作的时候,就需要先指定你要操作哪个数据库.

4. 删除数据库 drop database 数据库名;

drop database 数据库名;

删除数据库是一个非常危险的操作,一旦删掉之后,数据就没了.

如果你删除的是一个比较重要的生产环境的数据,就非常危险

工作中会接触到的几套环境:

  1. 办公环境: 发一个电脑 笔记本/台式机,进行日常办公使用的机器,配置比较低,用来通过通讯软件和其他同事交流,开一些会议,发邮件,写PPT等,配置像是 8c 16G 512G
  2. 开发环境: 写代码,编译代码,简单的运行代码,有些公司,开发环境就是办公环境(开发的项目比较简单),也有些公司,开发环境需要配专门的机器(服务器) 配置像是 28c 128G NT ,这样的服务器启动一下就要几十个GB的内存,在自己的电脑跑是不现实的
  3. 测试环境: 把写好的代码进行测试时候使用的环境,配置像是 28c 128G NT
  4. 生产环境: 办公,开发和测试环境统称为线下环境 ,生产环境也叫做线上环境 ,生产环境上面部署的程序,是可以直接被外面的用户访问到的 ,比如打开一个搜索引擎,在看到搜索结果的这个过程中访问了搜索引擎的生产环境的服务器,服务器经过运算返回结果.往往生产环境的配置是最高的,配置像是 56c 256G N T ,这样的机器可能还会有很多台.如果用户多了,对于机器的压力就比较大,每个用户进行一次访问,服务器都是需要消耗一定的硬件资源来进行计算的,包括但不限于cpu,内存,硬盘,网络宽带...如果同一时刻的用户访问量非常大,消耗的总资源超过了机器能够提供的资源上限,这个时候,服务器可能就挂了(网页刷不出来,甚至就卡死了...)这种情况就是高并发,为了应对高并发的情况,可以添加更多的机器解决,因此生产环境上所涉及到的甚至几百台服务器所构成了分布式系统(集群)

mysql中支持的数据类型

mysql是关系型数据库,是按照 数据表的方式来组织数据的,数据表中的每一列都会有具体的类型,下面说明一些比较重要的数据类型

1. 数值类型: NUMERIC(M,D)

float 和 double 不能精确保存,因此比较两个浮点数,不能使用 == ,而是需要通过作差, 小于一个误差值的形式(IEEE 754 标准)

在MySQL中,DECIMALNUMERIC 可以看作是相同的数据类型。事实上,这两者是可互换的,它们都用来存储精确的数值,这些数值有固定的小数位。这很重要,尤其是在处理财务数据时,比如货币,其中精度非常关键。

DECIMALNUMERIC类型允许用户定义精确度和小数位。格式可以表示为DECIMAL(M, D)NUMERIC(M, D),其中M是数字的最大总位数(精度),D是小数点后的位数(标度)。如果没有定义D,默认是0

例如,DECIMAL(10, 2)可以存储最大为99999999.99的数字,其中有8位在小数点前,2位在小数点后。

DECIMAL不是按照 IEEE 754 的方式来表示的,而是类似于字符串的方式来表示的,需要付出更多的空间,运算的时候也会消耗更多的时间,但是保存的数据是精确的

2. 字符串类型: VARCHAR(SIZE)

size表示的是该字符串类型的数据能表示的最大长度


数据库的 表 操作(前提都是要选中数据库)

关系型数据库里边的存储结构先是一个数据库服务器,上面有很多数据库,每一个数据库都是逻辑上的数据集合,每一个数据库中都包含数据表

数据表 就是存储数据的基本单位

针对数据表的操作,一定是要先选中数据库 (use 数据库名;)

数据表有很多列,每一列都会有具体的类型

1. 创建表 create table 表名(列名 类型 列名 类型 ...);

创建表的时候,必须要描述出表包含哪些列,每一列的类型,每一列的名字...后续往表里放的数据,也要遵守这里的规则,这是关系型数据库的基本要求

明确了列的类型,就可以更方便的对数据的值进行检查和校验

写sql的时候,可以分成多行

遇到 ; 才是一个完整的 sql, 在 ; 之前换行,就是换行操作

2. 查看有哪些表 show tables;

3. 查看表的结构 desc 表名;

desc => describe

就是查看一个表里面有哪些列,列的名字和类型啥的...

Field表示有哪些列,Null如果是YES表示这个格子没有填,是空的,Default是默认值,这里默认为NULL

4. 删除表 drop table 表名;

相关推荐
EterNity_TiMe_19 分钟前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
tatasix19 分钟前
MySQL UPDATE语句执行链路解析
数据库·mysql
sanguine__22 分钟前
java学习-集合
学习
lxlyhwl22 分钟前
【STK学习】part2-星座-目标可见性与覆盖性分析
学习
nbsaas-boot23 分钟前
如何利用ChatGPT加速开发与学习:以BPMN编辑器为例
学习·chatgpt·编辑器
南城花随雪。32 分钟前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了33 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度34 分钟前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮37 分钟前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
CV学术叫叫兽1 小时前
一站式学习:害虫识别与分类图像分割
学习·分类·数据挖掘