我在广州学 Mysql 系列之 数据“表”的基本操作
ℹ️大家好,我是😆练小杰,今天主要讲得是Mysql数据表的基本操作内容~~
昨天讲了“Mysql 数据“库“的基本操作”~~
想要了解更多🈶️MYSQL 数据库的命令行总结!!!
“真相永远只有一个”——工藤新一 😎
文章目录
- 前言
- 创建数据表
- 主键约束
- 外键约束
- 非空约束
- 唯一性约束
- 默认约束
- 设置表的属性值自动增加
- 查看数据表结构
- 查看表基本结构语句`describe`
- 表详细结构语句`show create table`
- 修改数据表
- 修改表名
- 修改字段的数据类型
- 修改字段名
- 添加字段
- 删除字段
- 修改字段的排列位置
- 更改表的存储引擎
- 删除表的外键约束
- 删除数据表
- 删除无关联的表
- 删除被其它表关联的主表
- 综合案例(菜就多练)
- 创建员工表`tb_emp1`
- 建立数据表`tb_emp2`,设置主键为`id`
- 建立数据表`tb_emp 3`,其主键为`id`
- 定义数据表`tb_emp4`
- 定义数据表`tb_emp5`,且在`tb_emp5`表上创建外键约束
- 定义数据表`tb_emp6`,指定员工的名称不能为空
- 定义数据表`tb_dept2`,指定部门的名称唯一
- 定义数据表`tb_dept3`,指定部门的名称唯一(两种不同方式)
- 定义数据表`tb_emp7`,指定员工的部门编号默认为1111
- 定义数据表`tb_emp8`,指定员工的编号自动递增
- 分别使用`DESCRIBE`和`DESC`查看表`tb_dept1`和表`tb_emp1`的表结构
- 使用`SHOW CREATE TABLE`查看表`tb_emp1`的详细信息,SQL语句如下:
- 将数据表`tb_dept3`改名为`tb_deptment3`
- 将数据表`tb_dept1`中`name`字段的数据类型由`VARCHAR(22)`修改成`VARCHAR(30)`
- 将数据表`tb_dept1`中的`location`字段名称改为`loc`,数据类型不变
- 将数据表`tb_dept1`中的`loc`字段名称改为`location`,同时将数据类型变为`VARCHAR(60)`
- 在数据表`tb_dept1`中添加一个没有完整性约束的`INT`类型的字段`managerId`(部门经理编号)
- 在数据表`tb_dept1`中添加一个不能为空的`VARCHAR(12)`类型的字段`column1`
- 数据表`tb_dept1`中添加一个`INT`类型的字段`column2`
- 数据表`tb_dept1`中`name`列后添加一个`INT`类型的字段`column3`
- 删除数据表`tb_dept1`表中的`column2`字段
- 将数据表`tb_dept`中的`column1`字段修改为表的第一个字段
- 将数据表`tb_dept1`中的`column1`字段插入到`location`字段后面
- 将数据表`tb_deptment3`的存储引擎修改为`MyISAM`
- 删除数据表`tb_emp9`中的外键约束
- 删除数据表`tb_dept2`
- 数据库中创建两个关联表
- 删除被数据表`tb_emp`关联的数据表`tb_dept2`
前言
⚠️温馨提醒:最后有详细实例操作,前面文字概念比较多,需要给点耐心才能看完哦!!!
同时,如果需要练习可以直接点击文章目录—>“综合案例”
创建数据表
- 创建数据表的语句为
create table
CREATE TABLE <表名>(列名1,数据类型 [列级别约束条件] [默认值],列名2,数据类型 [列级别约束条件] [默认值],……[表级别约束条件]);
主键约束
- 主键,又称主码,是表中一列或多列的组合。主键约束(
Primary Key
constraint)要求主键列的数据唯一,并且不允许为空。 - 单字段主键
字段名 数据类型 PRIMARY KEY [默认值]
- 多字段联合主键
PRIMARY KEY [字段1, 字段2,. . ., 字段n]
外键约束
- 外键用来在两个表的数据之间建立链接,它可以是一列或者多列。
- 一个表可以有一个或多个外键。
- 一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。
[CONSTRAINT <外键名>] FOREIGN KEY 列名1 [ ,列名2,…] REFERENCES <主表名> 主键列1 [ ,主键列2,…]
非空约束
- 非空约束(
Not Null
constraint)指字段的值不能为空。 - 对于使用了非空约束的字段如果用户在添加数据时,没有指定值,数据库系统会报错。
字段名 数据类型 not null
唯一性约束
- 唯一性约束(
Unique
Constraint)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。
字段名 数据类型 UNIQUE
默认约束
- 默认约束(
Default
Constraint)指定某列 的默认值。
字段名 数据类型 DEFAULT 默认值
设置表的属性值自动增加
- 在数据库应用中,经常希望在每次插入新记录时,系统就会自动生成字段的主键值。
- 一个表只能有一个字段使用
AUTO_INCREMENT
约束,且该字段必须为主键的一部分 - 可通过为表主键添加
AUTO_INCREMENT
关键字来实现。
字段名 数据类型 AUTO_INCREMENT
查看数据表结构
查看表基本结构语句describe
- 该语句可以查看表的字段信息,其中包括:字段名、字段数据类型、是否为主键、是否有默认值等
DESCRIBE <表名>
或者
DESC <表名>
表详细结构语句show create table
- 用来显示数据表的所有创建语句
SHOW CREATE TABLE <表名\G>
修改数据表
修改表名
通过ALTER TABLE
语句来实现表名的修改的。
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
修改字段的数据类型
- 把字段的数据类型转换成另一种数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
修改字段名
- 修改表字段名的语法:
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
添加字段
- 在已有的表中添加新的字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];
删除字段
- 将数据表中的某个字段从表中移除
ALTER TABLE <表名> DROP <字段名>;
修改字段的排列位置
- 改变表中字段的相对位置
ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;
更改表的存储引擎
存储引擎是指MySQL数据库中表的存储类型。可以根据自己的需要,选择不同的引擎。(昨天讲过“引擎内容”)
ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
删除表的外键约束
- 外键一旦删除,就会解除主表和从表间的关联关系。
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>
删除数据表
删除无关联的表
- 使用
DROP TABLE
可以一次删除一个或多个没有被其它表关联的数据表
DROP TABLE [IF EXISTS]表1, 表2, . . . 表n;
删除被其它表关联的主表
- 在数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败。因为直接删除,将破坏表的对照完整性。
- 若必须要删除,可以先删除与之关联的子表,再删除父表,但是这样就同时删除了两个表中的数据。
- 有些情况下可能要保留子表,这时如要单独删除父表,只需将关联的表的外键约束条件取消,然后就可以删除父表。
综合案例(菜就多练)
创建员工表tb_emp1
- 首先创建数据库,SQL语句如下:
CREATE DATABASE test_db;
- 选择创建表的数据库,SQL语句如下:
USE test_db;
- 创建tb_emp1表,SQL语句为:
CREATE TABLE tb_emp1
(
id INT(11), //员工编号
name VARCHAR(25), //员工名字
deptId INT(11), //所属部门
salary FLOAT //工资);
语句执行完,就创建了一个名称为
tb_emp1
的数据表
- 使用
SHOW TABLES;
查看数据表是否创建成功
SHOW TABLES;
+-----------------------+
| Tables_in_ test_db |
+----------------------+
| tb_emp1 |
+----------------------+
1 row in set (0.00 sec)
可以看到,
test_db
数据库中已经有了数据表tb_tmp1
建立数据表tb_emp2
,设置主键为id
- SQL语句如下:
CREATE TABLE tb_emp2
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT
);
建立数据表tb_emp 3
,其主键为id
- SQL语句如下:
CREATE TABLE tb_emp3
(
id INT(11),
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
PRIMARY KEY(id)
);
上述两个例子结果一样,都会在id字段上设置主键约束
定义数据表tb_emp4
- 假设表中间没有主键
id
,为了唯一确定一个员工,可以把name、deptId
联合起来做为主键。
SQL语句如下:
CREATE TABLE tb_emp4(
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
PRIMARY KEY(name,deptId)
);
定义数据表tb_emp5
,且在tb_emp5
表上创建外键约束
- 创建一个部门表
tb_dept1
,SQL语句如下:
CREATE TABLE tb_dept1
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50)
);
- 定义数据表tb_emp5,让它的键
deptId
作为外键关联到tb_dept1
的主键id
,SQL语句为:
CREATE TABLE tb_emp5
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
);
以上语句都执行完后,在表
tb_emp5
上添加了名称为fk_emp_dept1
的外键约束,外键名称为deptId
,其依赖于表tb_dept1
的主键id
定义数据表tb_emp6
,指定员工的名称不能为空
SQL语句如下:
CREATE TABLE tb_emp6
(
id INT(11) PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId INT(11),
salary FLOAT
);
定义数据表tb_dept2
,指定部门的名称唯一
SQL语句如下:
CREATE TABLE tb_dept2
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) UNIQUE,
location VARCHAR(50)
);
定义数据表tb_dept3
,指定部门的名称唯一(两种不同方式)
SQL语句如下:
CREATE TABLE tb_dept3
(
id INT(11) PRIMARY KEY,
name VARCHAR(22),
location VARCHAR(50),
CONSTRAINT STH UNIQUE(name)
);
定义数据表tb_emp7
,指定员工的部门编号默认为1111
SQL语句如下:
CREATE TABLE tb_emp7
(
id INT(11) PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId INT(11) DEFAULT 1111,
salary FLOAT
);
定义数据表tb_emp8
,指定员工的编号自动递增
SQL语句如下:
CREATE TABLE tb_emp8
(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(25) NOT NULL,
deptId INT(11),
salary FLOAT
);
- 举个🌰,执行如下插入语句:
INSERT INTO tb_emp8 (name,salary)
VALUES('Dzq',0001), ('Lxj',0002),('Enson',0003);
语句执行完后,
tb_emp8
表中增加3条
记录,在这里并没有输入id
的值,但系统已经自动添加该值。
- 使用
SELECT
命令查看记录,如下所示
SELECT * FROM tb_emp8;
分别使用DESCRIBE
和DESC
查看表tb_dept1
和表tb_emp1
的表结构
- 查看
tb_dept1
表结构
SQL语句如下:
DESCRIBE tb_dept1;
+-----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(22) | NO | | NULL | |
| location | varchar(50) | YES | | NULL | |
+-----------+---------------+------+-----+---------+--------+
- 查看
tb_emp1
表结构,
SQL语句如下:
DESC tb_emp1;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id | int (11) | YES | | NULL | |
| name | varchar(25) | YES | | NULL | |
| deptId | int (11) | YES | | NULL | |
| salary | float | YES | | NULL | |
+---------+-------------+-------+-----+---------+-------+
使用SHOW CREATE TABLE
查看表tb_emp1
的详细信息,SQL语句如下:
SHOW CREATE TABLE tb_emp1;
+--------+----------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------+
| Table | Create Table|
+--------+----------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------+
| fruits | CREATE TABLE `fruits` (`f_id` char(10) NOT NULL,`s_id` int(11) NOT NULL,`f_name` char(255) NOT NULL,`f_price` decimal(8,2) NOT NULL,PRIMARY KEY (`f_id`),KEY `index_name` (`f_name`),KEY `index_id_price` (`f_id`,`f_price`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |
+--------+----------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------+
- 使用参数’
\G
’之后的结果如下:
SHOW CREATE TABLE tb_emp1\G
*************************** 1. row ***************************Table: tb_emp1
Create Table: CREATE TABLE `tb_emp1` (`id` int(11) DEFAULT NULL,`name` varchar(25) DEFAULT NULL,`deptId` int(11) DEFAULT NULL,`salary` float DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
将数据表tb_dept3
改名为tb_deptment3
- 使用
ALTER TABLE
将表tb_dept3
改名为tb_deptment3
SQL语句如下:
ALTER TABLE tb_dept3 RENAME tb_deptment3;
将数据表tb_dept1
中name
字段的数据类型由VARCHAR(22)
修改成VARCHAR(30)
- 执行修改表名操作之前,使用
DESC
查看tb_dept1
表结构,结果如下:
DESC tb_dept1;
+----------+---------------+---------+--------+-------------+-------+
| Field | Type | Null | Key |Default | Extra |
+----------+---------------+---------+--------+-------------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(22) | YES | | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+---------------+--------+---------+-------------+-------+
3 rows in set (0.00 sec)
可以看到现在
name
字段的数据类型为VARCHAR(22)
- 下面修改其类型,输入如下语句:
ALTER TABLE tb_dept1 MODIFY name VARCHAR(30);
将数据表tb_dept1
中的location
字段名称改为loc
,数据类型不变
SQL语句如下:
ALTER TABLE tb_dept1 CHANGE location loc VARCHAR(50);
将数据表tb_dept1
中的loc
字段名称改为location
,同时将数据类型变为VARCHAR(60)
SQL语句如下:
ALTER TABLE tb_dept1 CHANGE loc location VARCHAR(60);
在数据表tb_dept1
中添加一个没有完整性约束的INT
类型的字段managerId
(部门经理编号)
SQL语句如下:
ALTER TABLE tb_dept1 ADD managerId INT(10);
在数据表tb_dept1
中添加一个不能为空的VARCHAR(12)
类型的字段column1
SQL语句如下:
ALTER TABLE tb_dept1 ADD column1 VARCHAR(12) not null;
数据表tb_dept1
中添加一个INT
类型的字段column2
SQL语句如下:
ALTER TABLE tb_dept1 ADD column2 INT(11) FIRST;
数据表tb_dept1
中name
列后添加一个INT
类型的字段column3
SQL语句如下:
ALTER TABLE tb_dept1 ADD column3 INT(11) AFTER name;
删除数据表tb_dept1
表中的column2
字段
SQL语句如下:
ALTER TABLE tb_dept1 DROP column2;
将数据表tb_dept
中的column1
字段修改为表的第一个字段
SQL语句如下:
ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) FIRST;
将数据表tb_dept1
中的column1
字段插入到location
字段后面
SQL语句如下:
ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) AFTER location;
将数据表tb_deptment3
的存储引擎修改为MyISAM
- 在修改存储引擎之前,先使用
SHOW CREATE TABLE
查看表tb_deptment3
当前的存储引擎,如下所示:
SHOW CREATE TABLE tb_deptment3 \G
*************************** 1. row ***************************Table: tb_deptment3
Create Table: CREATE TABLE `tb_deptment3` (`id` int(11) NOT NULL,`name` varchar(22) DEFAULT NULL,`location` varchar(50) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `STH` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)
可看到,表
tb_deptment3
当前的存储引擎为ENGINE=InnoDB
- 接下来修改存储引擎类型,输入如下SQL语句:
ALTER TABLE tb_deptment3 ENGINE=MyISAM;
- 使用
SHOW CREATE TABLE
再次查看表tb_deptment3
的存储引擎,发现表tb_dept
的存储引擎变成了“MyISAM
”,如下所示:
SHOW CREATE TABLE tb_deptment3 \G
*************************** 1. row ***************************Table: tb_deptment3
Create Table: CREATE TABLE `tb_deptment3` (`id` int(11) NOT NULL,`name` varchar(22) DEFAULT NULL,`location` varchar(50) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `STH` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)
删除数据表tb_emp9
中的外键约束
- 首先创建表
tb_emp9
,创建外键deptId
关联tb_dept1
表的主键id
,SQL语句如下:
CREATE TABLE tb_emp9
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
CONSTRAINT fk_emp_dept FOREIGN KEY (deptId) REFERENCES tb_dept1(id)
);
- 使用
SHOW CREATE TABLE
查看表tb_emp9
的结构,如下:
SHOW CREATE TABLE tb_emp9 \G
*************************** 1. row ***************************Table: tb_emp9
Create Table: CREATE TABLE `tb_emp9` (`id` int(11) NOT NULL,`name` varchar(25) DEFAULT NULL,`deptId` int(11) DEFAULT NULL,`salary` float DEFAULT NULL,PRIMARY KEY (`id`),KEY `fk_emp_dept` (`deptId`),CONSTRAINT `fk_emp_dept` FOREIGN KEY (`deptId`) REFERENCES `tb_dept1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)
可看到,已经成功添加了表的外键
- 下面删除外键约束,SQL语句如下:
ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept;
执行完之后,会删除表
tb_emp9
的外键约束
- 使用
SHOW CREATE TABLE
再次查看表tb_emp9
结构,结果如下:
SHOW CREATE TABLE tb_emp9 \G
*************************** 1. row ***************************Table: tb_emp9
Create Table: CREATE TABLE `tb_emp9` (`id` int(11) NOT NULL,`name` varchar(25) DEFAULT NULL,`deptId` int(11) DEFAULT NULL,`salary` float DEFAULT NULL,PRIMARY KEY (`id`),KEY `fk_emp_dept` (`deptId`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)
删除数据表tb_dept2
SQL语句如下:
DROP TABLE IF EXISTS tb_dept2;
数据库中创建两个关联表
- 首先,创建表
tb_dept2
SQL语句如下:
CREATE TABLE tb_dept2
(
id INT(11) PRIMARY KEY,
name VARCHAR(22),
location VARCHAR(50)
);
- 接下来创建表
tb_emp
SQL语句如下:
CREATE TABLE tb_emp
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
CONSTRAINT fk_emp_dept FOREIGN KEY (deptId) REFERENCES tb_dept2(id)
);
- 用
SHOW CREATE TABLE
命令查看表tb_emp
的外键约束,如下:
SHOW CREATE TABLE tb_emp\G
*************************** 1. row ***************************Table: tb_emp
Create Table: CREATE TABLE `tb_emp` (`id` int(11) NOT NULL,`name` varchar(25) DEFAULT NULL,`deptId` int(11) DEFAULT NULL,`salary` float DEFAULT NULL,PRIMARY KEY (`id`),KEY `fk_emp_dept` (`deptId`),CONSTRAINT `fk_emp_dept` FOREIGN KEY (`deptId`) REFERENCES `tb_dept2` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)
可看到,以上执行结果创建了两个关联表
tb_dept2
和表tb_emp
,其中tb_emp
表为子表,具有名称为fk_emp_dept
的外键约束,tb_dept2
为父表,其主键id
被子表tb_emp
所关联
删除被数据表tb_emp
关联的数据表tb_dept2
- 首先直接删除父表
tb_dept2
,输入删除语句如下:
DROP TABLE tb_dept2;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
可看到,如前所述,在存在外键约束时,主表不能被直接删除。
- 接下来,解除关联子表
tb_emp
的外键约束,
SQL语句如下:
ALTER TABLE tb_emp DROP FOREIGN KEY fk_emp_dept;
语句成功执行后,将取消表
tb_emp
和表tb_dept2
之间的关联关系
- 这时,可以输入删除语句,将原来的父表
tb_dept2
删除,SQL语句如下:
DROP TABLE tb_dept2;
- 最后通过
SHOW TABLES;
查看数据表列表,如下所示:
show tables;
+---------------------+
| Tables_in_test_db |
+---------------------+
| tb_dept |
| tb_deptment3 |
.....省略部分表
可看到,数据表列表中已经不存在名称为tb_dept2
的表
好了,快乐的时光总是过得很快,mysql数据表的基本操作内容到此结束,下周再见啦!!!
😆想要了解更多内容请点击“练小杰的CSDN”
ℹ️欢迎各位在评论区踊跃讨论,积极提出问题,解决困惑!!!
相关文章:

我在广州学 Mysql 系列之 数据“表”的基本操作
ℹ️大家好,我是😆练小杰,今天主要讲得是Mysql数据表的基本操作内容~~ 昨天讲了“Mysql 数据“库“的基本操作”~~ 想要了解更多🈶️MYSQL 数据库的命令行总结!!! “真相永远只有一个”——工藤…...

auto-gptq安装以及不适配软硬件环境可能出现的问题及解决方式
目录 1、auto-gptq是什么?2、auto-gptq安装3、auto-gptq不正确安装可能会出现的问题(1)爆出:CUDA extension not installed.(2)没有报错但是推理速度超级慢 1、auto-gptq是什么? Auto-GPTQ 是一…...

【R语言】基础知识
一、对象与变量 R语言中的所有事物都是对象,如向量、列表、函数,变量、甚至环境等。它的所有代码都是基于对象object的操作,变量只是调用对象的手段。 1、对象 在R语言中,对计算机内存的访问是通过对象实现的。 # 字符型向量 …...

【一本通】虫洞
【一本通】虫洞 C语言代码C代码JAVA代码 💐The Begin💐点点关注,收藏不迷路💐 John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之…...

python爬虫--小白篇【爬虫实践】
一、前言 1.1、王者荣耀皮肤爬虫 根据王者荣耀链接,将王者荣耀的全部英雄的全部皮肤图片爬取保存到本地。经过分析得到任务的三个步骤: 根据首页全部英雄列表连接获取全部英雄的名称hero_name以及对应的hero_id;根据单个英雄的hero_name和h…...

Unity背包道具拖拽(极简版实现)
(感觉Csdn代码页面可以再大一点或者加个放大功能 不然得划着看不太舒服) 1.关键接口,三个拖拽相关的 2.关键参数,PointerEventData 一直没仔细看过,其实有包含鼠标相关的很多参数,鼠标点击次数ÿ…...

spark读取普通文件
spark读取普通文件 txt文件 """ 将一行数据当做一个字段,需要自己切割 字段名称为value 表结构 可以从sql中搞 """ df spark.read.text("../../data/wordcount/input/data.txt") df spark.read.format("text"…...

MySQL SQL语句性能优化
MySQL SQL语句性能优化指南 一、查询设计优化1. 避免 SELECT *2. 使用 WHERE 进行条件过滤3. 避免在索引列上使用函数和表达式4. 使用 LIMIT 限制返回行数5. 避免使用子查询6. 优化 JOIN 操作7. 避免全表扫描 二、索引优化1. 使用合适的索引2. 覆盖索引3. 索引选择性4. 多列索引…...

【蓝桥杯每日一题】技能升级
技能升级 2024-12-10 蓝桥杯每日一题 技能升级 二分 题目大意 一个角色有 N 种可以增加攻击力的技能,对于第 i 个技能首次升级可以提升 A i A_i Ai 点攻击力,随后的每次升级增加的攻击力都会减少 B i B_i Bi 。升级 ⌈ A i B i ⌉ \lceil \frac{A…...

css 实现在一条线上流动小物体(offset-path)
直接贴代码,留几个参考网址给大家 【SVG】路径<Path>标签详解,一次搞懂所有命令参数 探秘神奇的运动路径动画 Motion Path <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport&quo…...

探索 Robyn 框架 —— 下一代高性能 Web 框架
技术博客:探索 Robyn 框架 —— 下一代高性能 Web 框架 什么是 Robyn? Robyn 是一个用 Rust 编写的高性能 Web 框架,旨在通过极简设计和高效并发处理,帮助开发者快速构建可扩展的现代 Web 应用。得益于 Rust 的内存安全性和性能…...

STL容器-map P3613【深基15.例2】寄包柜 普及-
题目来源:洛谷题库 文章目录 map例题map知识点map使用注意:map的常用用法 map例题 P3613【深基15.例2】寄包柜 普及- 题意 根据数据插入/查询 思路 map键值对可以根据柜子编号查找物品,但是柜子又有很多个,考虑数组或者map数组…...

【MySQL 进阶之路】了解 性能优化 与 设计原则
1.B树的优势 “矮胖”结构: 矮:B树的每个节点存储更多的关键字,从而减少了树的层级(最多三层),减少了磁盘I/O操作,提高了查询效率。胖:叶子节点存储实际的数据,并使用双…...

MySQL之数据库三大范式
一、什么是范式? 范式是数据库遵循设计时遵循的一种规范,不同的规范要求遵循不同的范式。 (范式是具有最小冗余的表结构) 范式可以 提高数据的一致性和 减少数据冗余和 更新异常的问题 数据库有六种范式(1NF/2NF/3NF…...

[大数据]Hudi
G:\Bigdata\17.hudi\大数据技术之数据湖Hudi 第1章 Hudi概述 1.1 Hudi简介 Apache Hudi(Hadoop Upserts Delete and Incremental)是下一代流数据湖平台。Apache Hudi将核心仓库和数据库功能直接引入数据湖。Hudi提供了表、事务、高效的upserts/delete、高级索引、流摄取服…...

jenkins harbor安装
Harbor是一个企业级Docker镜像仓库。 文章目录 1. 什么是Docker私有仓库2. Docker有哪些私有仓库3. Harbor简介4. Harbor安装 1. 什么是Docker私有仓库 Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库Docker Hub,而与Dock…...

JavaScript 高级特性与 ES6 新特性:正则表达式的深度探索
在现代 JavaScript 开发中,正则表达式(Regular Expressions)和高级特性、ES6 新特性的结合使用,能够极大地提升代码的简洁性、可读性和功能性。本文将深入探讨 JavaScript 中的正则表达式及其在高级特性和 ES6 新特性中的应用&…...

正则表达式——参考视频B站《奇乐编程学院》
智能指针 一、背景🎈1.1. 模式匹配🎈1.2. 文本替换🎈1.3. 数据验证🎈1.4. 信息提取🎈1.5. 拆分字符串🎈1.6. 高级搜索功能 二、原料2.1 参考视频2.2 验证网址 三、用法3.1 限定符3.1.1 ?3.1.2 *3.1.3 3.1.…...

【FFmpeg】FFmpeg 内存结构 ⑥ ( 搭建开发环境 | AVPacket 创建与释放代码分析 | AVPacket 内存使用注意事项 )
文章目录 一、搭建开发环境1、开发环境搭建参考2、项目搭建 二、AVPacket 创建与释放代码分析1、AVPacket 创建与释放代码2、Qt 单步调试方法3、单步调试 - 分析 AVPacket 创建与销毁代码 三、AVPacket 内存使用注意事项1、谨慎使用 av_init_packet 函数2、av_init_packet 函数…...

【多模态文档智能】OCR-free感知多模态大模型技术链路及训练数据细节
目前的一些多模态大模型的工作倾向于使用MLLM进行推理任务,然而,纯OCR任务偏向于模型的感知能力,对于文档场景,由于文字密度较高,现有方法往往通过增加图像token的数量来提升性能。这种策略在增加新的语言时࿰…...

Mybatis动态sql执行过程
动态SQL的执行原理主要涉及到在运行时根据条件动态地生成SQL语句,然后将其发送给数据库执行。以下是动态SQL执行原理的详细解释: 一、接收参数 动态SQL首先会根据用户的输入或系统的条件接收参数。这些参数可以是查询条件、更新数据等,它们…...

leetcode 31 Next Permutation
题意 找到下一个permutation是什么,对于一个数组[1,2,3],下一个排列就是[1, 3, 2] 链接 https://leetcode.com/problems/next-permutation/ 思考 首先任何一个permutation满足一个性质,从某个位置往后一定是降序。…...

每日一练 | 华为 eSight 创建的缺省角色
01 真题题目 下列选项中,不属于华为 eSight 创建的缺省角色的是: A. Administrator B. Monitor C. Operator D. End-User 02 真题答案 D 03 答案解析 华为 eSight 是一款综合性的网络管理平台,提供了多种管理和监控功能。 为了确保不同用…...

PyTorch基本使用-自动微分模块
学习目的:掌握自动微分模块的使用 训练神经网络时,最常用的算法就是反向传播。在该算法中,参数(模型权重)会根据损失函数关于对应参数的梯度进行调整。为了计算这些梯度,PyTorch 内置了名为 torch.autogra…...

libevent-Reactor设计模式【1】
一、Libevent概述 1、简介 Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大&#…...

奇奇怪怪的错误-Tag和space不兼容
报错信息如下: TabError: inconsistent use of tabs and spaces in indentation make: *** [Makefile:24: train] Error 1不能按Tab,要老老实实按space 不过可以在编辑器里面改,把它们调整成一致的;...

29.攻防世界ics-06
ics-06 难度:1 方向:Web 题目描述: 云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。 进入靶场 发现有一处能点动 多了个id1 我其实尝试改过id数,不过没什么变化…...

强化学习路径规划:基于SARSA算法的移动机器人路径规划,可以更改地图大小及起始点,可以自定义障碍物,MATLAB代码
一、SARSA算法概述 SARSA(State-Action-Reward-State-Action)是一种在线强化学习算法,用于解决决策问题,特别是在部分可观测的马尔可夫决策过程(POMDPs)中。SARSA算法的核心思想是通过与环境的交互来学习一…...

【MFC】如何读取rtf文件并进行展示
tf是微软的一个带格式的文件,比word简单,我们可以用写字板等程序打开编辑。下面以具体实例讲解如何在自己程序中展示rtf文件。 首先使用VS2022创建一个MFC的工程。 VIEW类需要选择richview类,用于展示,如下图: 运行效…...

Vulhub:Log4j[漏洞复现]
CVE-2017-5645(Log4j反序列化) 启动靶场环境 docker-compose up -d 靶机IPV4地址 ifconfig | grep eth0 -A 5 ┌──(root㉿kali)-[/home/kali/Desktop/temp] └─# ifconfig | grep eth0 -A 5 eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 in…...