MySQL-表的基本操作
一、创建数据表
创建数据表是指在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。创建表之前应先使用语句{use 数据库名} 进入到指定的数据库,再执行表操作。
创建表
语法:
CREATE TABLE <表名> (字段名1, 数据类型 [列级别约束条件] [默认值], 字段名2, 数据类型 [列级别约束条件] [默认值],...);例:
创建bbs库并进入
mysql> create database bbs;
Query OK, 1 row affected (0.00 sec)
mysql> use bbs;
Database changed创建test表,编号为int类型,姓名为varchar类型,部门为int类型,薪资为float类型。
int:整数 4个字节
varchar:可变字符串 0~65535
float:浮点数 4个字节
mysql> create table test(-> id int,-> name varchar(20),-> deptid int,-> salary float);
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+---------------+
| Tables_in_bbs |
+---------------+
| test |
+---------------+
1 row in set (0.00 sec)插入两行数据,下面有两种插入方式,第二种更加精确。但是如果未定义列值将出现null。
mysql> insert into test values(1,'zs',10,3000);
Query OK, 1 row affected (0.05 sec)
mysql> insert into test (id,name,deptid) values (2,'ls',20);
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+------+------+--------+--------+
| id | name | deptid | salary |
+------+------+--------+--------+
| 1 | zs | 10 | 3000 |
| 2 | ls | 20 | NULL |
+------+------+--------+--------+
2 rows in set (0.00 sec)主键约束
主键约束要求:主键列的数据唯一,并且不允许为空。
(1)单字段主键
语法:
字段名 数据类型 PRIMARY KEY [默认值]例:
创建file1表,定义id为主键。
mysql> create table file1(-> id int primary key,-> name varchar(20),-> deptid int,-> salary float);
Query OK, 0 rows affected (0.01 sec)插入两行数据,主键id都为1,插入第二条数据时报错,表明id已存在不可重复。
mysql> insert into file1 values(1,'zs',10,3000);
Query OK, 1 row affected (0.01 sec)
mysql> insert into file1 values(1,'ls',20,3000);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'(2)在定义完所有列后指定主键
语法:
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]创建file2表,末尾定义主键。
mysql> create table file2(-> id int,-> name varchar(20),-> deptid int,-> salary float,-> PRIMARY KEY(id));
Query OK, 0 rows affected (0.01 sec)插入两行数据,主键id都为1,插入第二条数据时报错,表明id已存在不可重复。
mysql> insert into file2 values(1,'zs',10,3000);
Query OK, 1 row affected (0.00 sec)mysql> insert into file2 values(1,'ls',20,3000);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'(3)多字段联合主键
语法:
PRIMARY KEY [字段1,字段2,....]创建file3表,末尾定义多主键。
mysql> create table file3(-> name varchar(20),-> deptid int,-> salary float,-> PRIMARY KEY(name,deptid));
Query OK, 0 rows affected (0.01 sec)插入多行数据,主键为name和deptid,表示可以有多个“zs”或多个“10”,但是不能有两个姓名为“zs”并且部门为“10”。
mysql> insert into file3 values('zs',10,3000),('ls',20,4000),('ww',30,5000);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0mysql> insert into file3 values('zs',40,6000);
Query OK, 1 row affected (0.00 sec)mysql> insert into file3 values('ls',10,6000);
Query OK, 1 row affected (0.00 sec)mysql> insert into file3 values('zs',10,6000);
ERROR 1062 (23000): Duplicate entry 'zs-10' for key 'PRIMARY'外键约束
外键用来在两个表数据之间建立连接,它可以是一列或者多列。
语法:
[CONSTRAINT<外键名>] FOREIGN KEY [字段名1,字段名2...] REFERENCES<主表名> 主键列1[主键列2...]创建两个表,外键名为dep_id,字段名为deptid,外键定义为dept1表中的id列。
mysql> create table dept1(-> id int PRIMARY KEY,-> name varchar(20) not null,-> location varchar(50));
Query OK, 0 rows affected (0.05 sec)mysql> create table emp1(-> id int PRIMARY KEY,-> name varchar(20),-> deptid int,-> salary float,-> CONSTRAINT dep_id FOREIGN KEY(deptid) REFERENCES dept1(id));
Query OK, 0 rows affected (0.02 sec)dept1表创建三行数据
mysql> insert into dept1 values(1,'zs','bj'),(2,'ls','hd'),(3,'ww','tz');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0emp1表第一条数据创建正常,第二条创建失败(因为在dept1表中的id列没有“4”,所以emp1表deptid列创建不了。通俗点讲dept1表中的id列没有的数据,emp1表的deptid列就创建不了)。第三条创建成功。
mysql> insert into emp1 values(1,'zs',1,3000);
Query OK, 1 row affected (0.00 sec)mysql> insert into emp1 values(2,'ls',4,3000);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`bbs`.`emp1`, CONSTRAINT `dep_id` FOREIGN KEY (`deptid`) REFERENCES `dept1` (`id`))
mysql> insert into emp1 values(2,'ls',3,3000);
Query OK, 1 row affected (0.00 sec)非空约束
非空约束指字段的值不能为空。
语法:
字段名 数据类型 not null例1:
创建test1表,姓名列不能为空。
mysql> create table test1(-> id int PRIMARY KEY,-> name varchar(20) NOT NULL,-> deptid int,-> salary float);
Query OK, 0 rows affected (0.02 sec)插入数据,第一条全部插入成功,第二条除了name列全部插入,结果反馈"name"列报错。
mysql> insert into test1 values(1,'zs',10,3000);
Query OK, 1 row affected (0.01 sec)mysql> insert into test1(id,deptid,salary) values(1,10,3000);
ERROR 1364 (HY000): Field 'name' doesn't have a default value唯一约束
使用unique来指定列,表明为该列的唯一性,不可具有重复性。
语法:
[CONSTRATIN <约束名>] UNIQUE (<字段名>)创建test2表,unique指定name列。
mysql> create table test2(-> id int PRIMARY KEY,-> name varchar(20),-> location varchar(50),-> CONSTRAINT STH UNIQUE(name));
Query OK, 0 rows affected (0.01 sec)指定name列后,该列姓名不可具有同名。
mysql> insert into test2 values(1,'zs','bj');
Query OK, 1 row affected (0.00 sec)mysql> insert into test2 values(2,'zs','hd');
ERROR 1062 (23000): Duplicate entry 'zs' for key 'sth'默认约束
默认约束指定某列的默认值。
语法:
字段名 数据类型 DEFAULT 默认值例:
创建test3表,指定deptid列默认为666。
mysql> create table test3(-> id int PRIMARY KEY,-> name varchar(20) NOT NULL,-> deptid int DEFAULT 666,-> salary float,-> info varchar(50));
Query OK, 0 rows affected (0.02 sec)插入两行数据,除了deptid列,其他列都写入数据。而后查看test3表,deptid列默认的值都为666(默认状态为NULL)。
mysql> insert into test3(id,name,salary,info) values(1,'zs',3000,'bjcp');
Query OK, 1 row affected (0.00 sec)mysql> insert into test3(id,name,salary,info) values(2,'ls',3000,'bjcp');
Query OK, 1 row affected (0.00 sec)mysql> select * from test3;
+----+------+--------+--------+------+
| id | name | deptid | salary | info |
+----+------+--------+--------+------+
| 1 | zs | 666 | 3000 | bjcp |
| 2 | ls | 666 | 3000 | bjcp |
+----+------+--------+--------+------+
2 rows in set (0.00 sec)属性值自动增加
试想一下,id或与之类似的列,每次插入数据该列都需要输入。其值本身就需要递增,而如果自动添加将会省事很多,下面语句将解决这一问题。
语法:
字段名 数据类型 AUTO_INCREMENT例:
创建test4表,指定id为主键、属性值自动增加。
mysql> create table test4(-> id int PRIMARY KEY AUTO_INCREMENT,-> name varchar(20) not null,-> deptid int,-> salary float);
Query OK, 0 rows affected (0.01 sec)插入三行数据,指定插入name、salary。
mysql> insert into test4(name,salary) values('zs',1000),('ls',2000),('ww',3000);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0查看id列自动添加值。
mysql> select * from test4;
+----+------+--------+--------+
| id | name | deptid | salary |
+----+------+--------+--------+
| 1 | zs | NULL | 1000 |
| 2 | ls | NULL | 2000 |
| 3 | ww | NULL | 3000 |
+----+------+--------+--------+
3 rows in set (0.00 sec)二、查看表结构
查看基本结构
语法:
DESCRIBE 表名; 或 DESC 表名;例:
查看test1表结构。
mysql> describe test1;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.02 sec)或desc,两者查看的结果相同。
mysql> desc test1;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)查看详细结构
语法:
SHOW CREATE TABLE <表名>;例:
查看test1表的详细结构信息。
mysql> show create table test1;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test1 | CREATE TABLE `test1` (`id` int(11) NOT NULL,`name` varchar(20) NOT NULL,`deptid` int(11) DEFAULT NULL,`salary` float DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.04 sec)三、修改数据表
修改表名
语法:
ALTER TABLE <旧表名> RENAME [TO] <新表名>;例:
查看所有表,修改test1表改名为file1。
mysql> show tables;
+---------------+
| Tables_in_bbs |
+---------------+
| test1 |
+---------------+
1 row in set (0.01 sec)mysql> alter table test1 rename file1;
Query OK, 0 rows affected (0.03 sec)mysql> show tables;
+---------------+
| Tables_in_bbs |
+---------------+
| file1 |
+---------------+
1 row in set (0.00 sec)修改字段数据类型
语法:
ALTER TABLE <表名> MODIFY <字段名> <数据类型>例:
查看file1表结构,修改name列数据类型为varchar(50)。
mysql> desc file1;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.09 sec)mysql> alter table file1 modify name varchar(50);
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> desc file1;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(50) | YES | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)修改字段名
语法:
ALTER TABLE <表名> CHANGE<旧字段名><新字段名> <新数据类型>例:
修改file1表name列名为new_name,数据类型为varchar(20);
mysql> alter table file1 change name new_name varchar(20);
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> desc file1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| new_name | varchar(20) | YES | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)添加字段
语法:
ALTER TABLE <表名> ADD <新字段名><数据类型> [约束条件] [FIRST|AFTER 已存在字段名]例:
在file1表末尾添加location列。
mysql> desc file1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| new_name | varchar(20) | YES | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)mysql> alter table file1 add location varchar(50);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> desc file1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| new_name | varchar(20) | YES | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)在file1表首行添加mail列。
mysql> alter table file1 add mail float first;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> desc file1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| mail | float | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| new_name | varchar(20) | YES | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
| location | varchar(50) | YES | | NULL | |
| email | float | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)删除字段
语法:
ALTER TABLE <表名> DROP <字段名>例:
mysql> alter table file1 drop mail;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> desc file1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| new_name | varchar(20) | YES | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)修改排列位置
语法:
ALTER TABLE <表名> MODIFY <字段名> <数据类型> FIRST | AFTER <字段2>例:
修改location列到首行。
mysql> alter table file1 modify location varchar(50) first;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> desc file1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| location | varchar(50) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| new_name | varchar(20) | YES | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)修改location列到new_name列下。
mysql> alter table file1 modify location varchar(20) after new_name;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> desc file1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| new_name | varchar(20) | YES | | NULL | |
| location | varchar(20) | YES | | NULL | |
| deptid | int(11) | YES | | NULL | |
| salary | float | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)修改存储引擎
语法:
ALTER TABLE <表名> ENGINE=<更改后的存储引擎>例:
查看表结构,引擎为ENGINE=InnoDB,修改表引擎后为ENGINE=MyISAM。
mysql> show create table file1;
#省略部分内容
| file1 | CREATE TABLE `file1` (`id` int(11) NOT NULL,`new_name` varchar(20) DEFAULT NULL,`location` varchar(20) DEFAULT NULL,`deptid` int(11) DEFAULT NULL,`salary` float DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
#省略部分内容
1 row in set (0.01 sec)
mysql> alter table file1 engine=myisam;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> show create table file1;
#省略部分内容
| file1 | CREATE TABLE `file1` (`id` int(11) NOT NULL,`new_name` varchar(20) DEFAULT NULL,`location` varchar(20) DEFAULT NULL,`deptid` int(11) DEFAULT NULL,`salary` float DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
#省略部分内容
1 row in set (0.01 sec)
###如无其他需求则改回innodb,才可以进行下面的操作
mysql> alter table file1 engine innodb;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0删除表外键约束
语法:
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>例:
没有外键需要先创建,如果修改过储存引擎需要修改回”innodb“才可以创建外键。查看file2表结构,表明file2表中的deptid列外键约束于file1表中的id列;删除操作后,查看到没有外键约束了。
mysql> create table file2(-> id int primary key,-> name varchar(20),-> deptid int,-> constraint file_key foreign key (deptid) references file1(id));
Query OK, 0 rows affected (0.01 sec)
mysql> show create table file2;
#省略部分内容
| file2 | CREATE TABLE `file2` (`id` int(11) NOT NULL,`name` varchar(20) DEFAULT NULL,`deptid` int(11) DEFAULT NULL,PRIMARY KEY (`id`),KEY `file_key` (`deptid`),CONSTRAINT `file_key` FOREIGN KEY (`deptid`) REFERENCES `file1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
#省略部分内容
1 row in set (0.02 sec)
mysql> alter table file2 drop foreign key file_key;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> show create table file2;
#省略部分内容
| file2 | CREATE TABLE `file2` (`id` int(11) NOT NULL,`name` varchar(20) DEFAULT NULL,`deptid` int(11) DEFAULT NULL,PRIMARY KEY (`id`),KEY `file_key` (`deptid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
#省略部分内容
1 row in set (0.00 sec)删除唯一约束
alter table 表名 drop index 约束名称;或
drop index 约束名称 on 表名;四、删除数据表
删除没有被关联的表
语法:
DROP TABLE [IF EXISTS]表1,表2...例:
参考上面命令创建test1表、test2表,查看所有表并删除test1表、test2表。
mysql> show tables;
+---------------+
| Tables_in_bbs |
+---------------+
| file1 |
| file2 |
| test1 |
| test2 |
+---------------+
4 rows in set (0.00 sec)
mysql> drop table if exists test1,test2;
Query OK, 0 rows affected (0.02 sec)mysql> show tables;
+---------------+
| Tables_in_bbs |
+---------------+
| file1 |
| file2 |
+---------------+
2 rows in set (0.01 sec)删除被关联的主表
还是创建两个test表,test2表的deptid列指定test1表的id列。
mysql> create table test1(-> id int primary key,-> name varchar(20),-> location varchar(50));
Query OK, 0 rows affected (0.01 sec)mysql> create table test2(-> id int primary key,-> name varchar(20),-> deptid int,-> salary float,-> constraint test_key foreign key(deptid) references test1(id));
Query OK, 0 rows affected (0.01 sec)这时候删除主表test1发现删除失败。
mysql> drop table test1;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails此时需要先解除子表test2的约束,然后删除主表test1就可以删除了。
mysql> alter table test2 drop foreign key test_key;
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> drop table test1;
Query OK, 0 rows affected (0.00 sec)总结
#创建表
create table 表名(字段名1 字段类型1 [约束条件1],字段名2 字段类型2 [约束条件2]);约束条件 | |
主键约束 | PRIMARY KEY |
外键约束 | CONSTRAINT [外键名] FOREIGN KEY [字段名] REFERENCES [主表名] 主键列1 |
非空约束 | NOT NULL |
唯一约束 | [CONSTRATIN <约束名>] UNIQUE (<字段名>) |
默认约束 | DEFAULT 默认值 |
自动增加值 | AUTO_INCREMENT |
#表结构
查看表结构 | |
基本结构 | DESCRIBE 表名; |
基本结构 | DESC 表名; |
详细结构 | SHOW CREATE TABLE 表名; |
#修改表
ALTER TABLE <旧表名> RENAME [TO] <新表名>;修改数据表 | |
修改表名 | RENAME [TO] |
修改字段数据类型 | MODIFY |
修改字段名 | CHANGE |
添加字段 | ADD [FIRST|AFTER 已存在字段名] |
删除字段 | DROP |
修改排列位置 | MODIFY |
修改存储引擎 | ENGINE |
删除表外键约束 | DROP FOREIGN KEY |
相关文章:
MySQL-表的基本操作
一、创建数据表创建数据表是指在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。创建表之前应先使用语句{use 数据库名} 进入到指定的数据库,再执行表操作。创建表语法:CREATE TABLE <表…...
开篇之作—闲聊几句AUTOSAR
背景信息 步入职场已有些许年头,遇到过不少的人,经历过不算多的事情,也走过一些地方。现在坐下来想想,觉得一路走过总是行色匆匆,都来不及停下来驻足路边的风景,抑或是回头看看身后的精彩。 现在有些庆幸的是,加入了这个汽车这个行业,从事着汽车电子开发领域,也因此…...
02- 天池工业蒸汽量项目实战 (项目二)
忽略警告: warnings.filterwarnings("ignore") import warnings warnings.filterwarnings("ignore") 读取文件格式: pd.read_csv(train_data_file, sep\t) # 注意sep 是 , , 还是\ttrain_data.info() # 查看是否存在空数据及数据类型train_data.desc…...
LeetCode-111. 二叉树的最小深度
目录题目分析递归法题目来源111. 二叉树的最小深度题目分析 这道题目容易联想到104题的最大深度,把代码搬过来 class Solution {public int minDepth(TreeNode root) {return dfs(root);}public static int dfs(TreeNode root){if(root null){return 0;}int left…...
git常用命令
(一)克隆代码(clone):将远程仓库代码克隆到本地仓库 克隆远程仓库某个分支 git clone -b 远程分支名称 https://github.com/master/master.git 本地文件名称 克隆远程仓库默认分支 git clone https://github.com/mas…...
2022年12月电子学会Python等级考试试卷(一级)答案解析
青少年软件编程(Python)等级考试试卷(一级) 一、单选题(共25题,共50分) 1. 关于Python语言的注释,以下选项中描述错误的是?( ) A. Python语言有两种注释方式&…...
大数据未来会如何发展
大数据应用的重要性,自全国提出“数据中国”的概念以来,我们周围默默地在发挥作用的大数据逐渐深入人们的心中,大数据的应用也越来越广泛,具体到金融、汽车、餐饮、电信、能源、体育和娱乐等领域 为什么大数据技术那么火…...
2022黑马Redis跟学笔记.基础篇(一)
2022黑马Redis跟学笔记.基础篇 一1.Redis入门1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结1.2.认识Redis1.3.安装Redis步骤一:安装Redis依赖步骤二:上传安装包并解压步骤三:启动(1).默认启动(2…...
【Spring(十一)】万字带你深入学习面向切面编程AOP
文章目录前言AOP简介AOP入门案例AOP工作流程AOP切入点表达式AOP通知类型AOP通知获取数据总结前言 今天我们来学习AOP,在最初我们学习Spring时说过Spring的两大特征,一个是IOC,一个是AOP,我们现在要学习的就是这个AOP。 AOP简介 AOP:面向切面编程,一种编程范式&#…...
基于Java+SpringBoot+Vue+uniapp前后端分离图书阅读系统设计与实现
博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建、毕业项目实战、项目定制✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《S…...
2021年新公开工业控制系统严重漏洞汇总
声明 本文是学习ITOT一体化工业信息安全态势报告(2019). 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 工业互联网安全威胁 2021年新公开工业控制系统严重漏洞 缓冲区溢出漏洞 缓冲区溢出(buffer overflow&…...
Canvas鼠标滚轮缩放以及画布拖动(图文并茂版)
Canvas鼠标滚轮缩放以及画布拖动 本文会带大家认识Canvas中常用的坐标变换方法 translate 和 scale,并结合这两个方法,实现鼠标滚轮缩放以及画布拖动功能。 Canvas的坐标变换 Canvas 绘图的缩放以及画布拖动主要通过 CanvasRenderingContext2D 提供的 …...
[ECCV 2020] FGVC via progressive multi-granularity training of jigsaw patches
Contents IntroductionProgressive Multi-Granularity (PMG) training frameworkExperimentsReferencesIntroduction 不同于显式地寻找特征显著区域并抽取其特征,作者充分利用了 CNN 不同 stage 输出的特征图的语义粒度信息,并使用 Jigsaw Puzzle Generator 进行数据增强来帮…...
Python推导式
列表(list)推导式 [remove for source in xx_list]或者[remove for source in xx_list if condition] 实例: names[Bob,Mark,Mausk,Johndan,Wendy] new_names[name.upper() for name in names if len(name)<5] print(new_names)即迭代列…...
Java列表List的定查改增删操作
Java列表List的定查改增删操作定义查找遍历元素与下标互查修改增加删除java.util中提供了三种常用的集合类,列表List、集合Map和字典Set。这些集合类相较于数组有更多功能,并且都可以通过Iterator(迭代器)来访问。 在这篇博客中&…...
day03java语言特性 JDK、JRE、JVM
1、Java语言的特性 1.1、简单性在Java语言当中真正操作内存的是:JVM(Java虚拟机)所有的java程序都是运行在Java虚拟机当中的。而Java虚拟机执行过程中再去操作内存。对于C或者C来说程序员都是可以直接通过指针操作内存的。C或者C更灵活&…...
HydroD 实用教程(二)有限元模型
目 录一、前言二、模型种类三、单元类型四、FEM文件五、参考文献一、前言 SESAM (Super Element Structure Analysis Module)是由挪威船级社(DNV-GL)开发的一款有限元分析(FEA)系统,它以 GeniE、…...
Java中的Set集合
Set不能存储重复元素,元素无序(指的是不按照添加的顺序,List集合是按照添加顺序存储的)hashSet注:源码底层是hashMap实现的,因为hashMap是双列的,其中键是不能重复的,而hashSet是单列…...
【RabbitMQ五】——RabbitMQ路由模式(Routing)
RabbitMQ路由模式前言RabbitMQ模式的基本概念为什么要使用Rabbitmq 路由模式RabbitMQ路由模式组成元素路由模式完整代码Pom文件引入RabbtiMQ依赖RabbitMQ工具类生产者消费者1消费者2运行结果截图前言 通过本篇博客能够简单使用RabbitMQ的路由模式。 本篇博客主要是博主通过官网…...
【C语言】宏定义 结构体 枚举变量的用法
目录 一、数据类型 二、C语言宏定义 三、C语言typedef重命名 四、 #define与typedef的区别 五、结构体 六、枚举变量 补充学习一点STM32的必备基础知识 一、数据类型 二、C语言宏定义 关键字:#define 用途:用一个字符串代替一个数字,…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
