第二次作业
#创建表,把id设为主键
mysql> create table test02(-> id int primary key, #----主键约束-> name varchar(50)-> );
Query OK, 0 rows affected (0.02 sec)
#插入数据测试
mysql> insert into test02 values(1,"成都");
Query OK, 1 row affected (0.01 sec)
mysql> insert into test02 values(1,"西安");
ERROR 1062 (23000): Duplicate entry '1' for key 'test02.PRIMARY'
mysql> insert into test02 values(null,"西安");
ERROR 1048 (23000): Column 'id' cannot be null
mysql> insert into test02 values(2,"西安");
Query OK, 1 row affected (0.00 sec)
#主键自动增加auto_increment
mysql> create table test02(-> id int primary key auto_increment,-> name varchar(50)-> );
Query OK, 0 rows affected (0.02 sec)
#插入数据测试
mysql> insert into test02 values(1,"成都");
Query OK, 1 row affected (0.00 sec)
mysql> insert into test02 values(1,"西安");
ERROR 1062 (23000): Duplicate entry '1' for key 'test02.PRIMARY'
mysql> insert into test02 values(null,"西安");
Query OK, 1 row affected (0.01 sec)
mysql> insert into test02 values(2,"西安");
ERROR 1062 (23000): Duplicate entry '2' for key 'test02.PRIMARY'
mysql> insert into test02 values(3,"西安");
Query OK, 1 row affected (0.01 sec)
mysql> select * from test02;
+----+--------+
| id | name |
+----+--------+
| 1 | 成都 |
| 2 | 西安 |
| 3 | 西安 |
+----+--------+
3 rows in set (0.00 sec)
#主键另外一种写法
mysql> create table test02(-> id int auto_increment,-> name varchar(50),-> primary key(id)-> );
Query OK, 0 rows affected (0.02 sec)
唯一约束
mysql> create table test02(-> id int primary key auto_increment,-> name varchar(50) unique #---唯一约束-> );
Query OK, 0 rows affected (0.04 sec)
#插入数据测试
mysql> insert into test02 values(1,"成都");
Query OK, 1 row affected (0.01 sec)
mysql> insert into test02 values(2,"成都");
ERROR 1062 (23000): Duplicate entry '成都' for key 'test02.name'
mysql> insert into test02 values(2,"西安");
Query OK, 1 row affected (0.00 sec)
mysql> select * from test02;
+----+--------+
| id | name |
+----+--------+
| 1 | 成都 |
| 2 | 西安 |
+----+--------+
2 rows in set (0.00 sec)
# 另一种写法
create table tets02(-> id int auto_increment,-> name varchar(50),# ---唯一约束 -> primary key(id),-> unique(name)-> );
Query OK, 0 rows affected (0.02 sec)
默认值约束
mysql> create table test02(-> id int primary key auto_increment,-> name varchar(50) unique,-> age int default 18-> );
Query OK, 0 rows affected (0.04 sec)
#插入数据测试
mysql> insert into test02 values(1,"小红",20);
Query OK, 1 row affected (0.01 sec)
mysql> insert into test02 values(default,"小蓝",19); #---因为存在自增,所以可以写默认
Query OK, 1 row affected (0.00 sec)
mysql> insert into test02(name) values("小黄");
Query OK, 1 row affected (0.00 sec)
mysql> select * from test02;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | 小红 | 20 |
| 2 | 小蓝 | 19 |
| 3 | 小黄 | 18 |
+----+--------+------+
3 rows in set (0.00 sec)
非空约束
mysql> create table test02(-> id int primary key auto_increment,-> name varchar(50) unique not null,-> age int default 18,-> password varchar(255) not null-> );
Query OK, 0 rows affected (0.03 sec)
mysql> insert into test02 values(1,"小兰",23,"890890");
Query OK, 1 row affected (0.01 sec)
mysql> insert into test02 values(2,"小二",18,null);
ERROR 1048 (23000): Column 'password' cannot be null
检查约束
mysql> create table test02(-> id int primary key auto_increment,-> name varchar(50) not null unique,-> age int check(age >= 18)-> );
Query OK, 0 rows affected (0.03 sec)
mysql> insert into test02 value(null,"张三",20);
Query OK, 1 row affected (0.01 sec)
mysql> insert into test02 value(null,"李四",17);
ERROR 3819 (HY000): Check constraint 'test02_chk_1' is violated.
mysql>
修改表结构
修改列类型ALTER TABLE 表名 MODIFY 列名 列类型; -- 注意存在值的情况,类型不一定能成功
增加列ALTER TABLE 表名 ADD 列名 列类型;
删除列ALTER TABLE 表名 DROP 列名;
列改名ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;
更改表名ALTER TABLE 表名 RENAME 新表名;RENAME TABLE 表名 TO 新表名;
mysql> alter table test02 modify age varchar(20);
Query OK, 1 row affected (0.07 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> alter table test02 add address varchar(50);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> select * from test02;
+----+--------+------+---------+
| id | name | age | address |
+----+--------+------+---------+
| 1 | 张三 | 20 | NULL |
+----+--------+------+---------+
1 row in set (0.00 sec)
mysql> alter table test02 drop age;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> select * from test02;
+----+--------+---------+
| id | name | address |
+----+--------+---------+
| 1 | 张三 | NULL |
+----+--------+---------+
1 row in set (0.00 sec)
mysql> alter table test02 change address age int;
Query OK, 1 row affected (0.07 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from test02;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | 张三 | NULL |
+----+--------+------+
1 row in set (0.00 sec)
mysql> alter table test02 rename test03;
Query OK, 0 rows affected (0.02 sec)
mysql> rename table test03 to test02;
Query OK, 0 rows affected (0.01 sec)
replace语句
该语句是集更新和插入为一体的一个语句。
如果表中没有这条数据,则执行插入,否则执行更新
mysql> replace into test02 values(1,"小红",100);
Query OK, 2 rows affected (0.00 sec)
mysql> select * from test02;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | 小红 | 100 |
| 2 | 小蓝 | 30 |
| 3 | 小绿 | 31 |
| 4 | 小羊 | 44 |
| 5 | 小牛 | 32 |
+----+--------+------+
5 rows in set (0.00 sec)
select查询语句
在开发中,查询语句是使用最多,也是CRUD中,复杂度最高的sql语句。
查询的语法结构
select *|字段1 [, 字段2 ……] from 表名称 [, 表名称2……] [where 条件] [group by 字段 [having 分组后的筛选]] [order by 字段 [desc|asc] [字段2 [desc|asc] ……]] [limit 分页]
简单的sql查询
#查询所有数据
select * from test02;
#查询需要的字段信息
select id,name from test02;
# 查询一个字段,一个等值条件
select name from test02 where id=1;
补充:+ 说明
-- MySQL的+默认只有一个功能:运算符
SELECT 100+80; # 结果为180
SELECT '123'+80; # 只要其中一个为数值,则试图将字符型转换成数值,转换成功做预算,结果为203
SELECT 'abc'+80; # 转换不成功,则字符型数值为0,结果为80
SELECT 'This'+'is'; # 转换不成功,结果为0
SELECT 'This'+'30is'; # ?猜测下这个结果是多少?
SELECT NULL+80; # 只要其中一个为NULL,则结果为NULL
等值判断
条件中,出现了相等值的判断,一般采用=进行判断。
= 判断两次的值是否相等
is 判断空null
is not null来判断不为空
<=> 可以判断null或者普通值
不等判断
!= 不等于
<>也是不等于
逻辑运算符
逻辑运算符是多条件关联的一种方式。
与或非
and
or
not
注意:在sql中,如果要提升条件的运行顺序,或者提高条件的优先级别,则需要使用括号来提升。
结果排序
# 语法结构
order by 字段
order by 字段 asc|desc;
order by 字段 asc|desc, 字段2 ;
mysql> select * from test02;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | 小红 | 100 |
| 2 | 小蓝 | 30 |
| 3 | 小绿 | 31 |
| 4 | 小羊 | 44 |
| 5 | 小牛 | 32 |
+----+--------+------+
5 rows in set (0.00 sec)
mysql> select * from test02 order by age;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 2 | 小蓝 | 30 |
| 3 | 小绿 | 31 |
| 5 | 小牛 | 32 |
| 4 | 小羊 | 44 |
| 1 | 小红 | 100 |
+----+--------+------+
5 rows in set (0.00 sec)
mysql> select * from test02 order by age asc;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 2 | 小蓝 | 30 |
| 3 | 小绿 | 31 |
| 5 | 小牛 | 32 |
| 4 | 小羊 | 44 |
| 1 | 小红 | 100 |
+----+--------+------+
5 rows in set (0.00 sec)
mysql> select * from test02 order by age desc;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | 小红 | 100 |
| 4 | 小羊 | 44 |
| 5 | 小牛 | 32 |
| 3 | 小绿 | 31 |
| 2 | 小蓝 | 30 |
+----+--------+------+
5 rows in set (0.00 sec)
mysql> select * from test02 order by age,id desc;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 2 | 小蓝 | 30 |
| 3 | 小绿 | 31 |
| 5 | 小牛 | 32 |
| 4 | 小羊 | 44 |
| 1 | 小红 | 100 |
+----+--------+------+
5 rows in set (0.00 sec)
分页功能
select语句,查询数据时,可能结果会非常多,此时就不能直接展示,分页展示。
总数量(all_data):查询 select count(*)
每页展示的数量(page_size):程序员定
当前页(cur_page):默认第一页,用户自己点击选择
总页数(all_page):总数量 % 每页的数量 == 0 整除后的商 : 商 + 1
mysql> select * from test02 limit 2;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | 小红 | 100 |
| 2 | 小蓝 | 30 |
+----+--------+------+
2 rows in set (0.00 sec)
mysql> select * from test02 limit 3,2;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 4 | 小羊 | 44 |
| 5 | 小牛 | 32 |
+----+--------+------+
2 rows in set (0.00 sec)
为什么分表
数据直接都存储在一张表中:
如果数据很大,性能会出现问题
将不同的数据,如果放在同一个表中,可能数据冗余
数据冗余,会导致数据可能出错
将不同的类型,采用不同的数据表进行存储,如果两张表或者多张表之间存在关联关系,则可以采用外键来描述这种关联关系。
主表中,一般是一个字段,改字段一般是从表的主键。
mysql> create table grade(
-> id int auto_increment,
-> name varchar(50) unique,
-> primary key(id)
-> );
Query OK, 0 rows affected (0.03 sec)
mysql> insert into grade(name) value("Java精品班"), ("python数据分析班"), ("网络安全班"), ("云原生高级班");
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> create table student(
-> id int primary key auto_increment,
-> name varchar(50) unique,
-> class_id int
-> );
Query OK, 0 rows affected (0.03 sec)
mysql> desc student;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(50) | YES | UNI | NULL | |
| class_id | int | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
mysql> insert into student(name, class_id) values("张三", 1);
Query OK, 1 row affected (0.01 sec)
mysql> insert into student(name, class_id) values("张三2", 3);
Query OK, 1 row affected (0.00 sec)
mysql> insert into student(name, class_id) values("张三3", 2);
Query OK, 1 row affected (0.01 sec)
mysql> select * from student;
+----+---------+----------+
| id | name | class_id |
+----+---------+----------+
| 1 | 张三 | 1 |
| 2 | 张三2 | 3 |
| 3 | 张三3 | 2 |
+----+---------+----------+
3 rows in set (0.00 sec)
mysql> select * from grade;
+----+-----------------------+
| id | name |
+----+-----------------------+
| 1 | Java精品班 |
| 2 | python数据分析班 |
| 4 | 云原生高级班 |
| 3 | 网络安全班 |
+----+-----------------------+
4 rows in set (0.00 sec)
外键和多表关联
外键:指的是两张或者多张表之间关联关系的字段。
外键约束:是表的约束,是约束表在插入外键数据时能够正确的插入。
如何添加约束:
# 在创建表的同时,将外键约束添加上去
# 首先保证班级表创建成功
# 插入正确的数据
create table grade(
id int auto_increment,
name varchar(50) unique,
primary key(id)
)
insert into grade(name) value("Java精品班"), ("python数据分析班"), ("网络安全班"), ("云原生高级班");
外键约束
外键是构建于一个表的两个字段或者两个表的两个字段之间的关系
外键确保了相关的两个字段的两个关系:
子(从)表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空)。
当主表的记录被子表参照时,主表记录不允许被删除。
外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录。
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段名)
REFERENCES 外表表名(主键字段名)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
格式FOREIGN KEY (外键列名)REFERENCES 主表(参照列)
表与表之间的关联关系
当表与表之间存在了外键,这就意味着,这两张表之间存在某种关联关系。
一旦表存在了关联关系,则会进行外键设计,如果设计外键,将外键设计在哪张表中?
一对一 :外键可以设计在任意一张表中
一对多 :外键必须设计在多方
多对多 :创建第三张表,来专门描述两张表的关联关系
多表关联查询
当两张或者多张表之间存在了关联关系,往往多表查询,如果查询。
交叉连接
内连接
外链接
左外连接
右外连接
自连接
全连接
select *|字段 [,……] from 表名称 [,表名称] ……
#-- 交叉连接(cross join)
#-- 在查询多表时,不指定表的关联关系,数据只能全部匹配
#-- 引发笛卡尔积现象
mysql> select * from student,grade;
+----+---------+----------+----+-----------------------+
| id | name | class_id | id | name |
+----+---------+----------+----+-----------------------+
| 3 | 张三3 | 2 | 1 | Java精品班 |
| 2 | 张三2 | 3 | 1 | Java精品班 |
| 1 | 张三 | 1 | 1 | Java精品班 |
| 3 | 张三3 | 2 | 2 | python数据分析班 |
| 2 | 张三2 | 3 | 2 | python数据分析班 |
| 1 | 张三 | 1 | 2 | python数据分析班 |
| 3 | 张三3 | 2 | 4 | 云原生高级班 |
| 2 | 张三2 | 3 | 4 | 云原生高级班 |
| 1 | 张三 | 1 | 4 | 云原生高级班 |
| 3 | 张三3 | 2 | 3 | 网络安全班 |
| 2 | 张三2 | 3 | 3 | 网络安全班 |
| 1 | 张三 | 1 | 3 | 网络安全班 |
+----+---------+----------+----+-----------------------+
12 rows in set (0.00 sec)
#-- sql98的标准写法
mysql> select * from student cross join grade;
+----+---------+----------+----+-----------------------+
| id | name | class_id | id | name |
+----+---------+----------+----+-----------------------+
| 3 | 张三3 | 2 | 1 | Java精品班 |
| 2 | 张三2 | 3 | 1 | Java精品班 |
| 1 | 张三 | 1 | 1 | Java精品班 |
| 3 | 张三3 | 2 | 2 | python数据分析班 |
| 2 | 张三2 | 3 | 2 | python数据分析班 |
| 1 | 张三 | 1 | 2 | python数据分析班 |
| 3 | 张三3 | 2 | 4 | 云原生高级班 |
| 2 | 张三2 | 3 | 4 | 云原生高级班 |
| 1 | 张三 | 1 | 4 | 云原生高级班 |
| 3 | 张三3 | 2 | 3 | 网络安全班 |
| 2 | 张三2 | 3 | 3 | 网络安全班 |
| 1 | 张三 | 1 | 3 | 网络安全班 |
+----+---------+----------+----+-----------------------+
12 rows in set (0.00 sec)
# 内连接
mysql> select * from student, grade where student.class_id = grade.id;
+----+---------+----------+----+-----------------------+
| id | name | class_id | id | name |
+----+---------+----------+----+-----------------------+
| 1 | 张三 | 1 | 1 | Java精品班 |
| 2 | 张三2 | 3 | 3 | 网络安全班 |
| 3 | 张三3 | 2 | 2 | python数据分析班 |
+----+---------+----------+----+-----------------------+
3 rows in set (0.00 sec)
mysql> select * from student, grade where student.class_id = grade.id and student.name = '张三';
+----+--------+----------+----+---------------+
| id | name | class_id | id | name |
+----+--------+----------+----+---------------+
| 1 | 张三 | 1 | 1 | Java精品班 |
+----+--------+----------+----+---------------+
1 row in set (0.00 sec)
# 注意:sql98的内连接方式时,如果不指定关联条件,不管怎么写,都是交叉连接
mysql> select * from student inner join grade;
+----+---------+----------+----+-----------------------+
| id | name | class_id | id | name |
+----+---------+----------+----+-----------------------+
| 3 | 张三3 | 2 | 1 | Java精品班 |
| 2 | 张三2 | 3 | 1 | Java精品班 |
| 1 | 张三 | 1 | 1 | Java精品班 |
| 3 | 张三3 | 2 | 2 | python数据分析班 |
| 2 | 张三2 | 3 | 2 | python数据分析班 |
| 1 | 张三 | 1 | 2 | python数据分析班 |
| 3 | 张三3 | 2 | 4 | 云原生高级班 |
| 2 | 张三2 | 3 | 4 | 云原生高级班 |
| 1 | 张三 | 1 | 4 | 云原生高级班 |
| 3 | 张三3 | 2 | 3 | 网络安全班 |
| 2 | 张三2 | 3 | 3 | 网络安全班 |
| 1 | 张三 | 1 | 3 | 网络安全班 |
+----+---------+----------+----+-----------------------+
12 rows in set (0.00 sec)
mysql> select * from student join grade;
+----+---------+----------+----+-----------------------+
| id | name | class_id | id | name |
+----+---------+----------+----+-----------------------+
| 3 | 张三3 | 2 | 1 | Java精品班 |
| 2 | 张三2 | 3 | 1 | Java精品班 |
| 1 | 张三 | 1 | 1 | Java精品班 |
| 3 | 张三3 | 2 | 2 | python数据分析班 |
| 2 | 张三2 | 3 | 2 | python数据分析班 |
| 1 | 张三 | 1 | 2 | python数据分析班 |
| 3 | 张三3 | 2 | 4 | 云原生高级班 |
| 2 | 张三2 | 3 | 4 | 云原生高级班 |
| 1 | 张三 | 1 | 4 | 云原生高级班 |
| 3 | 张三3 | 2 | 3 | 网络安全班 |
| 2 | 张三2 | 3 | 3 | 网络安全班 |
| 1 | 张三 | 1 | 3 | 网络安全班 |
+----+---------+----------+----+-----------------------+
12 rows in set (0.00 sec)
# 正确写法,必须写清楚关联条件
mysql> select * from student inner join grade on (student.class_id=grade.id);
+----+---------+----------+----+-----------------------+
| id | name | class_id | id | name |
+----+---------+----------+----+-----------------------+
| 1 | 张三 | 1 | 1 | Java精品班 |
| 2 | 张三2 | 3 | 3 | 网络安全班 |
| 3 | 张三3 | 2 | 2 | python数据分析班 |
+----+---------+----------+----+-----------------------+
3 rows in set (0.00 sec)
mysql> select * from student join grade on (student.class_id=grade.id) where student.name = "张三3";
+----+---------+----------+----+-----------------------+
| id | name | class_id | id | name |
+----+---------+----------+----+-----------------------+
| 3 | 张三3 | 2 | 2 | python数据分析班 |
+----+---------+----------+----+-----------------------+
1 row in set (0.00 sec)
# 内连接,只能查询出,存在关联关系的数据,如果不存在关联关系,如目前没有班级的学生,目前没有学生的班级
mysql> select * from student cross join grade on (student.class_id=grade.id) where student.name = "张三3";
+----+---------+----------+----+-----------------------+
| id | name | class_id | id | name |
+----+---------+----------+----+-----------------------+
| 3 | 张三3 | 2 | 2 | python数据分析班 |
+----+---------+----------+----+-----------------------+
1 row in set (0.00 sec)
# 如果要将这些没关联关系的数据查询出来,则需要使用外连接
mysql> select * from student left join grade on (student.class_id=grade.id);
+----+---------+----------+------+-----------------------+
| id | name | class_id | id | name |
+----+---------+----------+------+-----------------------+
| 1 | 张三 | 1 | 1 | Java精品班 |
| 2 | 张三2 | 3 | 3 | 网络安全班 |
| 3 | 张三3 | 2 | 2 | python数据分析班 |
+----+---------+----------+------+-----------------------+
3 rows in set (0.00 sec)
mysql> select * from student right join grade on (student.class_id=grade.id);
+------+---------+----------+----+-----------------------+
| id | name | class_id | id | name |
+------+---------+----------+----+-----------------------+
| 1 | 张三 | 1 | 1 | Java精品班 |
| 3 | 张三3 | 2 | 2 | python数据分析班 |
| NULL | NULL | NULL | 4 | 云原生高级班 |
| 2 | 张三2 | 3 | 3 | 网络安全班 |
+------+---------+----------+----+-----------------------+
4 rows in set (0.00 sec)
# 注意:mysql不支持全连接查询 full join
# 但是SQL存在联合查询 union 、union all
# 注意:联合查询,必须保证查询的多条SQL返回的结果 结构必须一致,所以联合查询常见于查询一张表
表单查询、多表查询
一.单表查询
(1)查询前的数据准备
1.创建用于数据查询的数据库表
CREATE TABLE worker (
`部门号` int(11) NOT NULL,
`职工号` int(11) NOT NULL,
`工作时间` date NOT NULL,
`工资` float(8,2) NOT NULL,
`政治面貌` varchar(10) NOT NULL DEFAULT '群众',
`姓名` varchar(20) NOT NULL,
`出生日期` date NOT NULL,
PRIMARY KEY (`职工号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
2.向表worker中插入用于查询的数据
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (101, 1001, '2015-5-4', 3500.00, '群众', '张三', '1990-7-1');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (101, 1002, '2017-2-6', 3200.00, '团员', '李四', '1997-2-8');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1003, '2011-1-4', 8500.00, '党员', '王亮', '1983-6-8');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1006, '2025-3-5', 14500.00, '党员', 'RenJiawei', '2003-10-1');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1004, '2016-10-10', 5500.00, '群众', '赵六', '1994-9-5');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1005, '2014-4-1', 4800.00, '党员', '钱七', '1992-12-30');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1006, '2017-5-5', 4500.00, '党员', '孙八', '1996-9-2');
(2)单表查询相关示例
1、显示所有职工的基本信息。
SELECT * FROM worker;
1
2、查询所有职工所属部门的部门号,不显示重复的部门号。
SELECT DISTINCT 部门号 FROM worker;
1
3、求出所有职工的人数。
SELECT COUNT(*) AS 职工总数 FROM worker;
1
4、列出最高工和最低工资。
SELECT MAX(工资) AS 最高工资, MIN(工资) AS 最低工资 FROM worker;
1
5、列出职工的平均工资和总工资。
CREATE TABLE 工作日期表 AS SELECT 职工号, 姓名, 工作时间 FROM worker;
1
6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。
CREATE TABLE 工作日期表 AS SELECT 职工号, 姓名, 工作时间 FROM worker;
1
7、列出所有姓李的职工的职工号、姓名和出生日期。
SELECT 职工号, 姓名, 出生日期 FROM worker WHERE 姓名 LIKE '李%';
1
8、列出1960年以后出生的职工的姓名、参加工作日期。
SELECT 姓名, 工作时间 FROM worker WHERE 出生日期 > '1960-01-01';
1
9、列出工资在5000-8000之间的所有职工姓名。
SELECT 姓名 FROM worker WHERE 工资 > 5000 AND 工资 <8000;
1
10、列出所有孙姓和李姓的职工姓名。
SELECT 姓名 FROM worker WHERE 姓名 LIKE '孙%' OR 姓名 LIKE '李%';
1
11、列出所有部门号为102和103的职工号、姓名、是否党员。
SELECT 职工号, 姓名, IF(政治面貌='党员', '是', '否') AS 党员否
-> FROM worker WHERE 部门号 IN (102, 103);
1
2
12、将职工表worker中的职工按出生的先后顺序排序。
SELECT * FROM worker ORDER BY 出生日期 ASC;
1
13、显示工资最高的前3名职工的职工号和姓名。
SELECT 部门号, COUNT(*) AS 党员人数
FROM worker WHERE 政治面貌 = '党员' GROUP BY 部门号;
1
2
14、求出各部门党员的人数。
SELECT 部门号, SUM(工资) AS 总工资, AVG(工资) AS 平均工资
FROM worker GROUP BY 部门号;
1
2
15、统计各部门的工资和平均工资。
SELECT 部门号, SUM(工资) AS 总工资, AVG(工资) AS 平均工资
FROM worker GROUP BY 部门号;
1
2
16、列出总人数大于或等于4的部门号和总人数。
SELECT 部门号, COUNT(*) AS 人数
FROM worker GROUP BY 部门号 HAVING 人数 >= 4;
二.多表查询
(1)查询前的数据准备
1.创建student表
CREATE TABLE student (
id INT(10) PRIMARY KEY,
name VARCHAR(20) NOT NULL,
sex VARCHAR(4),
birth YEAR,
department VARCHAR(20),
address VARCHAR(50)
);
2.创建score表
CREATE TABLE score (
id INT(10) PRIMARY KEY AUTO_INCREMENT,
stu_id INT(10) NOT NULL,
c_name VARCHAR(20),
grade INT(10)
);
3.向表student中插入数据以用于查询
INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区');
INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区');
INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市');
INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市');
INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市');
INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市');
INSERT INTO student VALUES( 907,'RenJiawei', '男',2003,'计算机系', '四川省成都市');
4.向表score中插入数据以用于查询
INSERT INTO score VALUES(NULL,901, '计算机',98);
INSERT INTO score VALUES(NULL,901, '英语', 80);
INSERT INTO score VALUES(NULL,902, '计算机',65);
INSERT INTO score VALUES(NULL,902, '中文',88);
INSERT INTO score VALUES(NULL,903, '中文',95);
INSERT INTO score VALUES(NULL,904, '计算机',70);
INSERT INTO score VALUES(NULL,904, '英语',92);
INSERT INTO score VALUES(NULL,905, '英语',94);
INSERT INTO score VALUES(NULL,906, '计算机',90);
INSERT INTO score VALUES(NULL,906, '英语',85);
(2)多表查询相关示例
1.查询student表的所有记录
SELECT * FROM student;
1
2.查询student表的第2条到4条记录
SELECT * FROM student LIMIT 1, 3;
1
3.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息
SELECT id, name, department FROM student;
1
4.从student表中查询计算机系和英语系的学生的信息
SELECT * FROM student
WHERE department IN ('计算机系', '英语系');
1
2
5.从student表中查询年龄18~45岁的学生信息
SELECT * FROM student
WHERE (YEAR(CURDATE()) - birth) BETWEEN 18 AND 45;
1
2
6.从student表中查询每个院系有多少人
SELECT department, COUNT(*) AS 人数
FROM student
GROUP BY department;
1
2
3
7.从score表中查询每个科目的最高分
SELECT c_name, MAX(grade) AS 最高分
FROM score
GROUP BY c_name;
1
2
3
8.查询李四的考试科目(c_name)和考试成绩(grade)
SELECT c_name, grade
FROM score
WHERE stu_id = (SELECT id FROM student WHERE name = '李四');
1
2
3
9.用连接的方式查询所有学生的信息和考试信息
SELECT student.*, score.c_name, score.grade
FROM student
LEFT JOIN score ON student.id = score.stu_id;
1
2
3
10.计算每个学生的总成绩
SELECT stu_id, SUM(grade) AS 总成绩
FROM score
GROUP BY stu_id;
1
2
3
11.计算每个考试科目的平均成绩
SELECT c_name, AVG(grade) AS 平均分
FROM score
GROUP BY c_name;
1
2
3
12.查询计算机成绩低于95的学生信息
SELECT student.*
FROM student
JOIN score ON student.id = score.stu_id
WHERE score.c_name = '计算机' AND score.grade < 95;
1
2
3
4
13.查询同时参加计算机和英语考试的学生的信息
SELECT * FROM student
WHERE id IN (
SELECT stu_id FROM score WHERE c_name = '计算机'
AND stu_id IN (SELECT stu_id FROM score WHERE c_name = '英语')
);
1
2
3
4
5
14.将计算机考试成绩按从高到低进行排序
SELECT * FROM score
WHERE c_name = '计算机'
ORDER BY grade DESC;
1
2
3
15.从student表和score表中查询出学生的学号,然后合并查询结果
SELECT id FROM student
UNION
SELECT stu_id FROM score;
1
2
3
16.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩
SELECT student.name, student.department, score.c_name, score.grade
FROM student
JOIN score ON student.id = score.stu_id
WHERE student.name LIKE '张%' OR student.name LIKE '王%';
1
2
3
4
17.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
SELECT student.name,
(YEAR(CURDATE()) - student.birth) AS 年龄,
student.department,
score.c_name,
score.grade
FROM student
JOIN score ON student.id = score.stu_id
相关文章:
第二次作业
#创建表,把id设为主键 mysql> create table test02(-> id int primary key, #----主键约束-> name varchar(50)-> ); Query OK, 0 rows affected (0.02 sec) #插入数据测试 mysql> insert into test02 values(1,"成都"); Query OK, 1 r…...
AI大模型下传统 Spring Java工程开发的演进和变化方向
1. 背景和动因 传统Spring开发优势:Spring生态以稳定、模块化、依赖注入(DI)等特性著称,长期支撑企业级应用开发,具备高扩展性和可维护性。AI大模型崛起:近几年,LLM(如GPT-4、LLaMA…...
周学习总结
这周继续学习了Java的知识点,还写了考查递归、递推与贪心的算法题。 算法小结 递归与递推一般是观察观察题干,分析题目的规律,可能还会用到分治算法,推导出一个合理的表达式,再使用函数递归来进行求解。 贪心在求解时…...
19.思科路由器:OSPF协议引入直连路由的实验研究
思科路由器:OSPF协议引入直连路由的实验研究 一、实验拓扑二、基本配置2.1、sw1的配置2.2、开启交换机三层功能三、ospf的配置3.1、R1的配置3.2、R2的配置3.3、重启ospf进程四、引入直连路由五、验证结果随着互联网技术的不断发展,路由器作为网络互联的关键设备,其性能与稳定…...
Zcanpro搭配USBCANFD-200U在新能源汽车研发测试中的应用指南(周立功/致远电子)
——国产工具链的崛起与智能汽车测试新范式 引言:新能源汽车测试的国产化突围 随着新能源汽车智能化、网联化程度的提升,研发测试面临三大核心挑战:多协议融合(CAN FD/LIN/以太网)、高实时性数据交互需求、复杂工况下…...
JSON的基础知识
文章目录 前言json协议的基本格式json 数组类型 的语法规则json协议报文的实例json常见的一些格式错误在gd32中使用cjson库小结 前言 json协议在互联网应用,物联网应用中都会用到。所谓工欲善其事必先利其器,我们需要学习了解json协议的具体格式…...
week2|机器学习(吴恩达)学习笔记
一、多维特征 1.1、什么是多维特征? 1)在我们的原始估计房价的版本中,我们只有一个变量: x x x 来预估 y y y 2)但是现在假设你也知道其他的参数变量,那么我们就可以引入多个参数来提高预测 y y y的准确…...
各类神经网络学习:(七)GRU 门控循环单元(上集),详细结构说明
上一篇下一篇LSTM(下集)GRU(下集) GRU(门控循环单元) 它其实是 R N N RNN RNN 和 L S T M LSTM LSTM 的折中版,有关 R N N RNN RNN 和 L S T M LSTM LSTM 请参考往期博客。 实际应用要比 …...
uniapp利用第三方(阿里云)实现双人视频/音频通话功能(附完整的项目代码)
要在UniApp中利用阿里云实现双人视频/音频通话功能,你需要使用阿里云的实时音视频服务(RTC)。以下是一个基本的实现步骤和示例代码。 基本的操作步骤 注册阿里云账号并开通RTC服务: 访问阿里云官网,注册账号并开通RTC服务。 获取AppID和AppKey: 在RTC控制台创建应用,…...
wsl2的centos7安装jdk17、maven
JDK安装 查询系统中的jdk rpm -qa | grep java按照查询的结果,删除对应版本 yum -y remove java-1.7.0-openjdk*检查是否删除 java -version 下载JDK17 JDK17,下载之后存到wsl目录下(看你自己)然后一键安装 sudo rpm -ivh jd…...
Android 单例模式全解析:从基础实现到最佳实践
单例模式(Singleton Pattern)是软件开发中常用的设计模式,其核心是确保一个类在全局范围内只有一个实例,并提供全局访问点。在 Android 开发中,单例模式常用于管理全局资源(如网络管理器、数据库助手、配置…...
Redis GEO
Redis GEO 引言 Redis GEO是Redis数据库中的一种高级功能,允许用户存储地理位置信息并执行基于地理空间查询的操作。本文将详细介绍Redis GEO的基本概念、使用方法以及在实际应用中的优势。 基本概念 GEO编码 GEO编码是指将地理位置信息(如经纬度&a…...
vulnhub-serile靶机通关攻略
下载地址:https://www.vulnhub.com/entry/serial-1,349/ 靶机安装特殊,附带安装参考文章:https://zhuanlan.zhihu.com/p/113887109 扫描IP地址 arp-scan -l扫描端口 nmap -p- 192.168.112.141访问80端口 线索指向cookie cookie是base64编…...
SAP-ABAP:OData 协议深度解析:架构、实践与最佳应用
OData 协议深度解析:架构、实践与最佳应用 一、协议基础与核心特性 协议定义与目标 定位:基于REST的开放数据协议,标准化数据访问接口,由OASIS组织维护,最新版本为OData v4.01。设计哲学:通过统一资源标识符(URI)和HTTP方法抽象数据操作,降低异构系统集成复杂度。核心…...
408 计算机网络 知识点记忆(3)
前言 本文基于王道考研课程与湖科大计算机网络课程教学内容,系统梳理核心知识记忆点和框架,既为个人复习沉淀思考,亦希望能与同行者互助共进。(PS:后续将持续迭代优化细节) 往期内容 408 计算机网络 知识…...
java学习笔记10——集合框架
枚举类的使用 Collection接口继承树 Map接口继承树 Collection 接口方法 总结: 集合框架概述 1.内存层面需要针对于多个数据进行存储。此时,可以考虑的容器有:数组、集合类2.数组存储多个数据方面的特点:> 数组一旦初始化,其长度就是确定的…...
埃文科技企业AI大模型一体机——昇腾体系+DeepSeek+RAG一站式解决方案
面对企业级市场海量数据资产与复杂业务场景深度耦合的刚需,埃文科技重磅推出基于华为昇腾算力DeepSeek大模型的企业一体机产品,提供DeepSeek多版本大模型一体机选择,为企业提供本地昇腾算力DeepSeek大模型RAG知识库的一体化解决方案ÿ…...
蓝桥杯---BFS解决FloofFill算法1---图像渲染
文章目录 1.算法简介2.题目概述3.算法原理4.代码分析 1.算法简介 这个算法是关于我们的floodfill的相关的问题,这个算法其实从名字就可以看出来:洪水灌溉,其实这个算法的过程就和他的名字非常相似,下面的这个图就生动的展示了这个…...
个人博客网站从搭建到上线教程
步骤1:设计个人网站 设计个人博客网站的风格样式,可以在各个模板网站上多浏览浏览,以便有更多设计网站风格样式的经验。 设计个人博客网站的内容,你希望你的网站包含哪些内容如你的个人基本信息介绍、你想分享的项目、你想分享的技术文档等等。 步骤2:选择开发技术栈 因…...
【FreeRTOS】裸机开发与操作系统区别
🔎【博主简介】🔎 🏅CSDN博客专家 🏅2021年博客之星物联网与嵌入式开发TOP5 🏅2022年博客之星物联网与嵌入式开发TOP4 🏅2021年2022年C站百大博主 🏅华为云开发…...
力扣每日一题:2712——使所有字符相等的最小成本
使所有字符相等的最小成本 题目示例示例1示例2 题解这些话乍一看可能看不懂,但是多读两遍就明白了。很神奇的解法,像魔术一样。 题目 给你一个下标从 0 开始、长度为 n 的二进制字符串 s ,你可以对其执行两种操作: 选中一个下标…...
Java EE(17)——网络原理——IP数据报结构IP协议解析(简述)
一.IP数据报结构 (1)版本:指明协议的版本,IPv4就是4,IPv6就是6 (2)首部长度:单位是4字节,表示IP报头的长度范围是20~60字节 (3)8位区分服务:实际上只有4位TOS有效,分别是最小延时,最…...
Pycharm运行时报“Empty suite”,可能是忽略了这个问题
问题:使用Pycharm运行testcases目录下的.py文件,报“Empty suite”,没有找到测试项。 排查过python解释器、pytest框架安装等等,依然报这个错,依然没找到,最后终端运行: pytest test_demo.py&a…...
Linux快速安装docker和docker-componse步骤
在 CentOS 7 上安装 Docker 和 Docker Compose 的步骤如下: 1. 安装 Docker 1.1. 更新系统 首先,确保你的系统是最新版本: sudo yum update -y1.2. 安装必要的包 安装 yum-utils,这是管理 YUM 源的工具: sudo yu…...
OP2177运算放大器:高性能模拟信号处理的关键元件
在现代电子系统中,模拟信号处理至关重要,运算放大器作为模拟电路的核心部件,其性能优劣直接影响系统的整体表现。OP2177 是一款具有卓越性能的运算放大器,在众多领域有着广泛应用。以下将结合相关资料,对 OP2177 进行全…...
paddle ocr
paddle ocr paddle ocr笔记准备工作referenceto onnx文本检测文本检测文字识别 paddle ocr笔记 准备工作 下载字典ppocr_keys_v1.txt,下标从1开始模型转换 reference paddlepaddle to onnx 下载模型,或者直接使用python跑一下并且把本地模型拿过来…...
通过动态获取项目的上下文路径来确保请求的 URL 兼容两种启动方式(IDEA 启动和 Tomcat 部署)下都能正确解析
背景 因为在不同的启动环境下,获取上下文路径的方式需要有所调整。在 IDEA 中运行时,路径是基于当前页面的 URL(如 index.html),而在 Tomcat 部署时,它是基于项目上下文路径(如 ssm-project&am…...
Spring Boot 整合 ElasticJob 分布式任务调度教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot 整合 ElasticJob 分布式任务调度教程 一、ElasticJob 简介 ElasticJob 是当当网开源的分布式任务调度解决方案,支持: …...
Django项目之订单管理part6(message组件和组合搜索组件)
一.前言 我们前面讲的差不多了,接着上节课讲,今天要来做一个撤单要求,我们可以用ajax请求,但是我这里介绍最后一个知识点,message组件,但是我会把两种方式都讲出来的,讲完这个就开始讲我们最重…...
[MySql] 多表关系, 多表查询
一. 多表关系 1.1 一对多 例如: 员工 - 部门表 (一个部门可以有多个员工) 并且在多的一方增加一个字段关联一的一方的主键. 外键约束: 物理外键 (使用 foreign key 定义外键关联另一张表的主键) 缺点: 影响增删改效率; 仅用于单节点, 不适用与集群; 易引发死锁, 性能低; …...
Open GL ES ->GLSurfaceView在正交投影下的图片旋转、缩放、位移
XML文件 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:o…...
一文详解QT环境搭建:Windows使用CLion配置QT开发环境
在当今的软件开发领域,跨平台应用的需求日益增长,Qt作为一款流行的C图形用户界面库,因其强大的功能和易用性而备受开发者青睐。与此同时,CLion作为一款专为C/C打造的强大IDE,提供了丰富的特性和高效的编码体验。本文将…...
MSTP和链路聚合
MSTP 802.1S --- MSTP --- 多生成树协议 --- 就是在RSTP基础上,再针对链路利用率低问题进行优化,可以和RSTP以及STP向下兼容。 实例 --- Instance --- 可以理解为一个V LAN或者多个VALN的集合。一个交换网络可以针对一个实例创建一棵树,起到…...
每天学一个 Linux 命令(8):ls
大家好,欢迎来到《每天掌握一个Linux命令》系列。在这个系列中,我们将逐步学习并熟练掌握Linux命令,今天,我们要学习的命令是ls。 01 什么是ls命令 在Linux系统中,ls命令是“list”的缩写,其英文全称为“list directory contents”,即“列出目录内容”。该命令非常实用…...
交换机、路由器、VLAN、单臂路由、三层交换、STP
华为模拟安装 1.依次安装wincap 2.wireshark 3.virtual box 4.ensp 一、设置 1.virtual box设置 2.计算机防火墙允许以上程序 3.eNSP设置 路由器:AR2240 交换机:S5700、CE12800 防火墙USG6000V 交换机 一、交换机工作原理 1、回顾 二层交换机…...
算法 | 2024最新算法:斑翠鸟优化算法原理,公式,应用,算法改进研究综述,matlab代码
基于斑翠鸟优化算法的原理、应用及改进研究综述 一、算法原理 斑翠鸟优化算法(Pied Kingfisher Optimizer, PKO)是2024年由Bouaouda等人提出的一种新型仿生智能优化算法,其灵感来源于斑翠鸟的捕食行为与共生关系。算法通过模拟斑翠鸟的栖息悬停、潜水捕鱼及与其他生物的共生…...
六十天Linux从0到项目搭建(第二十二天)(pipe、管道四种场景)
1 关于 pipe 系统调用的解析 int pipe(int pipefd[2]) 是 Unix/Linux 系统中用于创建匿名管道的系统调用。以下是关于管道特点的详细解释: 输出型参数 pipefd[2] 是输出型参数,调用成功后: pipefd[0] 存放管道的读取端文件描述符 pipefd[1…...
数据安全与网络安全——问答复习
目录 1、请简要分析勒索软件攻击的原理,并给出技术防护⽅案。 勒索软件攻击原理: 技术防护⽅案 2、举例数据安全问题 数据泄露 数据篡改 数据丢失 3、如何应对数据安全问题 技术层⾯ 管理层⾯ 4、软件漏洞 产⽣原因: 缓冲区溢出漏洞: 注⼊漏…...
ESP-01模块连接手机热点问题及解决方法
在使用ESP-01模块连接手机热点时,可能会遇到一些问题。本文将详细介绍如何解决这些问题,并分享最终通过将WiFi切换到2.4GHz成功解决问题的经验。 一、问题描述 在尝试使用ESP-01模块连接手机热点时,遇到了连接失败的问题。以下是操作过程中…...
go中锁的入门到进阶使用
Go 并发编程:从入门到精通的锁机制 引言:为什么需要锁? Go 语言以其天生支持并发的特性深受开发者喜爱,但并发带来的问题也不容小觑,比如数据竞争、并发安全等。如果多个 Goroutine 访问同一个变量,没有做…...
JS判断对象是否为空的方法
在 JavaScript 中,判断一个对象是否为空对象(即没有自身可枚举属性),可以通过以下方法实现: 方法 1:使用 Object.keys() javascript function isEmptyObject(obj) {// 确保是普通对象(排除 n…...
idea导入tomcat的jar
概述 对于老项目,未使用 Maven/Gradle 管理依赖的,在需要编译 Servlet/JSP 代码时,需要手动添加 Tomcat JAR 依赖(如 servlet-api.jar)方能进行编绎。 步骤: 1、找到 Tomcat 的 JAR 文件 进入 Tomcat 安…...
Linux 下安装和使用 Jupyter Notebook
Jupyter Notebook / Lab 是 Python 开发和数据分析中不可或缺的工具。为了避免环境污染,推荐使用虚拟环境方式安装并启动它。本教程将教你如何: 安装 Python、pip、venv使用虚拟环境安装 Jupyter汉化安装实用插件设置登录密码启动并远程访问编写一个一键…...
【Ubuntu常用命令】
1.将本地服务器文件或文件夹传输到远程服务器 文件 scp /data/a.txt administrator10.60.51.20:/home/administrator/ 文件夹 scp -r /data/ administrator10.60.51.20:/home/administrator/ 2.从远程服务器传输文件到本地服务器 scp administrator10.60.51.20:/data/a.txt /h…...
UR机械臂sim2real推荐包
推荐一个和ur机械臂配套的interface: ur_rtde Universal Robots RTDE C Interface — ur_rtde 1.6.0 documentation 也欢迎大家提供新想法和bug...
HTTP协议深度解析详解
HTTP协议深度解析详解 一、HTTP协议基础架构 1.1 请求响应模型 #mermaid-svg-pAGwQipduFJRm11I {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-pAGwQipduFJRm11I .error-icon{fill:#552222;}#mermaid-svg-pAGwQipd…...
算法学习第十七天:LRU缓存与布隆过滤器
LRU缓存与布隆过滤器 目录 LRU缓存 基本概念实现原理C代码实现 布隆过滤器 基本概念实现原理C代码实现 LRU缓存 基本概念 LRU(Least Recently Used):最近最少使用策略,当缓存空间不足时,淘汰最久未被访问的数据。…...
html中img标签直接使用border-radius时会图片进行了遮挡
前言 该问题是我写完项目之后,UI走查发现的问题,虽然我也发现了问题,但是改起来,不好改,就耽搁了。后面UI还是要求要改。一直找不到解决方案,歪打正着通过MDN官网偶然看到的clip-path属性。 需求 一个图…...
【Keepalived】Keepalived-2.3.3明确结束对CentOS 7的支持
2025年3月30日,官方发布了Keepalived的最新版,版本号:2.3.3 而2024年11月3日发布的2.3.2版本,在CentOS 7.9上编译的时候,就出现了报错,但是在Alma Linux 8.10上,则可以成功编译安装,…...
Docker学习--容器生命周期管理相关命令--docker pause/unpause 命令
docker pause 命令的作用: 用于暂停一个或多个容器中的所有进程。 语法: docker pause CONTAINER [CONTAINER…](要操作的容器的名称,可以同时操作多个)。 实例: ①暂停一个容器及其所有进程:…...