当前位置: 首页 > news >正文

【MySQL】表的增删查改(进阶)

目录

1.数据库约束

1.1NOT NULL:非空约束

1.2UNIQUE:唯一值约束

1.3DEFAULT:默认值约束

1.4PRIMARY KEY:主键约束

1.5FOREIGN KEY:外键约束

1.6CHECK约束

2.表的设计

2.1一对一

2.2一对多

2.3多对多

3.新增

4.查询

4.1聚合查询

4.1.1聚合查询

4.1.2GROUP BY

4.2联合查询

4.2.1内连接 

4.2.2外连接

4.2.3自连接

4.2.4子查询

4.2.5合并查询


1.数据库约束

1.1NOT NULL:非空约束

mysql> create table student (id int, name varchar(20) not null);
Query OK, 0 rows affected (0.03 sec)mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into student values (null,null);
ERROR 1048 (23000): Column 'name' cannot be null //id可以为空但是name不能为空

1.2UNIQUE:唯一值约束

不允许存在两行数据,在这个指定列上重复。

mysql> create table student(id int unique,name varchar(20));
Query OK, 0 rows affected (0.03 sec)mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  | UNI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into student values(1,'zhangsan');
Query OK, 1 row affected (0.00 sec)mysql> insert into student values(1,'wangwu');
ERROR 1062 (23000): Duplicate entry '1' for key 'id'//重复条目

1.3DEFAULT:默认值约束

可自定义默认值

mysql> create table student (id int,name varchar(20) default '未命名');
Query OK, 0 rows affected (0.05 sec)mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | 未命名  |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into student (id) values (1);
Query OK, 1 row affected (0.04 sec)mysql> select * from student;
+------+--------+
| id   | name   |
+------+--------+
|    1 | 未命名 |
+------+--------+
1 row in set (0.00 sec)

1.4PRIMARY KEY:主键约束

主键就是一条数据的身份标识,是not null 和 unique 的合体;

在数据库中,通过主键约束来指定某个列作为主键;

一个表中只能有一个主键

mysql> create table student (id int primary key,name varchar(20));
Query OK, 0 rows affected (0.05 sec)mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into student values(1,'zhangsan');
Query OK, 1 row affected (0.00 sec)mysql> insert into student values(null,'zhangsan');
ERROR 1048 (23000): Column 'id' cannot be null
mysql> insert into student values(1,'zhangsan');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

自增主键:auto_increment,允许客户端在插入数据时,不手动指定主键的值,即可以是null,而是交给MySQL自行分配,确保分配出来的这个主键的值是和之前不重复的,也可以手动指定值。

mysql> create table student (id int primary key auto_increment,name varchar(20));
Query OK, 0 rows affected (0.05 sec)mysql> insert into student values(null,'zhangsan');
Query OK, 1 row affected (0.04 sec)mysql> insert into student values(null,'wangwu');
Query OK, 1 row affected (0.04 sec)mysql> insert into student values(8,'zhaoliu');
Query OK, 1 row affected (0.04 sec)mysql> insert into student values(null,'sunquan');
Query OK, 1 row affected (0.04 sec)mysql> select * from student;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  8 | zhaoliu  |
|  9 | sunquan  |
+----+----------+
4 rows in set (0.00 sec)

1.5FOREIGN KEY:外键约束

格式:foreign key(子表中受到约束的列)reference 父表 (父表中起到约束效果的列);

创建外键时,修改的是子表的代码,父表代码不受影响。

mysql> create table class (classId int primary key,className varchar(20));
Query OK, 0 rows affected (0.02 sec)mysql> insert into class values (1,'class602'),-> (2,'class709'),-> (3,'class303');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> create table student (studentId int primary key auto_increment, name varchar(20),classId int,-> foreign key(classId) references class(classId));
Query OK, 0 rows affected (0.03 sec)

注意:

1> 插入/修改子表中受约束的这一列的数据,要保证结果在父表中存在;

2> 删除/修改父表中的数据,要看看这个数据是否在子表中被使用了,如果被使用了,则不能进行删除/修改; 

3> 删表时要先删子表再删父表,否则删不掉

mysql> insert into student values(1,'zhangsan',8);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`javasql`.`student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`classId`) REFERENCES `class` (`classId`))mysql> insert into student values(1,'zhangsan',3);
Query OK, 1 row affected (0.01 sec)mysql> delete from class where classId = 2;
Query OK, 1 row affected (0.01 sec)mysql> delete from class where classId = 3;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`javasql`.`student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`classId`) REFERENCES `class` (`classId`))mysql> drop table class;
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
mysql> drop table student;
Query OK, 0 rows affected (0.02 sec)mysql> drop table class;
Query OK, 0 rows affected (0.01 sec)

1.6CHECK约束

写一个具体的条件表达式,符合条件则可以插入/修改,不符合条件就失败;

对MySQL5来说,并不支持check,写上不会报错也没啥作用。

2.表的设计

关系是实体和实体之间的关联关系,数据库中有四种关系

一对一,一对多,多对多,没关系

2.1一对一

举例:学生与账号

1> student ( id, name, age, classId……)

     account ( accountId, username, password, studentId……)

2> student ( id, name, age, classId, accountId……)

     account ( accountId, username, password……)

3> student_account ( id, name, classId, username, password……) 两张表放一起

2.2一对多

举例:学生与班级

class (classId, className……)

student (studentId, name, classId……)

2.3多对多

表示多对多关系时需要引入一个关联表

举例:学生与课程

student (id, name……)

course (id, name……)

student_course ( studentId, courseId) --- 关联表

3.新增

格式:insert into 表名 select ……

将 插入 insert 和 查询 select 操作合并在一起,即将查询出来的结果直接插入另一个表中,注意:两个表列的数目,类型,约束等要一一对应。

mysql> create table student (id int,name varchar(20));
Query OK, 0 rows affected (0.05 sec)mysql> create table student2 (id int,name varchar(20));
Query OK, 0 rows affected (0.01 sec)mysql> insert into student values (1,'zhangsan'),(2,'lisi'),(3,'wangwu');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> insert into student2 select * from student;
Query OK, 3 rows affected (0.04 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> select * from student2;
+------+----------+
| id   | name     |
+------+----------+
|    1 | zhangsan |
|    2 | lisi     |
|    3 | wangwu   |
+------+----------+
3 rows in set (0.00 sec)mysql> insert into student2 select name from student;
ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> insert into student2 select name,id from student;
ERROR 1366 (HY000): Incorrect integer value: 'zhangsan' for column 'id' at row 1

4.查询

4.1聚合查询

4.1.1聚合查询

函数说明
COUNT( [ DISTINCT ] expr)返回查询到的数据的 数量
SUM( [ DISTINCT ] expr)返回查询到的数据的 总和,不是数字没有意义
AVG( [ DISTINCT ] expr)返回查询到的数据的 平均值,不是数字没有意义
MAX( [ DISTINCT ] expr)返回查询到的数据的 最大值,不是数字没有意义
MIN( [ DISTINCT ] expr)返回查询到的数据的 最小值,不是数字没有意义

COUNT:

计算数据的数量时,有时会不计入空值的个数;

空格不能乱敲,count  () 会报错,正确为count()。 

mysql> insert into examresult values (null,null,null,null,null);
Query OK, 1 row affected (0.00 sec)mysql> select * from examresult;
+------+----------+---------+------+---------+
| id   | name     | Chinese | Math | English |
+------+----------+---------+------+---------+
|    1 | zhangsan |    67.0 | 98.0 |    56.0 |
|    2 | lisi     |    87.0 | 58.0 |    98.0 |
|    3 | wangwu   |    88.0 | 66.0 |    90.0 |
|    5 | 孙权     |    67.0 | 89.0 |    72.0 |
|    6 | 孙尚香   |    80.0 | 98.0 |    90.0 |
|    7 | 孙悟空   |    NULL | NULL |    NULL |
| NULL | NULL     |    NULL | NULL |    NULL |
+------+----------+---------+------+---------+
7 rows in set (0.00 sec)mysql> select count(*) from examresult;
+----------+
| count(*) |
+----------+
|        7 |
+----------+
1 row in set (0.00 sec)mysql> select count(name) from examresult;
+-------------+
| count(name) |
+-------------+
|           6 |
+-------------+
1 row in set (0.01 sec)

SUM:

将每一列的这一行先转化成double,再按照double的方式进行累加;

若无法相加,也能编译成功,但会报警告。

mysql> select sum(Chinese) from examresult;
+--------------+
| sum(Chinese) |
+--------------+
|        389.0 |
+--------------+
1 row in set (0.01 sec)mysql> select sum(name) from examresult;
+-----------+
| sum(name) |
+-----------+
|         0 |
+-----------+
1 row in set, 6 warnings (0.00 sec)mysql> show warnings;
+---------+------+----------------------------------------------+
| Level   | Code | Message                                      |
+---------+------+----------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'zhangsan' |
| Warning | 1292 | Truncated incorrect DOUBLE value: 'lisi'     |
| Warning | 1292 | Truncated incorrect DOUBLE value: 'wangwu'   |
| Warning | 1292 | Truncated incorrect DOUBLE value: '孙权'     |
| Warning | 1292 | Truncated incorrect DOUBLE value: '孙尚香'   |
| Warning | 1292 | Truncated incorrect DOUBLE value: '孙悟空'   |
+---------+------+----------------------------------------------+
6 rows in set (0.00 sec)

AVG、MAX、MIN

mysql> select avg(Chinese + Math + English) from examresult;
+-------------------------------+
| avg(Chinese + Math + English) |
+-------------------------------+
|                     240.80000 |
+-------------------------------+
1 row in set (0.01 sec)mysql> select max(Chinese) from examresult;
+--------------+
| max(Chinese) |
+--------------+
|         88.0 |
+--------------+
1 row in set (0.01 sec)mysql> select min(English) from examresult;
+--------------+
| min(English) |
+--------------+
|         56.0 |
+--------------+
1 row in set (0.00 sec)

4.1.2GROUP BY

指定这一列,按照这一列进行分组,这一列中,数值相同的行会被放到同一组;

注意:查询时select中指定的列必须是当前group by 指定的列,如果想用其他的列,其他的列必须放到聚合函数中,否则查询的结果无意义。

mysql> select * from emp;
+----+--------+--------+--------+
| id | name   | role   | salary |
+----+--------+--------+--------+
|  1 | 张三   | 讲师   |  10000 |
|  2 | 李四   | 讲师   |  11000 |
|  3 | 王五   | 讲师   |  12000 |
|  4 | 赵六   | 学管师 |   9000 |
|  5 | 田七   | 学管师 |   8500 |
|  6 | 龙傲天 | 老板   | 100000 |
+----+--------+--------+--------+
6 rows in set (0.00 sec)mysql> select role,avg(salary) from emp group by role;
+--------+-------------+
| role   | avg(salary) |
+--------+-------------+
| 学管师 |   8750.0000 |
| 老板   | 100000.0000 |
| 讲师   |  11000.0000 |
+--------+-------------+
3 rows in set (0.01 sec)mysql> select role,name ,avg(salary) from emp group by role; //无意义
+--------+--------+-------------+
| role   | name   | avg(salary) |
+--------+--------+-------------+
| 学管师 | 赵六   |   8750.0000 |
| 老板   | 龙傲天 | 100000.0000 |
| 讲师   | 张三   |  11000.0000 |
+--------+--------+-------------+
3 rows in set (0.00 sec)

分组前的条件语句:where

分组后的条件语句:having

mysql> select role,avg(salary) from emp where name != '张三' group by role;
+--------+-------------+
| role   | avg(salary) |
+--------+-------------+
| 学管师 |   8750.0000 |
| 老板   | 100000.0000 |
| 讲师   |  11500.0000 |
+--------+-------------+
3 rows in set (0.01 sec)mysql> select role,avg(salary) from emp group by role having avg(salary) < 20000;
+--------+-------------+
| role   | avg(salary) |
+--------+-------------+
| 学管师 |   8750.0000 |
| 讲师   |  11000.0000 |
+--------+-------------+
2 rows in set (0.01 sec)mysql> select role,avg(salary) from emp where name != '张三' group by role having avg(salary) < 20000;
+--------+-------------+
| role   | avg(salary) |
+--------+-------------+
| 学管师 |   8750.0000 |
| 讲师   |  11500.0000 |
+--------+-------------+
2 rows in set (0.00 sec)

4.2联合查询

把所有表结合再筛选,效率十分低下。

笛卡尔积:任意两张表都可以算,但是如果两张表没有关系,计算的结果无意义。

       格式:select * from 表名, 表名……

连接条件:筛选掉无意义的数据。

建表阶段:

mysql> create table classes(id int primary key auto_increment, name varchar(20), `desc` varchar(100));
Query OK, 0 rows affected (0.02 sec)mysql> create table student(id int primary key auto_increment, sn varchar(20), name varchar(20), qq_mail varchar(20), class_id int);
Query OK, 0 rows affected (0.02 sec)mysql> create table course(id int primary key auto_increment, name varchar(20));
Query OK, 0 rows affected (0.02 sec)mysql> create table score(score decimal(3,1), student_id int, course_id int);
Query OK, 0 rows affected (0.02 sec)mysql> insert into classes(name, `desc`) values-> ('计算机系2022级16班', '计算机原理、C语言、Java语言'),-> ('中文系2022级3班','中国传统文学、古代文学鉴赏'),-> ('自动化2022级9班','机械自动化');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> insert into student(sn, name, qq_mail, class_id) values-> ('09982','张三','zhangsan@qq.com',1),-> ('00835','李四',null,1),-> ('00391','王五',null,1),-> ('00031','赵六','zhaoliu@qq.com',1),-> ('00054','田七',null,1),-> ('51234','钱八','qianba@qq.com',2),-> ('83223','孙九',null,2),-> ('09527','吴十','wushi@qq.com',2);
Query OK, 8 rows affected (0.01 sec)
Records: 8  Duplicates: 0  Warnings: 0mysql> insert into course(name) values-> ('Java'),('中国传统文化'),('计算机原理'),('语文'),('高阶数学'),('英文');
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0mysql> insert into score(score, student_id, course_id) values-> (70.5, 1, 1),(98.5, 1, 3),(33, 1, 5),(98, 1, 6),-> (60, 2, 1),(59.5, 2, 5),-> (33, 3, 1),(68, 3, 3),(99, 3, 5),-> (67, 4, 1),(23, 4, 3),(56, 4, 5),(72, 4, 6),-> (81, 5, 1),(37, 5, 5),-> (56, 6, 2),(43, 6, 4),(79, 6, 6),-> (80, 7, 2),(92, 7, 6);
Query OK, 20 rows affected (0.01 sec)
Records: 20  Duplicates: 0  Warnings: 0

提问:查询赵六同学的成绩;

           查询每个班有多少人;

           查询每个同学的总成绩;

           查询每个同学每个课程的成绩

单表查询条件中直接写列名即可,多表查询条件中最好写作 “表名.列名” 

4.2.1内连接 

mysql> select student.name, score.score from student ,score where student.id = score.student_id and student.name = '赵六';
+------+-------+
| name | score |
+------+-------+
| 赵六 |  67.0 |
| 赵六 |  23.0 |
| 赵六 |  56.0 |
| 赵六 |  72.0 |
+------+-------+
4 rows in set (0.01 sec)mysql> select classes.name, count(student.class_id) from student, classes where student.class_id = classes.id group by classes.name;
+--------------------+-------------------------+
| name               | count(student.class_id) |
+--------------------+-------------------------+
| 中文系2022级3班    |                       3 |
| 计算机系2022级16班 |                       5 |
+--------------------+-------------------------+
2 rows in set (0.00 sec)mysql> select student.name, sum(score.score) as summary from student, score where student.id = score.student_id group by student.name;
+------+---------+
| name | summary |
+------+---------+
| 孙九 |   172.0 |
| 张三 |   300.0 |
| 李四 |   119.5 |
| 王五 |   200.0 |
| 田七 |   118.0 |
| 赵六 |   218.0 |
| 钱八 |   178.0 |
+------+---------+
7 rows in set (0.00 sec)mysql> select student.name, course.name as object, score.score from student, score, course where student.id = score.student_id and score.course_id = course.id;
+------+--------------+-------+
| name | object       | score |
+------+--------------+-------+
| 张三 | Java         |  70.5 |
| 张三 | 计算机原理   |  98.5 |
| 张三 | 高阶数学     |  33.0 |
| 张三 | 英文         |  98.0 |
| 李四 | Java         |  60.0 |
| 李四 | 高阶数学     |  59.5 |
| 王五 | Java         |  33.0 |
| 王五 | 计算机原理   |  68.0 |
| 王五 | 高阶数学     |  99.0 |
| 赵六 | Java         |  67.0 |
| 赵六 | 计算机原理   |  23.0 |
| 赵六 | 高阶数学     |  56.0 |
| 赵六 | 英文         |  72.0 |
| 田七 | Java         |  81.0 |
| 田七 | 高阶数学     |  37.0 |
| 钱八 | 中国传统文化 |  56.0 |
| 钱八 | 语文         |  43.0 |
| 钱八 | 英文         |  79.0 |
| 孙九 | 中国传统文化 |  80.0 |
| 孙九 | 英文         |  92.0 |
+------+--------------+-------+
20 rows in set (0.00 sec)

4.2.2外连接

格式:select 列名 from 表名 left/right join 表名 on 条件;

分类:左外连接left join 以左侧表为主,左侧表中的数据在结果中一定存在,若左表存在右表不存在,会将对应的列填为空值;

           右外连接right join 类上;

           全外连接outer join ,MySQL 不支持,Oracle支持。

mysql> select student.name, score.score from student join score on student.id = score.student_id and student.name = '赵 六';
+------+-------+
| name | score |
+------+-------+
| 赵六 |  67.0 |
| 赵六 |  23.0 |
| 赵六 |  56.0 |
| 赵六 |  72.0 |
+------+-------+
4 rows in set (0.00 sec)
mysql> select * from student;
+------+------+
| id   | name |
+------+------+
|    1 | 张三 |
|    2 | 李四 |
|    3 | 王五 |
+------+------+
3 rows in set (0.01 sec)mysql> select * from score;
+------+-------+
| id   | score |
+------+-------+
|    1 |    90 |
|    2 |    80 |
|    4 |    70 |
+------+-------+
3 rows in set (0.00 sec)mysql> select * from student join score on student.id = score.id;
+------+------+------+-------+
| id   | name | id   | score |
+------+------+------+-------+
|    1 | 张三 |    1 |    90 |
|    2 | 李四 |    2 |    80 |
+------+------+------+-------+
2 rows in set (0.00 sec)mysql> select * from student left join score on student.id = score.id;
+------+------+------+-------+
| id   | name | id   | score |
+------+------+------+-------+
|    1 | 张三 |    1 |    90 |
|    2 | 李四 |    2 |    80 |
|    3 | 王五 | NULL |  NULL |
+------+------+------+-------+
3 rows in set (0.00 sec)mysql> select * from student right join score on student.id = score.id;
+------+------+------+-------+
| id   | name | id   | score |
+------+------+------+-------+
|    1 | 张三 |    1 |    90 |
|    2 | 李四 |    2 |    80 |
| NULL | NULL |    4 |    70 |
+------+------+------+-------+
3 rows in set (0.00 sec)

4.2.3自连接

自己和自己做笛卡尔积,把行之间的关系转换为列之间的关系;

为避免重命名,名字要使用别名

格式:select * from 表名 as 别名1, 表名 as 别名2;

mysql> select * from student1;
+------+------+
| id   | name |
+------+------+
|    1 | 张三 |
|    2 | 李四 |
|    3 | 王五 |
+------+------+
3 rows in set (0.00 sec)mysql> select * from student1 as s1, student1 as s2;
+------+------+------+------+
| id   | name | id   | name |
+------+------+------+------+
|    1 | 张三 |    1 | 张三 |
|    2 | 李四 |    1 | 张三 |
|    3 | 王五 |    1 | 张三 |
|    1 | 张三 |    2 | 李四 |
|    2 | 李四 |    2 | 李四 |
|    3 | 王五 |    2 | 李四 |
|    1 | 张三 |    3 | 王五 |
|    2 | 李四 |    3 | 王五 |
|    3 | 王五 |    3 | 王五 |
+------+------+------+------+
9 rows in set (0.00 sec)

4.2.4子查询

嵌在其他SQL语句中的select语句,也叫嵌套查询。

4.2.5合并查询

将两个查询表合并成一个表。

格式:select * from 表1 union (all) select * from 表2;

合并前提:两表参数类型需一一对应,名字可以不同。

mysql> select * from student1;
+------+------+
| id   | name |
+------+------+
|    1 | 张三 |
|    2 | 李四 |
+------+------+
2 rows in set (0.04 sec)mysql> select * from student2;
+------+------+
| id   | name |
+------+------+
|    1 | 张三 |
|    3 | 王五 |
+------+------+
2 rows in set (0.00 sec)mysql> select * from student1 union select * from student2;
+------+------+
| id   | name |
+------+------+
|    1 | 张三 |
|    2 | 李四 |
|    3 | 王五 |
+------+------+
3 rows in set (0.04 sec)mysql> select * from student1 union all select * from student2;
+------+------+
| id   | name |
+------+------+
|    1 | 张三 |
|    2 | 李四 |
|    1 | 张三 |
|    3 | 王五 |
+------+------+
4 rows in set (0.01 sec)

关于表的内容就over啦!

相关文章:

【MySQL】表的增删查改(进阶)

目录 1.数据库约束 1.1NOT NULL&#xff1a;非空约束 1.2UNIQUE&#xff1a;唯一值约束 1.3DEFAULT&#xff1a;默认值约束 1.4PRIMARY KEY&#xff1a;主键约束 1.5FOREIGN KEY&#xff1a;外键约束 1.6CHECK约束 2.表的设计 2.1一对一 2.2一对多 2.3多对多 3.新增…...

Vim几种跳转方式

ps: 以下时我常用的一些跳转指令&#xff0c;用于参考和复习记忆。还有一些后续会更新。 文件内跳转 移动光标 普通模式下左h&#xff0c;右l&#xff0c;上k&#xff0c;下j。&#xff08;可以使用数字hlkj&#xff0c;实现跳跃式移动&#xff09;。 字符间跳转 …...

element-ui 弹窗里面嵌套弹窗,解决第二个弹窗被遮罩层掩盖无法显示的问题

当我们在 element-ui 中使用弹窗嵌套弹窗时&#xff0c;会出现第二个弹窗打开时被一个遮罩层挡着&#xff0c;就像下面这样&#xff1a; 下面提供两种解决方案 &#xff1a; 一、第一种方案 我们查询element-ui 官网可以发现 el-dialog 有这样几个属性&#xff1a; 具体使用就…...

【业务功能篇76】微服务网关路由predicates断言条件-filters路由转换地址-跨域问题-多级目录树化层级设计-mybatisPlus逻辑删除

业务开发-基础业务-分类管理 启动renren-fast如果出现如下错误 -Djps.track.ap.dependenciesfalse 添加相关配置即可 分类管理 1.后端分类接口 JDK8特性&#xff1a;https://blog.csdn.net/qq_38526573/category_11113126.html 在后端服务中我们需要查询出所有的三级分类信…...

apache的ab工具测试网页优化效果速度以及服务器承载

今天为大家介绍一款apache自带的一种的测试网页优化效果速度以及服务器承载的工具——ab.exe。 大家在工作中或者开发中可以使用apache的ab工具来测试自己的网站并发量大小&#xff0c;和某个页面的访问时间。 一、基本用法 如果你是用的是apache的话&#xff0c;那么只要进…...

【进阶篇】MySQL 存储引擎详解

文章目录 0.前言1.基础介绍2.1. InnoDB存储引擎底层原理InnoDB记录存储结构和索引页结构InnoDB记录存储结构&#xff1a;InnoDB索引页结构&#xff1a; 3. MVCC 详解3.1. 版本号分配&#xff1a;3.2. 数据读取&#xff1a;3.3. 数据写入&#xff1a;3.4. 事务隔离级别&#xff…...

Spring集成【MyBatis】和【PageHelper分页插件】整合---详细介绍

一&#xff0c;spring集成Mybatis的概念 Spring 整合 MyBatis 是将 MyBatis 数据访问框架与 Spring 框架进行集成&#xff0c;以实现更便捷的开发和管理。在集成过程中&#xff0c;Spring 提供了许多特性和功能&#xff0c;如依赖注入、声明式事务管理、AOP 等 它所带来给我们的…...

PyCharm下安装配置PySide6开发环境(Qt Designer(打开,编辑)、PyUIC和PyRCC)

一.准备工作 1.安装python和pycharm并配置好环境变量 python安装路径 pycharm安装路径&#xff1a; python系统变量&#xff1a; pycharm环境变量&#xff1a; 注意&#xff1a;正常安装&#xff0c;并勾选ADD PATH一般会自动配好 2.在pycharm创建一个新的python的虚拟环境 …...

pytest fixture 创建一个 requests.session() 对象

当你运行这段代码时&#xff0c;它会执行以下操作&#xff1a; 1. 导入必要的库&#xff1a;pytest 和 requests。 2. 定义一个夹具&#xff08;fixture&#xff09;函数 session&#xff0c;使用 pytest.fixture(scopesession) 装饰器进行标记。这个夹具函数在整个测试会话期…...

深入分析负载均衡情景

本文出现的内核代码来自Linux5.4.28&#xff0c;为了减少篇幅&#xff0c;我们尽量不引用代码&#xff0c;如果有兴趣&#xff0c;读者可以配合代码阅读本文。 一、有几种负载均衡的方式&#xff1f; 整个Linux的负载均衡器有下面的几个类型&#xff1a; 实际上内核的负载均衡…...

WPF基础入门-Class5-WPF命令

WPF基础入门 Class5-WPF命令 1、xaml编写一个button&#xff0c;Command绑定一个命令 <Grid><ButtonWidth"100"Height"40" Command"{Binding ShowCommand}"></Button> </Grid>2、编写一个model.cs namespace WPF_Le…...

云安全攻防(十三)之 使用minikube安装搭建 K8s 集群

使用minikube安装搭建 K8s 集群 Kubernetes 是一个可移植的、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;可促进声明式配置和自动化,一般来说K8s安装有三种方式&#xff0c;分别是Minikube装搭建 K8s 集群&#xff0c;特点是只有一个节点的集群&…...

Python数据分析 | 各种图表对比总结

本期将带领大家一起对在数据可视化的过程中常用的一些图表进行下总结&#xff1a; 条形图 【适用场景】 适用场合是二维数据集&#xff08;每个数据点包括两个值x和y&#xff09;&#xff0c;但只有一个维度需要比较&#xff0c;用于显示一段时间内的数据变化或显示各项之间的…...

linux系统(centos、ubuntu、银河麒麟服务、uos、deepin)判断程序是否已安装,通用判断方法:适用所有应用和命令的判断

前言 项目中需要判断linux服务器中是否已经安装了某个服务 方法有很多种&#xff0c;但是很多都不通用&#xff0c; 脚本代码就不容易做成统一的 解决方案 用下面的脚本代码去进行判断 用jdk测试 脚本意思如下&#xff1a; 输入java -version命令&#xff0c;将返回的字…...

Python3多线程/多进程解决方案(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 文章目录 1. 多线程2. 多进程示例1&#xff1a;multiprocessing.Pool直接实现对一个列表中的每个元素的函数操作示例2&#xff1a;使用苏神写的工具函数实现对一个迭代器中每个元素的函数操作 1. 多线程 2. 多进程 示例1&#xff1a;multiproc…...

在`CentOS`中安装`Docker Engine`

本文总结如何在CentOS中安装Docker Engine 〇、Docker Engine 介绍 Docker Engine是一种开源容器化技术&#xff0c;用于构建和容器化应用程序。Docker引擎作为一个客户端-服务器应用程序: 具有长时间运行守护进程的服务器。指定接口的api&#xff0c;程序可以使用这些接口与…...

[ VMware 虚拟机 ] 启动不了图形界面,报 “The system is running in low-graphics mode” 错误

文章目录 问题现象异常原因解决方案 问题现象 在启动虚拟机的时候&#xff0c;不能正常的进入图形界面&#xff0c;报 “The system is running in low-graphics mode” 错误。 异常原因 启动界面的xorg.conf文件失败并删除。 解决方案 1、点击异常界面上的 “ok”后&…...

如何提高视频清晰度?视频调整清晰度操作方法

现在很多小伙伴通过制作短视频发布到一些短视频平台上记录生活&#xff0c;分享趣事。但制作的视频有些比较模糊&#xff0c;做视频的小伙伴应该都知道&#xff0c;视频画质模糊不清&#xff0c;会严重影响观众的观看体验。 通过研究&#xff0c;总结了以下几点严重影响的点 …...

IO进程线程,文件与目录,实现linux任意目录下ls -la

注意文件的名字、路径是如何输入的。 函数opendir打开目录&#xff0c;struct dirent&#xff0c;struct stat这些结构体的含义。 readdir()函数是一个用于读取目录内容的系统调用或库函数&#xff0c;在类Unix操作系统中&#xff08;如Linux&#xff09;广泛使用。它用于遍历…...

R语言如果列表中有列表,且每个子列表有一个向量:如何转变为仅仅一个列表里面含有向量

引言 有些时候&#xff0c;比如批量读取表格中的某一列的时候&#xff0c;最终你会得到列表里面装列表&#xff0c;且每个列表里面只有一个向量的情况。我们的目标是不要中间这一层列表&#xff0c;而是直接变成列表-向量这种简单的结构&#xff0c;如何完成呢。我觉得有很多方…...

nrm管理源仓库及发布私人npm包

使用nrm管理源及切换源仓库 1.安装nrm源管理器 npm install nrm -g2.查看目前现有的源仓库 通过 nrm ls 查看现有的源 nrm ls 输出&#xff1a;这是目前现有的源 3.切换不同的源 可以通过 nrm use xxx&#xff08;源仓库名&#xff09;来切换不同的源地址 nrm use taobao…...

云计算——虚拟化中的网络架构与虚拟网络(文末送书)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 前期回顾 前言 一.网卡虚拟化 1.网卡虚拟化方法&…...

B - 负环

题目描述 给定一个 n 个点的有向图&#xff0c;请求出图中是否存在从顶点 11 出发能到达的负环。 负环的定义是&#xff1a;一条边权之和为负数的回路。 输入格式 本题单测试点有多组测试数据。 输入的第一行是一个整数 T&#xff0c;表示测试数据的组数。对于每组数据的格…...

居中一个元素(水平+垂直居中)

我们的示例代码全在此基础上修改&#xff1a; ...... <style>* {margin: 0;padding: 0;}.par {width: 600px;height: 400px;background-color: antiquewhite;display: flex;justify-content: center;align-items: center;}.chi1 {width: 60px;height: 40px;backgrou…...

React笔记(二)JSX

一、JSX JSX是javascript XML的简写&#xff0c;实际上是javascript的扩展&#xff0c;既有javascript的语法结构&#xff0c;又有XML的结构 1、JSX的规则要求 jsx必须要有一个根节点 如果不想产生无用的根标签&#xff0c;但是还要遵守JSX的语法的要求&#xff0c;可以使用…...

[多标签分类]MultiLabelBinarizer: 从one-hot 到multi-hot

]MultiLabelBinarizer: 从one-hot 到multi-hot 背景知识One hot encoderLabelEncoderMultiLabelBinarizer总结 背景知识 多类别分类: label space至少有3个label, 且默认每个sample有一个label, 与之相对应的是二元分类Binary classification, 多标签分类: 每个sample有1至多…...

【校招VIP】前端算法考察之排序

考点介绍&#xff1a; 不同的场景中&#xff0c;不同的排序算法执行效率不同。 稳定&#xff1a;冒泡、插入、归并 不稳定&#xff1a;选择、快速、堆排序、希尔排序 『前端算法考察之排序』相关题目及解析内容可点击文章末尾链接查看&#xff01; 一、考点题目 1、使用js实…...

集创北方ICN6211 是一款MIPIDSI转RGB视频桥接IC

ICN6211 1.描述&#xff1a; ICN6211是一个桥接芯片&#xff0c;它接收MIPIDSI输入并发送RGB输出。MIPIDSI最多支持4个车道&#xff0c; 每个车道的最大运行频率为1Gbps&#xff1b;总最大输入带宽为4Gbps&#xff1b;并且还支持MIPI定义的ULPS&#xff08;超 低功耗状态&a…...

SMT制造中的产品质量检验和管理

SMT制造中的质量检验和产品物料管理都是实现高质量、低成本、高效益的重要方法。在SMT加工的过程中&#xff0c;产品质量的检验和质量把控都是重中之重&#xff0c;可以有效的降低产品不良率及返修等造成制造成本升高的风险问题&#xff0c;今天就来跟大家讨论一下SMT制造中我们…...

对接webservice接口时报错:发送方和接收方 Action 不匹配

趁着早上有时间&#xff0c;赶紧记录一下&#xff0c;哈哈。 错误提示如下&#xff1a; 1、英文版&#xff1a; <s:Envelope xmlns:s“http://schemas.xmlsoap.org/soap/envelope/”><s:Body><s:Fault>a:ActionNotSupportedThe message with Action ‘’ ca…...

python实现/直播服务器/聊天服务器/的多种解决方案

python有哪些技术栈 实现直播服务器 在Python中&#xff0c;您可以使用以下技术栈来实现直播服务器&#xff1a; Flask&#xff1a;Flask是一个轻量级的Web框架&#xff0c;可用于构建直播服务器的后端。您可以使用Flask编写API端点来处理直播流的控制和管理。 Django&#xf…...

PbootCMS 3.0.4 SQL注入

1.漏洞复现 PbootCMS 3.0.4&#xff0c;下载仓库 星梦/PbootCMS - Gitee.com 复现 漏洞页面&#xff1a;http://127.0.0.1/?search 或 http://127.0.0.1/?keyword POST请求&#xff1a;1select 1 2.正向分析 从可见功能点正向分析 index.php ... // 引用内核启动文件…...

SpringBoot异步方法支持注解@Async应用

SpringBoot异步方法支持注解Async应用 1.为什么需要异步方法&#xff1f; 合理使用异步方法可以有效的提高执行效率 同步执行(同在一个线程中): 异步执行(开启额外线程来执行): 2.SpringBoot中的异步方法支持 在SpringBoot中并不需要我们自己去创建维护线程或者线程池来…...

UI/UX设计与前端开发:从零到一打造完美用户体验

引言 在当今的软件开发领域&#xff0c;UI/UX设计和前端开发是两个密不可分的环节。UI/UX设计师负责创造出直观、美观、用户友好的界面&#xff0c;而前端开发者则将这些设计转化为实际的、可交互的网页或应用。本文将深入探讨这两个领域的交集&#xff0c;并通过代码示例来展…...

Hadoop Hdfs基本命令

0目录 1.hadoop安装问题处理 2.hdfs基本命令 3.上传/下载文件和文件夹 1.hadoop安装问题处理 如果安装有进程无法启动&#xff0c;如下图 重新检查6个配置文件 Core-site.xml \ hdfs-site.xml \ hadoop-env.sh \ yarn-site.xml \ workers \ yarn-site.xml 来到hadoop313目录…...

Spring Boot 整合MyBatis(超详细)

&#x1f600;前言 本篇博文关于Spring Boot 整合MyBatis&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x…...

【管理运筹学】第 6 章 | 运输问题(4,表上作业法 |闭回路调整法以及特殊情况 | 产销不平衡的运输问题)

文章目录 引言二、表上作业法2.3 改进的方法 —— 闭回路调整法2.4 表上作业法中的特殊情况&#xff08;一&#xff09;无穷多最优解&#xff08;二&#xff09;退化 三、产销不平衡的运输问题3.1 产量大于销量3.2 销量大于产量 写在最后 引言 接下来我们学习表上作业法的最后…...

Greenplum实用技巧

一、通过gp_segment_id查看数据倾斜 gp_segment_id是表中的隐藏列&#xff0c;用来标记该行属于哪个segment节点。因此可以基于该隐藏列进行分组查询&#xff0c;获取每个segment的记录数&#xff0c;从而判断表数据的分布是否均匀或有倾斜。 qb#select gp_segment_id, count…...

以物联网为核心的智慧工地云平台:聚集智能技术,实现建筑工地智慧管理

智慧工地云平台源码&#xff0c;智慧工地项目监管平台源码&#xff0c;智慧工地可视化数据大屏源码 智慧工地云平台是将云计算、大数据、物联网、移动技术和智能设备等信息化技术手段&#xff0c;聚集在建筑工地施工管理现场&#xff0c;围绕人员、机械、物料、环境等关键要素&…...

Java项目-苍穹外卖-Day05-Redis技术应用

1.店铺营业状态设置 需求分析和设计 左上角要求是有回显的 所以至少两个接口 1.查询营业状态接口&#xff08;分为了管理端和用户端&#xff09; 2.修改营业状态接口 因为管理端和用户端路径不同&#xff0c;所以现在是至少三个接口的 可以发现如果存到表里除了id只有一个…...

linux安装jmeter

linux安装jmeter 部署java1.8 下载jmeter安装包&#xff1a;官网、网盘5.6.2版本 # 解压 rootiZbp1at7nu2rpq4xn4zaf1Z:/opt/jmeter# sudo tar -xzf apache-jmeter-5.6.2.tgz # 加入环境变量 rootiZbp1at7nu2rpq4xn4zaf1Z:/opt/jmeter/apache-jmeter-5.6.2# export JMETER/op…...

【笔记】泛型以及如何绕过泛型定义

泛型定义以及其带来的好处 泛型使类型&#xff08;类和接口&#xff09;能够在定义类、接口和方法时成为参数。与方法声明中使用的更熟悉的形式参数非常相似&#xff0c;类型参数为您提供了一种通过不同输入重复使用相同代码的方法。区别在于形式参数的输入是值&#xff0c;而…...

JAVA JNA 调用C接口的三种方式

文章目录 1. 准备一个共享库文件2. JNA姿势1—继承Library接口3. JNA姿势2—直接NativeLibrary.getInstance3. JNA姿势3—Native方法 1. 准备一个共享库文件 test.c #include <stdio.h> int test(char *input){printf("input:%s\n",input);return 0; }libtes…...

StarRocks入门到熟悉

1、部署 1.1、注意事项 需要根据业务需求设计严谨的集群架构&#xff0c;一般来说&#xff0c;需要注意以下几项&#xff1a; 1.1.1、FE数量及高可用 FE的Follower要求为奇数个&#xff0c;且并不建议部署太多&#xff0c;通常我们推荐部署1个或3个Follower。在三个Followe…...

华为AR路由器 典型配置案例——以太网交换

目录 Eth-Trunk 例&#xff1a;配置三层链路聚合 组网需求 操作步骤 检查配置结果 配置脚本 VLAN 举例&#xff1a;配置基于接口划分VLAN&#xff0c;实现同一VLAN内的互通&#xff08;同设备&#xff09; 组网需求 操作步骤 检查配置结果 配置脚本 举例&#xff…...

DP读书:鲲鹏处理器 架构与编程(十三)操作系统内核与云基础软件

操作系统内核与云基础软件 鲲鹏软件构成硬件特定软件 鲲鹏软件构成硬件特定软件1. Boot Loader2. SBSA 与 SBBR3. UEFI4. ACPI 操作系统内核Linux系统调用Linux进程调度Linux内存管理Linux虚拟文件系统Linux网络子系统Linux进程间通信Linux可加载内核模块Linux设备驱动程序Linu…...

Vue2项目练手——通用后台管理项目第一节

Vue2项目练手——通用后台管理项目 知识补充yarn和npm区别npm的缺点&#xff1a;yarn的优点 npm查看镜像和设置镜像 项目介绍项目的技术栈 项目搭建文件目录 创建路由&#xff0c;引入element-uirouter/index.jsmain.jspages/Users.vuepages/Main.vuepages/Home.vuepages/Login…...

「Vue|网页开发|前端开发」02 从单页面到多页面网站:使用路由实现网站多个页面的展示和跳转

本文主要介绍如何使用路由控制来实现将一个单页面网站扩展成多页面网站&#xff0c;包括页面扩展的逻辑&#xff0c;vue的官方路由vue-router的基本用法以及扩展用法 文章目录 本系列前文传送门一、场景说明二、基本的页面扩展页面扩展是在扩什么创建新页面的代码&#xff0c;…...

【Nginx20】Nginx学习:FastCGI模块(二)缓存配置

Nginx学习&#xff1a;FastCGI模块&#xff08;二&#xff09;缓存配置 通过上篇文章的学习&#xff0c;普通的 PHP 与 Nginx 的连接就已经没啥大问题了。一般的网站直接那套配置就够了&#xff0c;这也是 Nginx 非常友好的一面。很多在默认的配置文件中注释掉的内容&#xff0…...

苹果支付外包开发流程

苹果支付的实现流程主要涉及集成苹果的支付系统——Apple Pay&#xff0c;以及在你的应用中处理支付交易。以下是一个简要的实现流程概述&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.开发者账号…...