MySQL基础 数据库表的增删改

news/2025/1/14 21:43:26/文章来源:https://www.cnblogs.com/03270925yhd/p/18671430

Mysql

数加科技整理

一、原理定义概念

定义

数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。

数据库是长期储存在计算机内、有组织的、可共享的数据集合

分类:

​ 非结构化数据:

​ 数据相对来讲没有固定的特点,这种数据非常不便于检索

​ 但是生活中很多都是非结构化数据

​ 半结构化数据 :

​ 数据之间有着相同的存储结构 属性:值

​ 每一条数据的属性可以不同

​ 张三:

​ 三号学生

​ 李四:

​ 结构化数据 :

​ 创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的

数据。

​ 数据之间有着相同的存储结构 属性 值

​ 同一个结构模型中每一条数据的属性都是相同的,但是值有可能不同,这些数据非常便于存储和管理。

​ 于是针对这些数据,专门设计一套数据存储的软件,现在我们说的数据库主要用来存储这些数据

问题

​ 我们所有的数据库都放在软件中

​ 我们要获取到数据,就需要使用软件给我们提供的访问数据的接口

​ 最痛苦的就是程序员,我们就要为存储数据学习不同的数据库

​ 于是有人开始倡导:使用统一的操作数据库的方式

SQL(Structured Query Language)结构化查询语言

​ 全世界所有的结构化数据库都适用

​ 分类

​ DDL:数据库定义语言(定义数据库的一些组件 表 索引 视图 自增序列...)

​ DML:数据库操作语言(添加 删除 修改) CRUD

DQL:数据库查询语言 查询

​ DCL:数据库控制语言(权限 用户管理...) DBA工程师

​ SQL语言属于第四代语言,而java c++ 才属于第三代

安装Mysql.......

二、数据库 管理

安装上数据库之后,就需要开始学习指令了,通过指令让MySQL去做出一些文件操作。

image-20240126173409500

如果将数据库管理系统与之前的文件管理做类比的话:

数据库管理系统 文件管理
数据库 文件夹
数据表 文件夹下的excel文件

接下来,我们先学习 数据库(文件夹)相关操作的指令。

image-20240126173426879

2.1 内置客户端操作

当连接上MySQL之后,执行如下指令(一般称为SQL语句),就可以对MySQL的数据进行操作。

  • 查看当前所有的数据库: show databases;

  • 创建数据库:create database 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

    create database bigdata29;create database bigdata29 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
  • 删除数据库:drop database 数据库名;

  • 进入数据库(进入文件):use 数据库;

示例:

# 1.登录MySQL
[root@master ~]# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25 MySQL Community Server (GPL)Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> # 2.查看当前数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.19 sec)# 3. 创建数据库:  create database 数据库名 default charset 编码 collate 排序规则;
mysql> create database bigdata19 default charset utf8 collate utf8_general_ci;
Query OK, 1 row affected (0.10 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bigdata19          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)# 4. 删除数据库
mysql> drop database bigdata19;
Query OK, 0 rows affected (0.14 sec)# 5. 查看当前数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)# 6. 进入数据库
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed# 7. 进入mysql数据库(文件夹),查看此数据库下的所有表。
mysql>  show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)# 8. 退出
mysql>exit;

三、数据表 管理

3.1 内置客户端操作

数据表常见操作的指令:

  • 进入数据库 use 数据库;,查看当前所有表:show tables;

  • 创建表结构
    image-20240126173438353

    -- 注意:今后工作中,表名不要以中文起名字,一律使用英文
    -- 尤其是今后你们毕业后从事大数据开发中的有一个项目类别叫做数据中台(数据仓库)
    create table 表名(列名  类型,列名  类型,列名  类型,列名  类型
    )default charset=utf8;-- 安徽省合肥市蜀山区天气
    -- ah_hf_ss
    -- anhui_hefei_shushan
    create table students(id int,name varchar(255),email varchar(255),age int)default charset=utf8;
    
    create table tb1(id int,name varchar(16)
    )default charset=utf8;
    
    create table tb2(id int,name varchar(16) not null,   -- 不允许为空email varchar(32) null,      -- 允许为空(默认)age int
    )default charset=utf8;
    
    create table tb3(id int,name varchar(16) not null,   -- 不允许为空email varchar(32) null,      -- 允许为空(默认)age int default 3            -- 插入数据时,如果不给age列设置值,默认值:3
    )default charset=utf8;
    
    create table tb4(id int primary key,			 -- 主键(不允许为空、不能重复)name varchar(16) not null,   -- 不允许为空email varchar(32) null,      -- 允许为空(默认)age int default 3            -- 插入数据时,如果不给age列设置值,默认值:3
    )default charset=utf8;
    
  主键一般用于表示当前这条数据的ID编号(类似于人的身份证),需要我们自己来维护一个不重复的值,比较繁琐。所以,在数据库中一般会将主键和自增结合。create table tb5(id int not null auto_increment primary key,name varchar(16) not null,email varchar(32) null,age int default 3)default charset=utf8;

注意:一个表中只能有一个自增列【自增列,一般都是主键】。

  • 删除表 drop table 表名;

  • 清空表 delete from 表名;truncate table 表名;(速度快、无法回滚撤销等)

  • 修改表

    • 添加列

      alter table 表名 add 列名 类型;
      alter table 表名 add 列名 类型 DEFAULT 默认值;
      alter table 表名 add 列名 类型 not null default 默认值;
      alter table 表名 add 列名 类型 not null primary key auto_increment;
      
    • 删除列

      alter table 表名 drop column 列名;
      
    • 修改列 类型

      alter table 表名 modify column 列名 类型;
      
    • 修改列 类型 + 名称

      alter table 表名 change 原列名 新列名 新类型 额外的配置;
      
      alter table  tb change id nid int not null;
      alter table  tb change id id int not null default 5;
      alter table  tb change id id int not null primary key auto_increment;alter table  tb change id id int; -- 允许为空,删除默认值,删除自增。
      
    • 修改列 默认值

      ALTER TABLE 表名 ALTER 列名 SET DEFAULT 1000;
      
    • 删除列 默认值

      ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;
      
    • 添加主键

      alter table 表名 add primary key(列名);
      
    • 删除主键

      alter table 表名 drop primary key;
      
  • 常见列类型

    create table 表(id int,name varchar(16)
    )default charset=utf8;
    
    • int[(m)][unsigned][zerofill]

      int				表示有符号,取值范围:-2147483648 ~ 2147483647
      int unsigned	表示无符号,取值范围:0 ~ 4294967295
      int(5)zerofill	仅用于显示,当不满足5位时,按照左边补0,例如:00002;满足时,正常显示。
      
      mysql> create table L1(id int, uid int unsigned, zid int(5) zerofill) default charset=utf8;
      Query OK, 0 rows affected (0.03 sec)mysql> insert into L1(id,uid,zid) values(1,2,3),(2147483641,4294967294,300000);
      Query OK, 1 row affected (0.00 sec)mysql> insert into L1(id,uid,zid) values(2147483641,4294967294,300000);
      Query OK, 1 row affected (0.00 sec)mysql> select * from L1;
      +------------+------------+--------+
      | id         | uid        | zid    |
      +------------+------------+--------+
      |          1 |          2 |  00003 |
      | 2147483641 | 4294967294 | 300000 |
      +------------+------------+--------+
      2 rows in set (0.00 sec)mysql> insert into L1(id,uid,zid) values(214748364100,4294967294,300000);
      ERROR 1264 (22003): Out of range value for column 'id' at row 1
      mysql>
      
    • tinyint[(m)] [unsigned] [zerofill]

      有符号,取值范围:-128 ~ 127.
      无符号,取值范围:0 ~ 255
      
    • bigint[(m)][unsigned][zerofill]

      有符号,取值范围:-9223372036854775808 ~ 9223372036854775807
      无符号,取值范围:0  ~  18446744073709551615
      
    • decimal[(m[,d])] [unsigned] [zerofill]

      准确的小数值,m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。xxxxx.xx
      decimal(7,2)  1.1例如:
      create table L2(id int not null primary key auto_increment,salary decimal(8,2)
      )default charset=utf8;
      
      mysql> create table L2(id int not null primary key auto_increment,salary decimal(8,2))default charset=utf8;
      Query OK, 0 rows affected (0.03 sec)mysql> insert into L2(salary) values(1.28);
      Query OK, 1 row affected (0.01 sec)mysql> insert into L2(salary) values(5.289);
      Query OK, 1 row affected, 1 warning (0.00 sec)mysql> insert into L2(salary) values(5.282);
      Query OK, 1 row affected, 1 warning (0.00 sec)mysql> insert into L2(salary) values(512132.28);
      Query OK, 1 row affected (0.00 sec)mysql> insert into L2(salary) values(512132.283);
      Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from L2;
      +----+-----------+
      | id | salary    |
      +----+-----------+
      |  1 |      1.28 |
      |  2 |      5.29 |
      |  3 |      5.28 |
      |  4 | 512132.28 |
      |  5 | 512132.28 |
      +----+-----------+
      5 rows in set (0.00 sec)mysql> insert into L2(salary) values(5121321.283);
      

    ERROR 1264 (22003): Out of range value for column 'salary' at row 1
    mysql>

    • FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
      单精度浮点数,非准确小数值,m是数字总个数,d是小数点后个数。
    
    • DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
      双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
    
    • char(m)
      定长字符串,m代表字符串的长度,最多可容纳255个字符。定长的体现:即使内容长度小于m,也会占用m长度。例如:char(5),数据是:yes,底层也会占用5个字符;如果超出m长度限制(默认MySQL是严格模式,所以会报错)。如果在配置文件中加入如下配置,sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"保存并重启,此时MySQL则是非严格模式,此时超过长度则自动截断(不报错)。。注意:默认底层存储是固定的长度(不够则用空格补齐),但是查询数据时,会自动将空白去除。 如果想要保留空白,在sql-mode中加入 PAD_CHAR_TO_FULL_LENGTH 即可。查看模式sql-mode,执行命令:show variables  like 'sql_mode';一般适用于:固定长度的内容。create table L3(id int not null primary key auto_increment,name varchar(5),depart char(3))default charset=utf8;insert into L3(name,depart) values("alexsb","sbalex");
    
    • varchar(m)
      变长字符串,m代表字符串的长度,最多可容纳65535个字节。变长的体现:内容小于m时,会按照真实数据长度存储;如果超出m长度限制((默认MySQL是严格模式,所以会报错)。如果在配置文件中加入如下配置,sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"保存并重启mysql服务,此时MySQL则是非严格模式,此时超过长度则自动截断(不报错)。例如:create table L3(id int not null primary key auto_increment,name varchar(5),depart char(3))default charset=utf8;
    
    mysql> create table L3(id int not null primary key auto_increment,name varchar(5),depart char(3))default charset=utf8;
    Query OK, 0 rows affected (0.03 sec)-- 插入多行
    mysql> insert into L3(name,depart) values("wu","WU"),("xiaohu","ALS");
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0mysql> select * from L3;
    +----+-------+--------+
    | id | name  | depart |
    +----+-------+--------+
    |  1 | wu    | WU     |
    |  2 | xiaohu | ALS    |
    +----+-------+--------+
    2 rows in set (0.00 sec)-- 非严格模式下,不会报错。
    mysql> insert into L3(name,depart) values("xiaohuqi","ALS");
    ERROR 1406 (22001): Data too long for column 'name' at row 1
    mysql> insert into L3(name,depart) values("xiaohu","ALSB");
    ERROR 1406 (22001): Data too long for column 'depart' at row 1
    mysql>-- 如果 sql-mode 中加入了 PAD_CHAR_TO_FULL_LENGTH ,则查询时char时空白会保留。
    mysql> select name,length(name),depart,length(depart) from L3;
    +-------+--------------+--------+----------------+
    | name  | length(name) | depart | length(depart) |
    +-------+--------------+--------+----------------+
    | wu    |            2 | WU     |              3 |
    | xiaohu |            5 | ALS    |              3 |
    +-------+--------------+--------+----------------+
    4 rows in set (0.00 sec)
    mysql>
    
    • text

      text数据类型用于保存变长的大字符串,可以组多到65535 (2**16 − 1)个字符。一般情况下,长文本会用text类型。例如:文章、新闻等。
      
      create table L4(id int not null primary key auto_increment,title varchar(128),
      content text
      )default charset=utf8;
      
    
    - `mediumtext`

    A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.

    
    - `longtext`

    A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1)

    
    - `datetime`

    YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)

    
    - `timestamp`

    YYYY-MM-DD HH:MM:SS(1970-01-01 00:00:00/2037年)

    
    

    对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储,查询时,将其又转化为客户端当前时区进行返回。

    对于DATETIME,不做任何改变,原样输入和输出。

    
    ```sql
    mysql> create table L5(-> id int not null primary key auto_increment,-> dt datetime,-> tt timestamp-> )default charset=utf8;
    Query OK, 0 rows affected (0.03 sec)mysql> insert into L5(dt,tt) values("2025-11-11 11:11:44", "2025-11-11 11:11:44");mysql> select * from L5;
    +----+---------------------+---------------------+
    | id | dt                  | tt                  |
    +----+---------------------+---------------------+
    |  1 | 2025-11-11 11:11:44 | 2025-11-11 11:11:44 |
    +----+---------------------+---------------------+
    1 row in set (0.00 sec)mysql> show variables like '%time_zone%';
    +------------------+--------+
    | Variable_name    | Value  |
    +------------------+--------+
    | system_time_zone | CST    | 
    | time_zone        | SYSTEM |
    +------------------+--------+
    2 rows in set (0.00 sec)
    -- “CST”指的是MySQL所在主机的系统时间,是中国标准时间的缩写,China Standard Time UT+8:00mysql> set time_zone='+0:00';
    Query OK, 0 rows affected (0.00 sec)mysql> show variables like '%time_zone%';
    +------------------+--------+
    | Variable_name    | Value  |
    +------------------+--------+
    | system_time_zone | CST    |
    | time_zone        | +00:00 |
    +------------------+--------+
    2 rows in set (0.01 sec)mysql> select * from L5;
    +----+---------------------+---------------------+
    | id | dt                  | tt                  |
    +----+---------------------+---------------------+
    |  1 | 2025-11-11 11:11:44 | 2025-11-11 03:11:44 |
    +----+---------------------+---------------------+
    1 row in set (0.00 sec)
    
    • date
      YYYY-MM-DD(1000-01-01/9999-12-31)
    
    • time
      HH:MM:SS('-838:59:59'/'838:59:59')
    

    今后建表的时候,遇到整数默认用int 长整数bigint, 如果遇到字符串,默认用varchar(xx), 小数默认decimal(m,n), 遇到时间,默认使用timestamp。

    MySQL还有很多其他的数据类型,例如:set、enum、TinyBlob、Blob、MediumBlob、LongBlob 等,详细见官方文档:https://dev.mysql.com/doc/refman/5.7/en/data-types.html,上述就是关于数据表的一些基本操作。

四、SQL-DQL

概念

​ 关系模型中常用的概念:

​ 关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名

​ 记录:可以理解为二维表中的一行,在数据库中经常被称为记录

​ 字段:可以理解为二维表中的一列,在数据库中经常被称为字段

​ 域:属性的取值范围,也就是数据库中某一列的取值限制

​ 关键字:一组可以唯一标识记录的属性,数据库中常称为主键,由一个或多个列组成

​ 关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, ... ... ,属性N),在数据库中成为表结构

scott用例表

​ emp 员工信息表

表名 emp
字段名 中文 类型 是否可以为空 默认值 其他说明
empno 雇员编号 int(11) 主键
ename 雇员名称 varchar(255)
job 岗位工种 varchar(255)
mgr 上级 int(11)
hiredate 雇佣日期 date
sal 工资 decimal
comm 奖金|津贴 decimal
deptno 部门编号 int(11)
备注

​ dept 部门信息表

表名 dept
主键 deptno
字段名 中文 类型 是否可以为空 默认值 其他说明
deptno 部门编号 int(11) 主键
dname 部门名称 varchar (255)
loc 地址 varchar2(255)
备注

​ salgrade 薪资区间表

表名 salgrade
主键
字段名 中文 类型 是否可以为空 默认值 其他说明
grade 等级 int(11)
losal 最低 int(11)
hisal 最高 int(11)

DQL语句

格式

​ select 列名*N from 表名 where 查询条件1 and/or 查询条件2 group by 列 Having 分组条件 Order by 排序

规则

​ sql在书写的时候除了查询条件之外,大小写都可以

​ select * from user where uname ='zs';

​ SELECT * FROM USER WHERE UNAME = 'zs';

​ 保持大小写风格

​ 去公司之后需要看其他员工SQL大小写

​ -- 属于SQL语句的注释

​ 所有的查询条件为字符串时,需要用'xxx'进行修饰,否则就会当做列名去处理

select查询列和别名

--查询所有员工信息(*通配符,默认查询所有的列)--查询员工的姓名--查询员工的薪资--查询员工的姓名和薪资--查询员工的姓名和薪资,推荐使用单引号--查询到的数据可以直接进行运算

select的条件查询

​ 普通条件查询 => < != <> >= <=

--查询员工编号为7369的员工--查询员工姓名叫做SMITH--查询薪资大于2000的员工姓名--查询工作为SALESMAN--查询部门在20的员工--查询薪资不等于2000的员工

​ in 在某个范围中查找

--查询 员工编号为 7369 7788 7881的员工信息--查询 员工编号除了 7369 7788 7881之外的所有员工信息--查询除了10,20部门之外的所有员工

​ null值查询

--查询不发放津贴的员工信息--查询发放津贴的员工信息

​ 范围比较

-- 查询薪资范围在1000-4000之间的员工信息 [1000.4000]

​ 模糊查询 % _

--查询名字中有S的员工--查询名字最后一个字符是S--查询名字第一个字符是S--查询名字第二个字符是A--查询名字中有%的员工
--查询名字第8 188个字符是A,这是需要一些特殊的手段-》函数
-- % 代表任意字符的任意次数 _任意字符的一次

​ 多条件联合查询 and or

--and 必须前后同时满足条件才能返回结果
--or前后有一个满足条件就能返回结果--查询在20部门并且薪资大于2000的员工--查询在20部门或者薪资大于2000的员工--查询不在20部门并且薪资小于2000的员工

select结果排序 order by

使用asc是升序排列(默认),使用desc可以降序排序

​ 单列

--按照薪资进行排序(默认升序)--按照薪资进行排序(降序)--按照薪资进行排序(升序)--按照津贴进行排序(null排在最前面)

​ 多列

--多个排序的列--多个排序的列(部门升序 薪资降序)--多个排序的列(工作,薪资)

select结果分页

--每次查询前N行--查询第N页,每页显示M个
--查询薪资大于1000的逆序排列,然后显示前5条记录

SQL语句错误

select enane from emp

1054 - Unknown column 'enane' in 'field list'

将来出现错误的时候,直接将错误编号输入到百度查询即可

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

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

相关文章

加入我们|申请成为亚马逊云科技 Community Builder,共建云端社区!

亚马逊云科技 Community Builder 项目为开发者社区中的技术爱好者和新兴思想领袖提供技术资源、学习和交流机会,帮助开发者探索、分享技术相关知识,并与亚马逊云科技产品团队、技术专家和更多开发者社区成员建立紧密联系。亚马逊云科技开发者社区为开发者们提供全球的开发技术…

[ARC070E] NarrowRectangles

前言 模拟赛 \(\rm{T4}\) , 不会比较正常, 仅仅只是记录做法 然后就是还有每日一练 思路 首先是朴素的 \(\rm{dp}\) 令 \(f_{i, j}\) 表示考虑到第 \(i\) 行, 其中这一行的左端点位置为 \(j\) 的最优花费 容易写出转移 \[f_{i, j} \gets \min_{k \in [j - len_{i - 1}, j + len…

PDF Automation文档页面自动化工具

PDF Automation是我用VB6开发的一个PDF文档页面自动化工具。电脑必须安装了Adobe Acrobat才能使用该工具。软件的主要功能包括:文档的拆分 文档的合并 页面的删除 页面的移动 页面的插入等。 软件界面正中央的区域是文档列表,也就是多个PDF文档,最右侧是页面列表,显示当前所…

not_the_same_3dsctf_2016 1

打开ida能看到栈溢出,返回地址填到get_secret函数里面,可以看到get_secret函数是直接读取了flag的,现在就需要把它输出即可。 输出我们可以利用代码里面的printf,因为printf从缓冲区打印出东西需要满足条件,比如有换行符或缓冲区已满或程序正常退出。 这里我们用exit让程序…

JS-35 数组方法_reverse()

reverse方法用于颠倒排列数组元素,返回改变后的数组。注意,该方法将改变原数组 var a =[a,b,c]; a.reverse()//["c","b","a"];

FastGPT及大模型API(Docker)私有化部署指南

本文提供了FastGPT及其相关大模型API的Docker私有化部署指南,旨在简化部署流程并降低设备配置要求。文章重点介绍了优化后的部署配置、推荐使用的部署容器以及部署步骤,确保用户能够在不影响FastGPT功能的前提下,以高效的资源利用实现快速部署。1. **部署优化**:本文首先指…

LCT

1 概述 首先我们需要知道一类问题,在这类问题中我们需要维护一个森林,支持加边和删边操作,然后要求维护树上的一些信息。这类问题称为动态树问题。 而 LCT,即 Link-Cut Tree,就是用于解决动态树问题的一种数据结构。 学习 LCT 之前需要对 Splay 这种平衡树有一定了解,当然…

git整体使用流程

一、场景说明本地有文件 想在github创建一个远程仓库 在本地修改,同时同步到远端二、流程设置用户名和邮箱目的:标识每次提交者的身份 设置全局用户名:git config --global user.name "Your Name" 设置全局邮箱:git config --global user.email "your.email…

【Linux性能】Linux 下利用 Valgrind 进行内存调试

一、概述 Valgrind 是一个开源的内存调试和性能分析工具,用于帮助开发者找出程序中的内存错误,如内存泄漏、使用未初始化的内存、非法内存访问等问题。它在 Linux 平台上广泛使用,并且支持下多种处理器架构。 二、Valgrind 的使用 2.1 基本格式 valgrind --tool=memcheck -–…

C#/.NET/.NET Core技术前沿周刊 | 第 21 期(2025年1.6-1.12)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

26. 文件操作

一、数据读写在 PySide6 中对文件和文件夹的进行操作时,主要使用 QFile 类、QFileInfo 类和 QDir 类。我们可以在终端中使用 pip 安装 pyside6 模块。 pip install pyside6在 PySide6 窗口程序对文件或者文件夹进行操作时,不强制要求必须使用 PySide6 中提供的 QFile、QDir 等…

MySQL基础函数使用

DQL中的函数 # 官方函数链接 https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format4.1 单行函数函数都是数据库提前给我们准备好的,所以我们可以直接调用,使用函数可以让指定的列计算出我们需要的数据 单行函数 : 指的是操作一行数据…