MySQL DDL 数据定义
文章目录
- 1.创建数据库
- 2.删除数据库
- 3.查看所有数据库
- 4.查看当前数据库
- 5.选择数据库
- 6.创建数据表
- 7.查看 MySQL 支持的存储引擎和默认的存储引擎
- 8.删除数据表
- 9.查看数据库的数据表
- 10.查看表结构
- 11.查看建表语句
- 12.重命名数据表
- 13.增加、删除和修改字段自增长
- 14.增加、删除和修改数据表的列
- 15.添加、删除和查看索引
- 16.约束管理
- 17.创建临时表
- 18.创建内存表
- 19.修改数据表的存储引擎
- 20.查看数据库数据表存储位置
- 21.创建 merge 表
- 22.清空表内容
- 参考文献
1.创建数据库
CREATE DATABASE db_name;
2.删除数据库
DROP DATABASE db_name;
3.查看所有数据库
SHOW DATABASES;
4.查看当前数据库
SELECT DATABASE();
5.选择数据库
USE db_name
6.创建数据表
CREATE TABLE [IF NOT EXISTS] tbl_name (col_name col_type [is null] [key] [default value] [extra] [comment],...
)[engine] [charset];
上面的建表语句命令格式,除了表名,字段名和字段类型,其它都是可选参数,可有可无,根据实际情况来定。
is null 表示该字段是否允许为空,不为空为 NOT NULL,不指明默认为 NULL。
key 表示该字段是否是主键、外键、唯一键还是索引。
default value 表示该字段在未显示赋值时的默认值。
extra 表示其它的一些修饰,比如自增 auto_increment。
comment 表示对该字段的说明注释。
engine 表示数据库存储引擎,MySQL 支持的常用引擎有 MyISAM、InnoDB、MEMORY 和 ARCHIVE 等,不显示指明默认使用 MyISAM。
charset 表示数据表数据存储编码格式,默认为 latin1。
存储引擎是什么? 其实就是如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。
主键(Primary Key)与唯一键(Unique Key)有什么区别?
- 主键的一个或多个列必须为 NOT NULL,而唯一键可以为 NULL。
- 一个表只能有一个主键,但可以有多个唯一键。
以学生表为例,演示数据表的创建。
学生表设计:
字段(Field) | 类型(Type) | 可空(Null) | 键(Key) | 其他(Extra) |
---|---|---|---|---|
学号(student_no) | INT UNSIGNED | NOT NULL | PRI | AUTO_INCREMENT |
姓名(name) | VARCHAR(12) | NOT NULL | N | |
学院(school) | VARCHAR(12) | NOT NULL | N | |
年级(grade) | VARCHAR(12) | NOT NULL | N | |
专业(major) | VARCHAR(12) | NOT NULL | N | |
性别(gender) | Boolean | NOT NULL | N | |
爱好(hobby) | VARCHAR(128) | NULL | N |
建表语句:
CREATE TABLE IF NOT EXISTS student(student_no INT UNSIGNED NOT NULL COMMENT '学号' AUTO_INCREMENT,name VARCHAR(12) NOT NULL COMMENT '姓名',school VARCHAR(12) NOT NULL COMMENT '学院',grade VARCHAR(12) NOT NULL COMMENT '年级',major VARCHAR(12) NOT NULL COMMENT '专业',gender BOOLEAN NOT NULL COMMENT '性别',hobby VARCHAR(128) NULL COMMENT '爱好',PRIMARY KEY(student_no)
)ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20160001;
观察上面的建表语句需要注意四点:
- 可以使用 IF NOT EXISTS 来判断数据表是否存在,存在则创建,不存在则不创建,这样可以避免因重复创建表导致失败。
- 设置主键时可以将 PRIMARY KEY 放在字段的后面来修饰,也可以另起一行单独来指定主键。
- NOT NULL 表示字段不允许为空,不指明,默认允许为 NULL,也可以显示指明 NULL,表示允许为空。
- 设置自增时,可以指定自增的起始值,MySQL 默认是从 1 开始自增,比如 QQ 号是从 10000 开始的。
7.查看 MySQL 支持的存储引擎和默认的存储引擎
可以使用 SHOW ENGINES 列出所有可用的存储引擎以及每个存储引擎的状态、默认值等信息。在结果中,可以查看 Support 列来确定每个存储引擎是否受支持以及默认的存储引擎是什么。
SHOW ENGINES;
查看默认的存储引擎也可以使用下面的方式。
SHOW VARIABLES LIKE '%storage_engine';
8.删除数据表
DROP TABLE [IF EXISTS] tbl_name1 [, tbl_name2, tbl_name3 ...]
为了避免在尝试删除不存在的表时出现错误,建议您在使用 DROP TABLE 时加上 IF EXISTS 子句。
# 删除单个数据表。
DROP TABLE [tablename];# 数据表存在时才删除,不会产生 Warning。
DROP TABLE IF EXISTS tbl_name1;# 同时删除多个数据表。
DROP TABLE IF EXISTS tbl_name1,tbl_name2,...;
9.查看数据库的数据表
# 查看当前数据库。不能使用 limit 子句
SHOW TABLES;# 模糊查找
SHOW TABLES LIKE '%tbl_name%'# 查看指定数据库
SHOW TABLES FROM dbname# 或者
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbname' AND TABLE_NAME LIKE "tbl_name" LIMIT 5;
10.查看表结构
DESC tbl_name;# 或
DESCRIBE tbl_name;# 或
SHOW COLUMNS FROM tbl_name;
11.查看建表语句
SHOW CREATE TABLE tbl_name;
12.重命名数据表
RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ...
13.增加、删除和修改字段自增长
(1)删除字段自增长。
# 命令格式
ALTER TABLE tbl_name CHANGE old_col_name new_col_name column_definition;# 取消 student_no 的自增长
ALTER TABLE student CHANGE student_no student_no INT(10) UNSIGNED;
注意列名称要重复一次,即需要将列的名称写两次,因为一个是旧列明,一个是新列名,即使二者是相同的,新列明也不能省略。
(2)增加字段自增长。
# 命令格式
ALTER TABLE tbl_name MODIFY col_name col_type AUTO_INCREMENT;# 或者与上面删除字段自增长相反
ALTER TABLE tbl_name CHANGE old_col new_col col_type AUTO_INCREMENT;# 示例,添加 student_no 自增长
ALTER TABLE student MODIFY student_no INT(10) UNSIGNED AUTO_INCREMENT;
添加自增长的列必须为 NOT NULL 以及 PRIMARY KEY(UNIQUE)。如果不是,需添加相应定义。
(3)修改自增长起始值。
# 命令格式
ALTER TABLE tbl_name AUTO_INCREMENT=value;# 设置 student_no 从 10000 开始自增
ALTER TABLE tbl_name AUTO_INCREMENT=10000;
注意,设定的起始值 value 只能大于已有的 auto_increment 的整数值,小于的值无效。
使用下面的语句可以看到 Auto_increment 这一列现有的起始值。
SHOW TABLE STATUS LIKE 'tbl_name';
14.增加、删除和修改数据表的列
(1)增加列。
ALTER TABLE tbl_name ADD COLUMN col_name col_definition [FIRST | AFTER col_name];
如果不指定 FIRST(添加到第一列)或 AFTER col_name,新列将会添加到表的最后一列。
以下是一些示例。
# 示例 1,为数据表 student 增加家乡 hometown
ALTER TABLE student ADD COLUMN hometown varchar(32) comment '家乡';# 示例 2,在指定列后新增列,而非默认最后一列
ALTER TABLE student ADD COLUMN hometown varchar(32) comment '家乡' AFTER major;# 示例 3,同时增加多个列
ALTER TABLE student ADD COLUMN hometown varchar(32) comment '家乡' AFTER major, ADD COLUMN hobby varchar(128) AFTER hometown;
(2)删除列。
ALTER TABLE tbl_name DROP COLUMN column1, DROP COLUMN column2, ...;
如果您想删除表 orders 中的 quantity 和 price 列,则可以使用以下语句。
ALTER TABLE orders DROP COLUMN quantity, DROP COLUMN price;
(3)重命名列。
ALTER TABLE tbl_name CHANGE old_col new_col col_definition;
(4)修改列属性。
alter table tbl_name MODIFY col_name col_definition;
如修改 home 类型为 varchar(64) 且不允许 NULL:
ALTER TABLE student MODIFY home VARCHAR(64) NOT NULL;
15.添加、删除和查看索引
(1)添加索引。
ALTER TABLE tbl_name ADD INDEX [index_name](column1, column2,...);
其中 index_name 是可选的。如果不指定索引的名称,MySQL 会自动生成一个索引名称。这通常是在表名、列名和一些标识符的基础上生成的。
以下是一些示例。
# 为数据表 student 数据列 student_no 添加索引
ALTER TABLE student ADD INDEX index_student_no(student_no);# 或者
ALTER TABLE student ADD INDEX (student_no);
上面示例的第二种方法,如果不显示指明索引名称的话,默认以列名称作为索引名称。添加索引是为了提高查询速率。
(2)查看索引。
SHOW INDEX FROM tbl_name;
(3)删除索引。
ALTER TABLE tbl_name DROP INDEX index_name;
16.约束管理
(1)查看约束。
SHOW CREATE TABLE tbl_name;
这将显示创建表的完整 SQL 语句,包括列定义、索引和约束等信息。您可以在这个输出中查找约束的定义。
使用 INFORMATION_SCHEMA 也可以查询。
SELECT CONSTRAINT_NAME, CONSTRAINT_TYPEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE TABLE_NAME = 'tbl_name';
这将返回指定表的约束信息,包括约束名称和约束类型。
(2)删除约束。
要删除约束,可以使用 ALTER TABLE 语句并指定约束类型和名称。
# 删除主键约束
ALTER TABLE tbl_name DROP PRIMARY KEY;# 删除外键约束
ALTER TABLE tbl_name DROP FOREIGN KEY constraint_name;
17.创建临时表
创建表时可以使用TEMPORARY关键字。TEMPORARY表只在当前会话中可见,并且在会话关闭时自动删除。这意味着两个不同的会话可以使用相同的临时表名,而不会相互冲突,也不会与已有的同名非临时表冲突。(现有表被隐藏,直到临时表被删除。)
CREATE TEMPORARY TABLE [IF NOT EXISTS] tbl_name(col_name col_type [is null] [key] [default value] [extra] [comment],...
);# 示例
CREATE TEMPORARY TABLE pig(i int);
(1)创建临时表与创建普通表的语句基本是一致的,只是多了一个 TEMPORARY 关键字。
(2)临时表的特点是:表结构和表数据都是存储到内存中的,生命周期是当前 MySQL 会话,会话结束后,临时表自动被 drop。
(3)注意临时表与内存表(Memory Table)的区别是:
- Memory表的表结构存储在磁盘,临时表的表结构存储在内存。
- SHOW TABLES 看不到临时表,但看得到内存表。
- 内存表的生命周期是服务端 MySQL 进程生命周期,MySQL 重启或者关闭后内存表里的数据会丢失,但是表结构仍然存在,而临时表的生命周期是 MySQL 客户端会话。
- 内存表支持唯一索引,临时表不支持唯一索引。
- 在不同会话可以创建同名临时表,不能创建同名内存表。
18.创建内存表
与创建表的命令格式相同,只是显示地在后面指明存储引擎为 MEMORY。
# 命令格式
CREATE TABLE tbl_name ( col_name col_type [is null] [key] [default value] [extra] [comment],...)ENGINE=memory;# 示例
CREATE TABLE pig(i int) ENGINE=MEMORY;
19.修改数据表的存储引擎
ALTER TABLE tbl_name ENGINE=engine_name;# 将数据表test存储引擎设置为 InnoDB
alter table test ENGINE=InnoDB;
20.查看数据库数据表存储位置
SHOW GLOBAL VARIABLES LIKE "%datadir%";
21.创建 merge 表
MERGE 存储引擎把一组 MyISAM 数据表当做一个逻辑单元来对待,让我们可以同时对他们进行增删查改。构成一个 MERGE 数据表结构的各成员 MyISAM 数据表结构(索引、引擎、列、字符集等)必须相同。
假设你有几个日志数据表,他们内容分别是这几年来每一年的日志记录项,他们的定义都是下面这样,YY代表年份:
CREATE TABLE log_YY
( dt DATETIME NOT NULL, info VARCHAR(100) NOT NULL, INDEX (dt)
) ENGINE = MyISAM;
假设日志数据表的当前集合包括log_2015
、log_2016
、log_2017
,而你可以创建一个如下所示的MERGE数据表把他们归拢为一个逻辑单元:
CREATE TABLE log_merge
(dt DATETIME NOT NULL,info VARCHAR(100) NOT NULL,INDEX(dt)
) ENGINE = MERGE UNION=(log_2015,log_2016,log_2017) INSERT_METHOD=LAST;
(1)ENGINE 选项的值必须是 MERGE 或 MRG_MYISAM。
(2)UNION 选项列出了将被收录在这个 MERGE 数据表离得各有关数据表。把这个 MERGE 表创建出来后,就可以像对待任何其他数据表那样查询它,只是每一次查询都将同时作用与构成它的每一个成员数据表 。下面这个查询可以让我们知道上述几个日志数据表的数据行的总数。
SELECT COUNT(*) FROM log_merge;
(3)除了便于同时引用多个数据表而无需多条查询,MERGE数据表还提供了以下一些便MERGE数据表也支持DELETE 和UPDATE操作。INSERT操作比较麻烦,因为MySQL需要知道应该把新数据行插入到哪一个成员表里去。在MERGE数据表的定义里可以包括一个INSERT_METHOD
选项,这个选项的可取值是 NO、FIRST、LAST,他们的含义依次是INSERT操作是被禁止的、新数据行将被插入到现在UNION选项里列出的第一个数据表或最后一个数据表。
(4)对现有的merge表可以删除或新增包好的数据表,比如新增相同结构的数据表log_2018
。
CREATE TABLE log_2009 LIKE log_2008;
ALTER TABLE log_merge UNION=(log_2015, log_2016,log_2017,log_2018);
22.清空表内容
TRUNCATE [TABLE] tbl_name
TRUNCATE 与 DELETE 均可以删除表记录,区别主要有如下几点:
(1)truncate 属于 DDL,delete 属于 DML。
(2)truncate 用于删除表中的所有行,delete 可以使用 where 子句有选择地进行删除。
(3)delete 每次删除一行,并在事务日志中为所删除的每行记录一项。truncate 释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放,所以truncate 比 delete 使用的系统和事务日志资源更少,效率更高。
(4)truncate 导致自动增加字段的初始值被重置,delete 没有影响,自增字段的值还是按照最后一次插入的基础上递增。
(5)对于由 FOREIGN KEY 约束引用的表,不能使用 truncate,而应使用不带 where 子句的 delete 语句。由于 truncate 不记录在日志中,所以它不能激活触发器。
(6)TRUNCATE TABLE 不能用于参与了索引视图的表。
(7)对用 TRUNCATE TABLE 删除数据的表上增加数据时,要使用UPDATE STATISTICS来维护索引信息。
(8)如果有 ROLLBACK 语句,DELETE 操作将被撤销,但 TRUNCATE 不会撤销。
请记住,当你不再需要该表时用 DROP;当你仍要保留该表,但要删除所有记录时用 TRUNCATE;当你要删除部分记录时用 DELETE。
参考文献
MySQL Data Definition Statements
相关文章:

MySQL DDL 数据定义
文章目录 1.创建数据库2.删除数据库3.查看所有数据库4.查看当前数据库5.选择数据库6.创建数据表7.查看 MySQL 支持的存储引擎和默认的存储引擎8.删除数据表9.查看数据库的数据表10.查看表结构11.查看建表语句12.重命名数据表13.增加、删除和修改字段自增长14.增加、删除和修改数…...

Ventoy 设置VTOY_MAX_SEARCH_LEVEL = 0只扫描U盘根目录 不扫码子目录
在镜像分区/media/yeqiang/Ventoy创建目录ventory,目录内创建文件ventoy.json,内容如下 {"control":[{ "VTOY_MAX_SEARCH_LEVEL": "0" }] }采用系统默认的utf-8编码。 参考: search path . Ventoy Plugin.e…...

vue3父子同信的双向数据实现
前言: 我们知道的是,父传子的通信,和子传父的通信,那如何实现父子相互通信的呢? (vue3中)v-model 和modelValue结合使用,在vue2中使用的是.sync 在父组件的写法 <template> <Son v-model"num" /&…...

Shiro是什么?为什么要用Shiro?
前言 本文小新为大家带来 Shiro入门概述 相关知识,具体内容包括Shiro是什么,为什么要用 Shiro,Shiro与Spring Security 的对比,Shiro的基本功能(包括:基本功能框架,功能简介)&#x…...

Vue3+Vite+Pinia+Naive后台管理系统搭建之九:layout 动态路由布局
前言 如果对 vue3 的语法不熟悉的,可以移步Vue3.0 基础入门,快速入门。 1. 系统页面结构 由 menu,面包屑,用户信息,页面标签,页面内容构建 2. 创建页面 创建 src/pages/layout.vue 布局页 创建 sr…...

从零开始学Python(Ⅰ)基本变量与数据类型
🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Python的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.关于Python的基本知识(变量…...

SQL ASNI where from group order 顺序 where和having,SQL底层执行原理
SQL语句执行顺序: from–>where–>group by -->having — >select --> order 第一步:from语句,选择要操作的表。 第二步:where语句,在from后的表中设置筛选条件,筛选出符合条件的记录。 …...

Mac M2 Ventura(13.3) 新机 安装Cocoapods
1.执行命令: sudo gem install cocoapods 因为是新机,内置的ruby版本是(2.6.0)太低,会报错 所以需要安装新的ruby版本 2.如果已经安装了低版本的homebrew,可以先卸载: 卸载: /b…...

Unity 引擎做残影效果——2、屏幕后处理方式
Unity实现残影效果 大家好,我是阿赵。 这里继续介绍Unity里面做残影的方法。之前介绍了BakeMesh的方法做残影,这一期介绍的是用屏幕后处理的方法做残影。 一、原理 之前的BakeMesh方法,是真的生成了很多个网格模型在场景里面。如果用后处理做…...

考研算法38天:反序输出 【字符串的翻转】
题目 题目收获 很简单的一道题,但是还是有收获的,我发现我连scanf的字符串输入都忘记咋用了。。。。。我一开始写的 #include <iostream> #include <cstring> using namespace std;void deserve(string &str){int n str.size();int…...

“深入解析JVM:探秘Java虚拟机的工作原理“
标题:深入解析JVM:探秘Java虚拟机的工作原理 摘要:本文将深入探讨Java虚拟机(JVM)的工作原理,包括类加载、内存管理、垃圾回收、即时编译等关键概念。通过详细解析JVM的各个组成部分,读者将能够…...

[Flask]SSTI1
根据题目提示,这关应该是基于Python flask的模版注入,进入靶场环境后就是一段字符串,而且没有任何提示,有点难受,主要是没有提示注入点 随机尝试一下咯,首先尝试一下guest,GET传参 但是没有反应…...

Object Map 的相互转换
学生业务对象定义:Student Student student new Student(); student.setId(1L); student.setName("令狐冲") student.setAge(10) 第一种:通过Alibaba Fastjson实现 pom.xml 文件依赖 <dependency><groupId>com.alibaba</g…...

VS+Qt环境下解决中文乱码问题
目录 原因解决方案总结 原因 使用VSQt出现中文乱码的情况一般都是给控件添加中文文本时出现,而控件需要的字符串类型是QString,默认是utf-8。在 Visual Studio 中,源代码文件的默认执行字符集可能是 Windows 默认的 ANSI 字符集,…...

互联网摸鱼日报(2023-08-08)
互联网摸鱼日报(2023-08-08) 36氪新闻 宝洁、欧莱雅、联合利华加大广告预算投入:越萧条,要越营销? 把智能手机的“高端货”装进汽车,厂商的脑洞越来越大了 王一博《热烈》票房破7亿,街舞是一门怎样的生意࿱…...

NTT DATA利用相干伊辛机模拟基因组组装和疾病治疗的潜力
(图片来源:网络) 7月20日,日本领先的IT服务提供商和行业咨询公司NTT DATA宣布完成了一个使用量子计算优化基因组组装过程的项目。这是量子计算应用于医疗保健和生命科学行业中的一个里程碑。 本项目通过比较量子和非量子计算方…...

哈希表语法(转载自用)
哈希表 哈希表是一种很常见的数据结构,我现在平时刷算法题一般使用C++刷(不要问我为什么,懂的都懂)。C++关于哈希表有很多数据结构,平时使用的比较多的有unordered_set 跟 unordered_map。其中unordered_map 存储的是键值对。 其实我们在某些情况下可以使用数组构建哈希表…...

打破界限,图文档与物料清单完美互联
在现代企业的产品开发过程中,图文档和物料清单是不可或缺的重要信息。然而,由于数据来源多样、格式繁杂,图文档与物料清单之间的信息传递往往存在障碍。而PDM系统(Product Data Management,产品数据管理)的…...

【电机绘图】:插补算法(一)—直线插补—逐点比较法
今日介绍学习一种使用电机作画、绘图、加工零件时需要使用的算法 : 插补算法 本文提供直线插补的概念基础,基本思路分析,C语言实现等,代码会直接贴出! 插补算法是指在数值计算或数据处理中,根据已有的数据…...

16-2_Qt 5.9 C++开发指南_使用样式表Qss自定义界面
进行本篇介绍学习前,请先参考链接01_1_Qt工程实践_Qt样式表Qss,后再结合本篇进行融合学习如何使用样式表定义界面。 文章目录 1. Qt样式表2. Qt样式表句法2.1 一般句法格式2.2 选择器 (selector)2.3 子控件(sub-controls)2.4 伪状…...

chatgpt openai API报错openai.error.APIConnectionError
openai.error.APIConnectionError: Error communicating with OpenAI: 报错信息无用方案问题查看urllib3版本方法 可行方案法1法2:自己找包安装 报错信息 raise error.APIConnectionError( openai.error.APIConnectionError: Error communicating with OpenAI: HTT…...

【果树农药喷洒机器人】Part1:研究现状分析以及技术路线介绍
本专栏介绍:付费专栏,持续更新机器人实战项目,欢迎各位订阅关注。 关注我,带你了解更多关于机器人、嵌入式、人工智能等方面的优质文章! 文章目录 一、项目背景二、国内外研究现状2.1 国内研究现状2.2 国外研究现状 三…...

QT-QTablewidget 设置选中某一行
要在 QTableWidget 中设置选中的行,可以使用 setCurrentItem() 函数来设置当前的 QTableWidgetItem。你可以通过调用 QTableWidget 的 item() 函数获得指定行和列的 QTableWidgetItem,然后通过将其传递给 setCurrentItem() 函数来设置选中的行。 下面是…...

[shell] 删除指定文件状态变更之前的文件及文件夹示例
参考文件 Linux查找某个指定时间要求的文件 脚本示例 #!/bin/bash# 删除指定时间之前文件,单位:分钟 ago75# 监控路径,必须使用使用绝对路径,防止意外删除重要文件 monitoring_path"/home/dev/test/test" # 使用find命令查找75分…...

代码中 isEmpty 和 isBlank 的区别
isEmpty系列 StringUtils.isEmpty() 是否为空. 可以看到 " " 空格是会绕过这种空判断,因为是一个空格,并不是严格的空值,会导致 isEmpty(" ")false tringUtils.isEmpty(null) true StringUtils.isEmpty("") true StringUtils.isEmpty(" …...

为什么要选择文件传输软件?有哪些最佳高速文件传输软件?
是否经历过这样的场景,正在努力地完成工作任务,但是由于制作的数据无法及时传送给合作伙伴,工作流程被打断了?这听起来很令人沮丧,对吧?可是,这种情况在现实中并不罕见。 因此,需要…...

aardio + customPlus 显示图片演示
看效果: 上代码: import win.ui; /*DSG{{*/ var winform win.form(text"aardio customPlus 显示图片演示 by 光庆";right927;bottom607) winform.add( button{cls"button";text"下一页";left664;top536;right794;bott…...

收集到大量的名片怎么转为excel?
来百度APP畅享高清图片 参加完展会或集体会议,是不是收了一大堆名片,保管起来超级麻烦,还容易丢三落四?别急,我们有办法!把名片转成电子版保存到电脑上就完美啦!但要是名片数量有点多࿰…...

JAVASE---方法的使用
方法概念及使用 什么是方法(method) 方法就是一个代码片段. 类似于 C 语言中的 "函数"。方法存在的意义(不要背, 重在体会): 1. 是能够模块化的组织代码(当代码规模比较复杂的时候)。 2. 做到代码被重复使用, 一份代码可以在多个位置使用。 3. 让代码更好理解更简单…...

CryptoJS.lib.WordArray.create、CryptoJS.enc.Base64介绍
1、CryptoJS.lib.WordArray.create:它是 CryptoJS 库中的一个方法,用于创建 WordArray 对象。WordArray 对象是 CryptoJS 库中用于处理二进制数据的基本数据类型。它通常用于表示加密算法的输入和输出。 2、CryptoJS.enc.Base64:它是 CryptoJ…...