实用指南:数据库圣经——第三章CRUD(二)

news/2026/1/24 22:58:38/文章来源:https://www.cnblogs.com/tlnshuju/p/19527764

实用指南:数据库圣经——第三章CRUD(二)

2026-01-24 22:53  tlnshuju  阅读(0)  评论(0)    收藏  举报

一.下载参考文档

1.登录Mysql官网

地址:https://www.mysql.com/cn/

2.找到MySQL Reference Manual 

3.找到对应的版本,我用的是8.0

4.跳转到该界面

5.左边有个滚轮,往下滑,在最后,找到PDF版本,大约6000+页

二.CRUD

1.创建数据库

创建数据库语法:

{ }: 大括号的关键字必须存在,| 就是DATABASE 与 SCHEMA 二选一,都表示数据库

[ ] : 中括号标表示可有可无,表示可选项。

     例如:这里的[IF NOT EXISTS] 表示不存在的话,则创建数据库,存在就不执行。

CHARACTER SET : 是字符集     (8.0默认是utf8mb4)

COLLATE : 排序规则                  (8.0是utf8mb4_0900_ai_ci)

ENCRYPTION : 是否加密 Yes or No 

db_name : 就是数据库的名称

注:博主强烈建议大家创建数据库的时候,加上明确的字符集

create database database_name character set utf8mb4 collate utf8mb4_0900_ai_ci;

注意: MySQL 不允许直接使用关键字,但允许开发者间接使用关键字,在使用的过程中要加上反引号,用反引号把关键字引起来,反引号在键盘的位置是 Esc 的下面,Tab的上面,1的左边

我们show databases; 检查一下是否创建成功这个库

2.查看当前数据库服务全局的默认字符集

查看当前数据库服务全局的默认字符集

show variables like '%character%';

单字节字符集:

ASCII:

  • 最基础的字符集,仅包含 128 个字符(0-127),包括英文字母、数字、标点符号和控制字符(如换行、回车)。
  • 每个字符用 1 字节(8 位,最高位为 0)表示,无法表示中文、日文等非英文字符。

多字节字符集(主要用于亚洲语言):

GBK:

  • 对 GB2312 的扩展(“汉字内码扩展规范”),包含 21003 个汉字(涵盖简体、繁体),以及日文、韩文等符号。
  • 兼容 GB2312,每个字符用 2 字节表示,是中文 Windows 系统默认的传统编码之一.

Unicode 及相关字符集(全球通用)

Unicode 是国际标准,为全球所有语言的每个字符分配唯一的数字编码(称为 “码点”,如 U+4E2D 表示 “中”),但 Unicode 仅定义码点,不规定存储方式,因此衍生出多种实现方式:

  1. UTF-8

    • 目前最流行的 Unicode 实现方式,可变长度编码:
      • 英文字符用 1 字节(兼容 ASCII),汉字用 3 字节,生僻字可能用 4 字节。
      • 支持全球所有语言,节省存储空间,是互联网、编程(如 Java、Python)、数据库(如 MySQL)的首选编码。
  2. UTF-16

    • 每个字符用 2 或 4 字节表示:常用字符(如大部分汉字)用 2 字节,生僻字用 4 字节。
    • 是 Windows 系统、Java 内存中的默认编码方式。
  3. UTF-32

    • 每个字符固定用 4 字节表示,直接对应 Unicode 码点,编码 / 解码简单但占用空间大,较少用于存储。

输出结果下图:

utf8mb3 : 每个字符最多用 3 字节 存储。但它不支持 emoji 表情,每个字符最多用 3 字节 存储。但它不支持 emoji 表情

utf8mb4 :是 MySQL 对 UTF-8 标准的完整实现,支持 Unicode 中所有码点,每个字符最多用 4 字节 存储。它可以完美支持 emoji、罕见汉字、特殊符号等 utf8mb3 无法覆盖的字符。

cmd中,输入这个语句,client 的字符集是gbk

在属性中他是使用gbk

3.查看警告信息

语句如下:

show warnings;

执行结果如下:

4.选择要操作的数据库

语句:use 数据库名称

use database_name;

MySQL 的这个语句不是很规范,可以不加[ ;], 我们在使用该语句的时,加上分号;

5.查看数据库版本

语句:

select version();

执行结果:

6.查询当前所在的数据库名称

MySQL 数据库的查询语句,用于查询当前所在的数据库名称

执行语句

select database();

7.删除数据库

执行过程如下:

Query OK; 出现了那说明语句执行完成了。

在服务器中一般都是Linux 系统上删除,没有回收站这一说,删除就没有了

在磁盘中删除文件,并不是真正意义的删除,索引标记替代数据擦除,补数据标记为已删除的状态,但是没有删除,然后有新的数据存进来,就把这个覆盖了(如果说我们覆盖的次数不是很多,我们可以找这个从磁盘的厂家找回,但是这个想找回了肯定是要收费的)

MySQL删除可以通过日志来恢复,数据库备份每天备份(增量备份记录了今天比昨天的新增的数据),每周备份一次(全量备份记录了这一周的所有数据),通过日志可以快速把删除的数据快速执行一遍,完成恢复。

注意:在执行删库的过程中,要把你的领导,同事喊过来一起干这个事情,并把与领导要求你删库的聊天记录保存好

8.\?查看MySQL 的帮助

创建完数据库之后,就要在数据库中创建表,表中存储数据记录,一条记录存储不同的列组成,每个列需要什么样的数据类型

三.常用的数据类型

1.数值类型

1.float 和 double 类型在表示小数的时候,不是特别精准,所以用decimal 类型去表示小数

2.有些系统中表示金额,一般把元为单位换成以分为单位,然后用int 类型去表示金额

3.decimal 类型M表示的是长度,长度M中不计算小数喊口号和符号(一般是负号),如果D为0,那就说明没有小数点和小数部分(也就是保存的是一个整数)

4.decimal的最大位数(M)就是 65,支持的最大的小数位是 30

不同数据库对其默认值的定义有所差异,以 MySQL 为例:

  • M(总有效数字位数):默认值是 10;
  • D(小数位数):默认值是 0。

扩展资料

  • 数值类型可指定为无符号(unsigned),表示不取负数。
  • 1 字节(bytes)= 8bit。
  • 整型类型的范围:
    1. 有符号范围:-2^(类型字节数8-1) 到 2^(类型字节数8-1) - 1,如 int 是 4 字节,范围是 - 2^31 到 2^31-1
    2. 无符号范围:0 到 2^(类型字节数 * 8) - 1,如 int 范围是 2^32-1
  • 尽量不使用 unsigned,对于 int 类型可能存放不下的数据,int unsigned 同样可能存放不下,建议设计时将 int 类型提升为 bigint 类型。
  • 这是官网给出来的,大家可以参考一下

2.字符类型

1.varchar(size)最常用的字符串数据类型,可以指定长度为多少,长度是用户设定的字符数量上限大小是实际存储时的字节消耗,这两点一定要区分,两者因字符集、实际内容的不同而产生差异。

例子:VARCHAR(10) 表示最多存 10 个字符,不管字符是汉字还是英文

定义这一个字段,字段可以放10 或者10 以内的字符,超过10个就报错,之前我们设置了字符集utf8mb4编码集,一个字符最多占4个字节,根据字符的具体情况占1-4个字节,在utf8mb4编码集下最多存储16383个字符

2.TEXT 是文本类型,存储较长文本,如文章摘要、评论,上边还有 MEDIUMTEXT ,LONGTEXT,存储更大的文本等

3.在数据库不建议存储非常大的文件,而是把文件存储到磁盘上,在对应的数据库中保存文件路径,在查询文件的时候,先去查询他的文件路径,通过文件路径在磁盘上加载或者返回真实的文件

4.

1. CHAR 类型
  • 特性:固定长度的字符串。
  • 长度定义M 表示以字符为单位的列长度,取值范围 0 ~ 255;若省略 M,长度默认是 1
  • 存储与读取:存储时会用空格向右填充到指定长度,读取时会从尾部删除空格
  • 特殊情况:允许定义 CHAR(0),此时列的值只能是 NULL 或空字符串,主要用于旧系统兼容(比如表结构必须包含该列,但实际不使用其值)。
  • 特性:可变长度的字符串。
  • 长度定义M 表示以字符为单位的最大列长度,取值范围 0 ~ 65535(所有列共享这个长度上限)。有效长度由实际字符数和字符集共同决定。
  • 存储机制:用额外的 1~2 个字节记录实际使用的字节数(实际字节数 ≤255 时用 1 字节,>255 时用 2 字节)。
  • 存储与读取插入数据时会删除超出长度的空格,读取时不会删除尾部空格。

 2.VARCHAR 类型
  • 特性:可变长度的字符串。
  • 长度定义M 表示以字符为单位的最大列长度,取值范围 0 ~ 65535(所有列共享这个长度上限)。有效长度由实际字符数和字符集共同决定。
  • 存储机制:用额外的 1~2 个字节记录实际使用的字节数(实际字节数 ≤255 时用 1 字节,>255 时用 2 字节)。
  • 存储与读取:插入数据时会删除超出长度的空格,读取时不会删除尾部空格
3. 如何选择 CHAR 与 VARCHAR
  • 若数据长度固定(如身份证号、MD5 值、学号、邮编等),使用 CHAR 类型。
  • 若数据长度不固定(如姓名、地址等),使用 VARCHAR 类型,但需规划好最大长度以确保能存储最长字符串。
  • CHAR 类型:较浪费磁盘空间,但效率更高(直接开辟固定存储空间)。
  • VARCHAR 类型:节省磁盘空间,但效率较低(在定义长度范围内,按需分配存储空间)。
VARCHAR 与 TEXT 的区别
  • 容量大小

    • VARCHAR 最大支持 65535 个字节。
    • TEXT 最大支持 65535 个字节;若超过,会自动转换为 MEDIUMTEXT(最大 16,777,215 字节);若再超过,转换为 LONGTEXT
  • 存储位置

    • VARCHAR:实际内容小于 768 字节时,存储在当前行;大于 768 字节时,存储在溢出页,当前行仅保存溢出页地址。
    • TEXT:整体存储在溢出页,当前行仅保存溢出页地址。
  • 查询性能

    • VARCHAR:频繁查询的列可创建普通索引,提升性能。
    • TEXT:无法直接创建普通索引,仅支持 FULLTEXT 索引;因存储位置和索引支持差异,查询性能低于 VARCHAR

3.整型类型:

4.日期类型

1.TIMESTAMP(timestamp): 记录的是一个时间戳,时间是1970 到 2038 的这个时间节点,MySQL是以毫秒为单位计时的,以四字节的范围就这些,溢出了就会,这个就不要使用了

2.有关的可以从官网进行学习

四.表的操作

需要操作数据库的表的时候,先选择我们要使用的库

use database_name;

1.创建表

create table table_name (
name varchar(8);
--name varchar(8) comment '我要进行一个说明';
--varchar 要记得要写长度
--注意:强烈建议每一张表都要设计一个编号字段,数据类型为bigint
);

加上校验的话就是:create table if not exists table_name

例子:

在编辑器中把SQL编辑好之后,保存为一个本地的.sql文件

source 保存的.sql

 注意:命令行客户端工具,只执行一些简单的查询或者命令,如果一两句SQL 可以搞定就在这里面去执行,如果说要编复杂的SQL ,比如表的设计,复杂查询,建议大家还是去可视化工具编写。

执行过程如下:

source 保存.sql文件
  • TEMPORARY:表示创建的是一个临时表。
  • field:列名。
  • datatype:数据类型。
  • comment:对列的描述或说明。
  • engine:存储引擎,不指定则使用默认存储引擎。
  • characterset:字符集,不指定则使用默认字符集。
  • collate:排序规则,不指定则使用默认排序规则。

2.查看表

查看数据表里有哪些表,记得要加复数

show tables;

3.查看表的结构

desc 表名;

1.第一列就是字段名,就是列名

2.第二列就是数据类型

3.是不是允许为空

4.default 默认值,什么都不指定的时候就是null

5.Extra 其他的一些扩展内容

  • • Field:表中的列名
  • • Type:列的数据类型
  • • Null:该列的值是否允许为Null
  • • Key:该列的索引类型
  • • Default:该列的默认值
  • • Extra:扩展信息

4.删除表

DROP [TEMPORARY] TABLE [IF EXISTS] tb1_name [, tb1_name...]

1.[TEMPOARAY] 表示的是用户自己创建的临时表

2.库名.表名 相当于完全路径

5.进入图形化界面

黄色闪电状的是运行键

Schemas 是有哪些库

6.修改表

对表结构进行调整,如添加列、删除列、修改列名 / 数据类型 / 长度等,此时需执行表修改操作。

ALTER TABLE tbl_name [alter_option [, alter_option] ...];
alter_option: {table_options| ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]| MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]| DROP [COLUMN] col_name| RENAME COLUMN old_col_name TO new_col_name| RENAME [TO | AS] new_tbl_name
}

• tbl_name:要修改的表名

• ADD:向表中添加列

• MODIFY:修改表中现有的列

• DROP:删除表中现有的列

• RENAMECOLUMN:重命名表中现有的列

• RENAME[TO|AS]new_tbl_name:重命名当前的表

6.1向表中添加一列

alter table users ADD assets varchar(100) comment '头像地址' after  birthday;

comment '头像地址'(列注释)

after birthday(列位置指定)

varchar(100) 中的长度 100

6.2 修改某列的长度

alter table users MODIFY assets varchar(255);

6.3重命名某列

alter table users RENAME [COLUMN] assets TO avatar;

6.4删除某个字段

alter table users DROP avatar;

6.5 修改表名

alter table users RENAME TO employee;

7.随手小测试

题目如下:

  • 有一个商店的数据,记录客户及购物情况,有以下三个表组成:
    • 商品goods(商品编号goods_id,商品名goods_name,单价unitprice,商品类别category,供应商provider)
    • 客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)
    • 购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)
create database bit_mall character set utf8mb4 collate utf8_0900_ai_ci;
-- 选择数据库
use bit_mall;
-- 创建商品表
drop table if exists goods;
create table goods (goods_id bigint,goods_name varchar(50),unitprice decimal(10, 2),category varchar(20),provider varchar(50)
);
create table customer (customer_id bigint,name varchar(20),address varchar(255),email varchar(255),gender bool,card_id varchar(18)
);
create table purchase (order_id bigint,customer_id bigint,goods_id bigint,nums int
);

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

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

相关文章

2026年非标PEEK零部件定制选型指南:从技术适配到供应链保障的全维度评估框架

2026年非标PEEK零部件定制选型指南:从技术适配到供应链保障的全维度评估框架 对于航空航天、氢能装备、机器人等高端制造领域的工程师而言,非标PEEK零部件定制的核心矛盾从来不是“有没有供应商”,而是“选对供应商…

2026年耐高温PEEK零部件厂家选型指南:从技术到场景的全维度评估框架

2026年耐高温PEEK零部件厂家选型指南:从技术到场景的全维度评估框架 在航空航天、氢能装备、石油石化等高端制造领域,耐高温PEEK零部件是解决“高温+高负载+强腐蚀”痛点的核心材料——长期使用温度可达260℃、短期…

buy a civil servant.

its not a joke in English. they never have a real exam in their entire life. I shouldnt speak English, just for these words. English IS racist. English steals privacy. USAmerica is bad.

在vs2015中使用vs2019的编译器

在vs2015中使用vs2019的编译器升级vs2015为什么会有这么奇怪的需求?因为安装的是vsBuildTools2019,硬盘空间不够,只能装个编译工具,有很多vs2015的项目,编译的库文件,所以要对vs2015进行改造,使它能够直接打开vs…

华为OD机考双机位C卷- 返回矩阵中非1的元素个数/数值同化 (Java Python JS C++ C )

最新华为上机考试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 华为OD机考双机位C卷 题目描述 存在一个m*n的二维数组,其成员取值范围为0,1,2。 其中值为1的元素具备同化特性,每经过1S,将上下左右值为0的元素同化为1。 而值为2的元素,免疫同化。 将…

华为OD机考双机位C卷- 分月饼 (Java Python JS C++ C )

最新华为上机考试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 华为OD机考双机位C卷- 题目描述 中秋节,公司分月饼,m 个员工,买了 n 个月饼,m ≤ n,每个员工至少分 1 个月饼,但可以分多个, 单人分到最多月饼的个数是 Max1 ,单人分到第二多月饼个数是…

万字亿集流量系统架构总结笔记(上)

亿集流量自己的提取 注: 这里感觉是对需求的探讨和技术选型的分析,但是不一定就有最推荐的具体设计,更多的是提供思路。 这里有的东西并不具有通用性的服务设计,所以仅讲解 基本通识,不做具体设计。 还有这里感觉我更…

万字亿集流量系统架构总结笔记(下)

6通用计数系统 在进行各类计数数据的展示时,初学者非常容易直白地认为数据的统计计数应该来源 于数据记录本身。比如点赞数可以从作品点赞记录数据中统计总数得到,评论数可以从作 品评论记录中统计总数得到……实际上,这样的做法有极大的并发…

知识图谱的可验证性:断言图谱的设计原理

大语言模型在文本生成和推理上的表现有目共睹,但对于从非结构化文本构建可靠知识图谱这件事,依然是个老大难。这个问题的根源在于:语言模型的运作机制与结构化知识提取的需求之间存在本质性的错位。 本文会介绍自动化知识图谱生成的核心难题…

量子计算:未来计算的新纪元 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

云原生第一周作业

1.总结 kubernetes 控制平面的各组件功能: kube-apiserver: Kubernetes API 服务器验证并配置 API 对象的数据, 这些对象包括 pods、services、replicationcontrollers 等。 API 服务器为 REST 操作提供服务,并为集…

【路径规划】基于快速探索随机树 (RRT) 和概率路网 (PRM) 进行串联运动规划器的路径规划附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &#…

【图像加密】基于仿射变换和双随机相位的图像加密算法实现附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

适用于Rocky Linux的MPI 管理程序

某些场景下需要在节点上同时部署openmpi和mpich,根据需要决定使用哪种。此时若有一种方法可以进行轻松切换则会极其便捷。 故而文中方法应运而生 文件 1:配置文件 路径:/etc/mpi-manager/mpi.conf MPI_IMPLEMENTATIONopenmpi文件 2&#…

电商修图新工具:AI清晰放大神器,低清商品图无损变高清

电商人谁懂模糊商品图的痛?产品图放大满是马赛克,家居模特图压缩后细节尽失,直接拉低转化。AI工具清晰放大可以解决这一难题。能精准修复模糊图,还支持多格式批量处理、小白易上手,两个实战案例带你看清实力&#xff0…

文献堆成山?3分钟搞定!AI文献管理全攻略,科研党直接抄作业

点赞、关注、收藏。不迷路 搞科研的兄弟姐妹们,谁没被文献管理逼到崩溃过? 下载的文献杂乱无章,存满电脑各个文件夹,需要时翻半天找不到;手动整理参考文献格式,不同期刊要求不一样,改到深夜还容…

英文摘要写哭?30分钟搞定!AI速写科研论文摘要全攻略,代码直接用

点赞、关注、收藏,不迷路 搞科研的兄弟姐妹们,谁没被英文论文摘要折磨过? 明明实验做了大半年,数据也很扎实,写英文摘要却卡到怀疑人生:语法错误堆一堆,术语用得不地道,逻辑混乱没重…

炸裂开局!AI应用架构师引领AI驱动流程自动化新方向

炸裂开局!AI应用架构师引领AI驱动流程自动化新方向:用大语言模型重构业务流程 告别僵化规则,拥抱认知智能:构建能理解、会决策、可进化的下一代自动化流程。 第一部分:引言与基础 标题: 超越RPA&#xff1a…

深入解析:RabbitMQ---集群搭建(HAProxy负载均衡高可用)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

多邻国第五阶段第13部分

“My friends and I eat together at the dining hall.” 为什么用 at 不用 in? at vs in 的区别: at the dining hall ✅ 强调在那个地点进行活动(吃饭) 把dining hall看作一个功能性场所 in the dining hall ✅(也可…