5.数据表基本操作

目录

1.创建数据表

创建数据表的语法格式:

查看当前数据库的表:

主键

1.单字段主键

(1)在定义列的同时指定主键,语法规则如下:

(2)在定义完所有列之后指定主键。

2.多字段联合主键

外键:

非空约束:

唯一性约束:

(1)在定义完列之后直接指定唯一约束,语法规则如下:

(2)在定义完所有列之后指定唯一约束,语法规则如下:

默认约束:

表的属性值自动增加:

2.查看表结构

DESCRIBE/DESC语句可以查看表的字段信息,

查看表详细结构语句SHOW CREATE TABLE

3.修改数据表

修改表名:

修改字段的数据类型

修改字段名:

添加字段:

1、添加无完整性约束条件的字段

2、添加有完整性约束条件的字段

3、在表的第一列添加一个字段

4、在表的指定列之后添加一个字段

删除字段:

修改字段的排列位置:

1、修改字段为表的第一个字段

2、修改字段到表的指定列之后

更改表的存储引擎:

删除表的外键约束:

4、删除数据表

1、删除没有被关联的表:

2、删除被其他表关联的主表:

5、练习题

1、创建数据库Market,在Market 中创建数据表customers,customers 表结构如表4.6所示 并按要求进行操作。

2、在Market中创建数据表orders,orders表结构如表4.7所示,按要求进行操作。


1.创建数据表

创建好数据库之后,接下来就是创建数据表,所谓创建数据表就是在数据库中新建行列式表格。

创建数据表的过程也是规定数据列属性的过程,也是实施数据完整性的约束过程。

注意:创建表之前,要用USE dbname切换到指定数据库中。

比如:use  test.;

就是切换到名称为test的数据库中。

创建数据表的语法格式:

create table <表名>

字段名1 数据类型【列级约束条件】 默认值,

字段名2 数据类型【列级约束条件】 默认值,

。。。。。。。

【表级约束条件】

);

比如:

mysql> create table tb_emp1-> (-> id int(11),-> name varchar(25),-> deptid int(11),-> salary float-> );

语句执行后,便创建了一个名称为tb_emp1的数据表,

查看当前数据库的表:

show 数据库名字;

例如:show tables;

主键

主键,又称主码,是表中一列或多列的组合。主键约束(Primary Key.Constraint)要求主键列

的数据雌一,并且不允许为空。主键能够唯一地标识表中的一条记录,可以结合外键来定义

不同数据表之间的关系,并且可以加快数据库查询的速度。

主键和记录之间的关系如同身份证和人之间的关系,它们之间是一一对应的。

主键分为两种类型:单字段主键和多字段联合主键。

1.单字段主键

单字段主键由一个字段组成,SQL语句格式分为以下两种情况。

(1)在定义列的同时指定主键,语法规则如下:

字段名   数据类型   PRIMARY KEY 【默认值】

比如:定义数据表tb_emp2,其主键为id,SQL语句如下:

mysql> create table tb_emp2-> (-> id int(11) primary key,-> name varchar(25),-> deptid int(11),-> salary float-> );

(2)在定义完所有列之后指定主键。

[CONSTRAINT   <约束名>] PRIMARY  KEY 【字段名】

比如:定义数据表tb_emp3,其主键为id,SQL语句如下:

mysql> create table tb_emp3-> (-> id int(11),-> name varchar(25),-> deptid int(11),-> salary float,-> primary key(id)-> );

上述两个例子执行后的结果是一样的,都会在id字段上设置主键约束。

2.多字段联合主键

主键由多个字段联合组成,语法规则如下:

PRTMARY   KEY [字段1,字段2.字段n]

比如:定义数据表tb_emp4,假设表中间没有主键id,为了唯一确定一个员工

可以把name、deptId.联合起来做为主键,SQL语句如下:

mysql> create table tb_emp4-> (-> name varchar(25),-> deptid int(11),-> salary float,-> primary key(name,deptid)-> );

语句执行后,便创建了一个名称为tb_emp4的数据表,name 段和 deptld 段组合在一 起成为tb_emp4的多字段联合主键。

外键:

外键用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,

若不为空值,则每一个外键值必须等于另一个表中主键的某个值。

外键:首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。

主要作用:是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。

主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。

从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。

创建外键的语法规则如下:

CONSTRAINT     <外键名>     FOREIGN   KEY(字段名1 [,字段名2,...] )   REPERENCES    <主表名> (主键列1 [,主键列2,...])

“外键名”为定义的外键约束的名称,一个表中不能有相同名称的外键;

“字段名”表示子表需要添加外键约束的字段列;

“主表名”即被子表外键所依赖的表的名称;

“主键列”表示主表中定义的主键列,或者列组合。

比如:首先创建一个部门表tb_dept1,SQL语句如下:

mysql> create table tb_dept1-> (-> id int(11) primary key,-> name varchar(22) not null,-> location varchar(50)-> );

然后定义数据表tb_emp5,并在tb_emp5表上创建外键约束。

让它的键deptId作为外键关联到tb_dept1的主键id,SQL语句为:

mysql> create table tb_emp5 -> (-> id int(11) primary key,-> name varchar(25),-> deptId int(11), -> salary float,-> constraint fk_emp_dept1 foreign key(deptId) references tb_dept1(id)-> );

以上语句执行成功之后,在表tb_emp5上添加了名称为fk_emp_dept1的外键约束,

外键名称为 fk_emp_dept1,其依赖于表tb_dept1的主键id

关联指的是在关系型数据库中相关表之间的联系。它是通过相容或相同的属性或属性组来表示的。子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型 不一样,则创建子表时,就会出现错误“ERROR 1005(HY00):Can't createtable database. tablename'(errno:150)”

非空约束:

非空约束(Not Null Constraint) 指字段的值不能为空,对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

语法规则如下:

字段名 数据类型 not null

比如:定义数据表tb_emp6,指定员工的名称不能为空,SQL语句如下:

create table tb_emp6 
(
id int(11) primary key,
name varchar(25) not null,
deptId int(11), 
salary float
);

执行后,在tb_emp6中创建了一个Name字段,其插入值不能为空 (NOTNULL)。

唯一性约束:

唯一性约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值。

唯一约束可以确保一列或者几列不出现重复值。

唯一性约束的语法规则如下:

(1)在定义完列之后直接指定唯一约束,语法规则如下:

字段名 数据类型 UNIQUE

比如:

定义数据表tb_dept2,指定部门的名称唯一,SQL语句如下:

create table tb_dept2 
(
id INT(11) primary key,
name varchar(22) unique,
location varchar(50)
);

(2)在定义完所有列之后指定唯一约束,语法规则如下:

CONSTRAINT  <约束名>    UNIQUE (<字段名>)

比如:

定义数据表tb_dept3,指定部门的名称唯一,SQL语句如下:

create table tb_dept3
(
id int(11) primary key,
name varchar(22),
location varchar(50),
constraint hahaha unique(name)
);

注意:UNIQUE(创建唯一性约束)和PRIMARYKEY(外键)的区别:

一个表中可以有多个字段声明为UNIQUE,但只能有一个PRIMARYKEY

声明声明为PRIMAYKEY的列不允许有空值,但是声明为UNIOUE的字段允

许空值(NULL).

默认约束:

默认约束(Default Constraint)指定某列的默认值。如男性同学较多,性别就可以默认’男'

如果插入一条新的记录时没有为这个字段赋值,那么系统会自动为这个字段赋值'男'

默认约束的语法规则如下:

字段名 数据类型 DEFAULT 默认值

比如:定义数据表tb_emp7,指定员工的部门编号默认为1111,SQL语句

如下:

create table tb_emp7 
(
id int(11) primary key,
name varchar(25) not null,
deptId int(11) default 1111, 
salary float
);

以上语句执行成功之后,表tb_emp7上的字段deptld拥有了一个默认的值 1111,

新插入的记录如果没有指定部门编号,则默认都为1111

表的属性值自动增加:

在数据库应用中,经常希望在每次插入新记录时,系统自动生成字段的主键值。

可以通过为表主键添加AUTO_INCREMENT关键字来实现默认的,在MySOL 中AUTO_INCREMENT的初始值是 1,每新增一条记录,字段值自动加 1。

一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。

AUTO INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLIN、 INT、BIGINT等)。

设置表的属性值自动增加的语法规则如下:

字段名 数据类型 AUTO_INCREMENT

比如:定义数据表tb_emp8,指定员工的编号自动递增,SQL语句如下:

create table tb_emp8 
(
id int(11)  primary key auto_increment,
name varchar(25) NOT NULL,
deptId int(11), 
salary float
);

执行如下插入语句:

insert into tb_emp8 (name,salary) values ("zhangsan",10000);

insert into tb_emp8 (name,salary) values ("lisi",20000);

insert into tb_emp8 (name,salary) values ("wangwu",30000);

语句执行完后,tb_emp8表中增加3条记录,在这里并没有输入id的值,

但系统已经自动添加该值,使用SELECT命令查看记录,如下所示。

SELECT * FROM tb_emp8;

注意:这里使用INSERT 声明向表中插入记录的方法,并不是 SQL 的标准

语法, 这种语法不一定被其他的数据库支持,只能在MySQL中使用。

2.查看表结构

使用SQ儿语句创建好数据表之后,可以查看表结构的定义,以确认表的定义是否正确。

在MySOL中,查看表结构可以使用 DESCRIBE 和 SHOW CREATE TABLE语句。

本节将针对这两个语分别进行详细的讲解。

DESCRIBE/DESC语句可以查看表的字段信息,

其中包括:字段名、字段数据类型、是否为主键、是否有默认值等。

语法规则如下

DESCRIBE 表名

或者简写为:

DESC 表名

比如:分别使用DESCRIBE和DESC查看表tb dept1和表tb emp1的表结构。

查看tb_dept1表结构,SQL语句如下:

其中,各个字段的含义分别解释如下:

NULL:表示该列是否可以存储NULL值。

Key: 表示该列是否已编制索引。

PRI 表示该列是表主键的一部分;

UNI 表示该列是UNIQUE索引的一部分,

MUL 表示在列中某个给定值允许出现多次。

Default:表示该列是否有默认值,如果有的话值是多少

Extra:表示可以获取的与给定列有关的附加信息,例如 AUTO_INCREMENT等

查看表详细结构语句SHOW CREATE TABLE

SHOW CREATE TABLE语句可以用来显示创建表时的CREATE TABLE语语法格式

如下:

SHOW CREATE TABLE <表名 \G>;

使用SHOW CREATE TABLE 语句,不仅可以查看表创建时候的详细语句,

而且还可以查看存储引擎和字符编码。如果不加 \G参数,显示的结果可能非常混乱,加上参数“\G’之后,可使显示结果更加直观,易于查看。

比如:使用SHOW CREATE.TABLE查看表tb_emp1的详细信息,SQL语句如下:

mysql> mysql> show create table tb_emp1

使用参数’\G’之后的结果如下:

mysql> mysql> show create table tb_emp1 \G;

3.修改数据表

修改表指的是修改数据库中已经存在的数据表的结构,MySQL使用ALTER TABLE语句修改表。

常用的修改表的操作有:修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束等。

修改表名:

MySQL是通过ALTER.TABLE语来实现表名的修改的,具体的语法规则如下

ALTER   TABLE    <旧表名>    RENAME [TO]    <新表名>;

其中TO为可选参数,使用与否均不影响结果。

比如:将数据表tb_dept3改名为tb_deptment3。

使用ALTER TABLE将表tb_dept3改名为tb_deptment3,SQL语句如下:

mysql> alter table tb_dept3 rename tb_deptment3;

语句执行之后,检验表tb_dept3是否改名成功。使用SHOW TABLES查看数据库中的表。

在修改表名称时使用DESC命令查看修改前后两个表的结构,修改表名并不修改表的结构, 因此修改名称后的表和修改名称前的表的结构必然是相同的。

修改字段的数据类型

就是把字段的数据类型转换成另一种数据类型。在 MySQL 中修改字段数据类型的语法规则如下:

ALTER   TABLE   <表名>   MODIFY   <字段名>    <数据类型>

其中“表名”指要修改数据类型的字段所在表的名称,

“字段名”指需要修改的字段“数据类型”指修改后字段的新数据类型。

比如:将数据表tb_dept1中name字段的数据类型由VARCHAR(22)修改成

VARCHAR(30)。

执行修改表名操作之前,使用DESC查看tb_dept表结构,结果如下:

desc tb_dept1;

可以看到现在name字段的数据类型为VARCHAR(22),下面修改其类型。

输入如下SQL语句并执行:

mysql> alter table tb_dept1 modify name varchar(30);

语句执行之后,发现表 tb_deptl 表中name字段的数据类型已经修改成了VARCHAR(30)。

修改字段名:

MySOL中修改表字段名的语法规则如下:

ALTER  TABLE  <表名>  CHANGE  <旧字段名>   <新字段名>   <新数据类型>;

其中,“旧字段名”指修改前的字段名:“新字段名”指修改后的字段名;

“新数据类型”指修改后的数据类型,如果不需要修改字段的数据类型,

可以将新数据类型设置成与原来一样即可,但数据类型不能为空。比如:将数据表tb_dept1中的location字段名称改为loc,数据类型保持不变,

SQL语句如下:

alter table tb_dept1 change location loc varchar(50);

原:

现在:

CHANGE 也可以只修改数据类型,实现和MODIFY 同样的效果,

方法是将 SQL语句中 的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。由于不

同类型的数据在机器中存储的方式及长度并不相同,修改数据类型可能会影响到数据表中已有的数据记录。因此,当数据库表中已经有数据时,不要轻易修改数据类型。

添加字段:

随着业务需求的变化,可能需要在已经存在的表中添加新的字段。一个完整字段包括字段名、数据类型、完整性约束。

添加字段的语法格式如下:

ALTER TABLE   <表名>   ADD  <新字段名>   <数据类型>   [约束条件]   [FIRST | AFTER 已存在字段名];

新字段名为需要添加的字段的名称;“FIRST”为可选参数,其作用是将新添加的字段设置为表的第一个字段:“AFTER”为可选参数,其作用是将新添加的字段添加到 指定的"已存在字段名"的后面。

1、添加无完整性约束条件的字段

比如:在数据表tb_dept1中添加一个没有完整性约束的INT类型的字段

managerId

(部门经理编号),SQL语句如下:

mysql> alter table tb_dept1 add managerid int(10);

此方法会将字段添加到最后。

2、添加有完整性约束条件的字段

比如:在数据表tb_dept1中添加一个不能为空的VARCHAR(12)类型的字段column1,

SQL语句如下:

mysql> alter table tb_dept1 add column1 varchar(12) not null;

3、在表的第一列添加一个字段

比如:在数据表tb_dept1中添加一个INT类型的字段column2,SQL语句如 下:

mysql>alter table tb_dept1 add column2 int(11) first;

4、在表的指定列之后添加一个字段

比如:在数据表tb_dept1中name列后添加一个INT类型的字段column3,

SQL语句如下:

mysql> alter table tb_dept1 add column3 int(11) after name;

删除字段:

删除字段是将数据表中的某个字段从表中移除,语法格式如下:

ALTER  TABLE   <表名>   DROP  <字段名>;

“字段名”指需要从表中删除的字段的名称

比如:删除数据表tb_dept1表中的column2字段。

删除column2字段,SQL语句如下:

mysql> alter table tb_dept1 drop column2;

修改字段的排列位置:

对于一个数据表来说,在创建的时候,字段在表中的排列顺序就已经确定了。

但表的结构并不是完全不可以改变的,可以通过 ALTER TABLE 来改变表中字段的相对位置。

语法格式如下:

ALTER  TABLE   <表名>   MODIEY   <字段1>   <数据类型>     FIRST | AFTER <字段2>;

“数据类型”指“字段1”的数据类型,

“FIRST”为“字段1”指要修改位置的字段,可选参数,指将“字段1”修改为表的第一个字段,

“AFTER 字段2”指将“字段1”插入到“字段2”后面。

1、修改字段为表的第一个字段

比如:将数据表tb_dept中的column1字段修改为表的第一个字段,SQL语

句如下:

mysql> alter table tb_dept1 modify column1 varchar(12) first;

2、修改字段到表的指定列之后

比如:将数据表tb_dept1中的column1字段插入到loc字段后面,SQL语句如下:

mysql> alter table tb_dept1 modify column1 varchar(12) after loc;

更改表的存储引擎:

通过前面章节的学习,知道存储引擎是 MySQL中的数据存储在文件或者内存中时采用的不同技术实现。可以根据自己的需要,选择不同的引擎,甚至可以为每一张表选择不同的存储引擎。

MySOL中主要存储引擎有:MyISAM、InnoDB、MEMORY(HEAP)BDBFEDERATED等。

可以使用 SHOW ENGINES语查看系统支持的存储引擎。

更改表的存储引擎的语法格式如下:

ALTER  TABLE  <表名>   ENGINE=<更改后的存储引擎名>;

比如:将数据表tb_deptment3的存储引擎修改为MyISAM。

在修改存储引擎之前,先使用SHOW CREATE TABLE查看表tb_deptment3当前的存储引擎

mysql> show create table tb_deptment3 \G

可以看到,表tbdeptment3当前的存储引擎为ENGINE=InnoDB, 接下来修改存储引擎类型,输入如下SOL语句并执行:

mysql> alter table tb_deptment3 engine=myisam;

使用SHOW CREATE TABLE 再次查看表tb_deptment3 的存储引擎,发现表的存储引擎变成了“MyISAM”

删除表的外键约束:

对于数据库中定义的外键,如果不再需要,可以将其删除。外键一旦删除,就会解除主表和从表间的关联关系,MySQL中删除外键的语法格式如下:

ALTER  TABLE  <表名>  DROP  FOREIGN  KEY  <外键约束名>

“外键约束名”指在定义表时CONSTRAINT 关键字后面的参数。

比如:

删除数据表tb_emp9中的外键约束。

首先创建表tb_emp9,创建外键deptId关联tb_dept1表的主键id,SQL语句

如下:

create table tb_emp9 
(
id int(11) primary key,
name varchar(25),
deptId int(11),
salary float,
constraint fk_emp_dept foreign key (deptId) references tb_dept1(id)
);

使用SHOW CREATE TABLE查看表tb_emp9的结构,结果如下:

mysql> show create table tb_emp9 \G;

可以看到,已经成功添加了表的外键,下面删除外键约束,SQL语句如下

mysql> alter table tb_emp9 drop foreign key fk_emp_dept;

使用SHOW CREATE TABLE再次查看表tb_emp9结构,结果如下:

mysql> show create table tb_emp9 \G;

可以看到,tb_emp9中已经不存在FOREIGN KEY,原有的名称为 emp_dept的外键约束删除成功.

4、删除数据表

删除数据表就是将数据库中已经存在的表从数据库中删除。注意,在删除表的同时,表的定义和表中所有的数据均会被删除。因此,在进行删除操作前,最好对表中的数据做个备份,以免造成无法挽回的后果。本节将详细讲解数据库表的删除方法。

1、删除没有被关联的表:

在MySQL中使用DROP TABLE可以一次删除一个或多个没有被其他表关联的数据表语法格式如下:

DROP TABLE [IF EXISTS] 表1,表2,...表n;

其中“表n”指要删除的表的名称,后面可以同时删除多个表,只需将要删除的表名依次写在后面,

相互之间用逗号隔开即可。如果要删除的数据表不存在,则MySQL会提示一条错误信息

“ERROR 1051(42S02):Unknown table 表名”。参数“IFEXISTS”用于在删除前判断删除的表

是否存在,加上该参数后,再删除表的时候,如果表不存在,SOL 语句可以顺利执行,

但是会发出警告(warning)。

比如:

删除数据表tb_dept2,SQL语句如下:

drop table if exists tb_dept2;

语句执行完毕之后使用SHOW TABLES 命看当前数据库中所有的表SOL语

如下:

执行结果可以看到,数据表列表中已经不存在名称为 tb_dept2 的表,删除操作成功。

2、删除被其他表关联的主表:

数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败。原因是直接删除,

将破坏表的参照完整性。

如果必须要删除,可以先删除与它关联的子表再删除父表, 只是这样同时删除了两个表中的数据。但有的情况下可能要保留子表,这时如要单独删除父表,

只需将关联的表的外键约束条件取消,然后就可以删除父表。

下面讲解这种方法。在数据库中创建两个关联表,首先,创建表bdept2,

SOL语句如下:

create table tb_dept2 
( 
id int(11) primary key, 
name varchar(22), 
location varchar(50) 
); 

接下来创建表tb_emp,

SQL语句如下:

create table tb_emp 
( 
id INT(11) primary key, 
name varchar(25), 
deptId int(11), 
salary float, 
constraint fk_emp_dept foreign key (deptId) references tb_dept2(id) 
); 

使用SHOW CREATE TABLE命令查看表tb_emp的外键约束,结果如下:

可以看到,以上执行结果创建了两个关联表 tb_dept2和表 tb_emp,其中tb

emp表为子表具有名称为fk_emp_dept的外键约束,tb_dept2为父表,其主键id被子表 tb_emp所关联。

现在我们删除被数据表tb_emp关联的数据表tb_dept2。

首先直接删除父表tb_dept2,输入删除语句如下:

 drop table tb_dept2;

可以看到,如前所述,在存在外键约束时,主表不能被直接删除。

接下来,解除关联子表temp的外键约束,SOL 语句如下:

 alter table tb_emp drop foreign key fk_emp_dept; 

语句成功执行后,将取消表 tb emp 和表 tb dept2 之间的关联关系,

此时,可以输入删除语句,将原来的父表tdept2删除,SOL语句如下:

drop table tb_dept2;

最后通过SHOW TABLES 查看数据表列表,如下所示:

可以看到,数据表列表中已经不存在名称为tb_dept2的表.

5、练习题

1、创建数据库Market,在Market 中创建数据表customers,customers 表结构如表4.6所示 并按要求进行操作。

(1)创建数据库Market。

(2)创建数据表customers,在c_num字段上添加主键约束和自增约束,

在c_birth字段上添加非空约束。

(3)将c_contact字段插入到c_birth字段后面。

(4)将c_name字段数据类型改为 VARCHAR(70)。

(5)将c_contact字段改名为c_phone

(6)增加c_gender 字段,数据类型为 CHAR(1)。

(7)将表名修改为customers_info。

(8)删除字段c_city.

(9)修改数据表的存储引擎为MyISAM。

部分代码

create table customers
(
c_num int(11)  primary key  unique auto_increment,
c_name varchar(50),
c_contact varchar(50),
c_city varchar(50),
c_birth datetime not null
);

2、在Market中创建数据表orders,orders表结构如表4.7所示,按要求进行操作。

(1)创建数据表orders,在o_num字段上添加主键约束和自增约束,

在c_id字段上添加外键约束,关联customers表中的主键c_num。

(2)删除orders 表的外键约束,然后删除表customers。

部分代码

create table orders
( 
o_num int(11) primary key auto_increment, 
o_date date, 
c_id int(11), 
constraint a_b foreign key(c_id) references customers_info(c_num) 
);

 

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

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

相关文章

周报4_YMK

FlashAttention 硬件知识 以 A100 (40GB HBM) 为例&#xff0c;下面显示其内存层次结构的粗略图。SRAM内存分布在108个流式多处理器(SMs)上&#xff0c;每个处理器192KB。片上SRAM比HBM快得多&#xff0c;但比HBM小得多&#xff0c;在计算方面&#xff0c;使用Tensor Core的B…

【漏洞复现】Aapache_Tomcat_AJP协议_文件包含漏洞(CVE-2020-1938)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 说明内容漏洞编号CVE-2020-1938漏洞名称Aapache_Tomcat_AJP文件包含漏洞漏洞评级高…

thinkPHP5怎么打开页面调试,查看网页运行时间

开启trace 在config.php中找到 ‘app_trace’ > false, 修改为&#xff1a; ‘app_trace’ > true,

环形链表和相交链表OJ题

环形链表和相交链表OJ题 这篇博客详细讲解了环形数组和相交数组的问题 文章目录 环形链表和相交链表OJ题一、环形链表e.g.1e.g.2 二、相交链表 一、环形链表 环形列表是指尾结点next不指向NULL了&#xff0c;而是指向包括自己的前面任意一个结点。 e.g.1 题目及要求&#xf…

线程的创建、等待、退出

多线程开发在Linux平台上已经有成熟的pthread库支持&#xff0c;所以使用pthread库在编译时要加上-pthread。其设计的多线程开发的基本概念主要包含3点&#xff1a;线程、互斥锁、条件。其中线程操作又分线程的创建、退出、等待三种。互斥锁包含4种操作&#xff0c;分别是创建、…

【Windows】Google和火狐浏览器禁用更新的操作方式

想必很多网民常用的浏览器是Edge&#xff0c;Google&#xff0c;火狐这三种&#xff0c;但是浏览器都有后台自动更新&#xff0c;更新提示会一直显示&#xff0c;要用户去点击才关掉&#xff0c;有点强迫症的用户就会想要把它一直关掉&#xff0c;可每次打开都关不掉&#xff0…

中期科技:智慧公厕打造智能化城市设施,提升公共厕所管理与服务体验

智慧公厕是利用先进的技术和创新的解决方案来改进公厕的设施和管理。借助物联网、互联网、5G/4G通信、人工智能、大数据、云计算等新兴技术的集成&#xff0c;智慧公厕具备了一系列令人惊叹的应用功能。从监测公厕内部人体活动状态、人体存在状态&#xff0c;到空气质量情况、环…

软件开发项目文档系列之十如何撰写测试用例

目录 1 概述1.1 编写目的1.2 定义1.3 使用范围1.4 参考资料1.5 术语定义 2 测试用例2.1 功能测试2.1.1 用户登录功能2.1.2 商品搜索功能 2.2 性能测试2.2.1 网站响应时间2.2.2 并发用户测试 附件&#xff1a; 测试用例撰写的要素和注意事项附件1 测试用例要素附件2 测试用例的注…

虹科示波器 | 汽车免拆检修 | 2010款江铃陆风X8车发动机怠速抖动、加速无力

一、故障现象 一辆2010款江铃陆风X8车&#xff0c;搭载4G6GS4N发动机&#xff0c;累计行驶里程约为20万km。该车在其他修理厂进行发动机大修&#xff0c;维修后试车&#xff0c;发动机怠速抖动、加速无力。用故障检测仪检测&#xff0c;发动机控制模块&#xff08;ECM&#xff…

时间序列预测模型实战案例(八)(Informer)BestPaper论文模型Informer代码实战讲解

论文地址->Informer论文地址PDF点击即可阅读 代码地址-> 论文官方代码地址点击即可跳转下载GIthub链接 本文介绍 本篇博客带大家看的是Informer模型进行时间序列预测的实战案例&#xff0c;它是在2019年被提出并在ICLR 2020上被评为Best Paper&#xff0c;可以说Inform…

postman做接口测试

之前搞自动化接口测试&#xff0c;由于接口的特性&#xff0c;要验证接口返回xml中的数据&#xff0c;所以没找到合适的轮子&#xff0c;就自己用requests造了个轮子&#xff0c;用着也还行&#xff0c;不过就是case管理有些麻烦&#xff0c;近几天又回头看了看postman也可以玩…

【漏洞复现】Metinfo6.0.0任意文件读取漏洞复现

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现代码审计漏洞点 1.5、深度利用EXP编写 1.6、漏洞挖掘1.7修复建议 1.1、漏洞描述 漏洞名称&#xff1a;MetInfo任意文件…

强大的pdf编辑软件:Acrobat Pro DC 2023中文

Acrobat Pro DC 2023是一款强大的PDF编辑和管理软件&#xff0c;它提供了广泛的功能&#xff0c;使用户能够轻松创建、编辑、转换和共享PDF文档。通过直观的界面和先进的工具&#xff0c;用户可以快速进行文本编辑、图像调整、页面管理等操作&#xff0c;同时支持OCR技术&#…

如何在苹果Mac系统设置中查看Wi-Fi密码?

在 Mac 上查找保存的 Wi-Fi 密码的最简单方法之一是从系统设置内的高级 Wi-Fi 首选项页面。您可以通过下面的方式访问此页面来查找您保存的 Wi-Fi 密码。 1.在 Mac 上&#xff0c;选取「苹果菜单」选择「系统设置」。 2.从侧边栏中选择「Wi-Fi」&#xff0c;单击「高级」。 3.…

OpenCV检测圆(Python版本)

文章目录 示例代码示例结果调参 示例代码 import cv2 import numpy as np# 加载图像 image_path DistanceComparison/test_image/1.png image cv2.imread(image_path, cv2.IMREAD_COLOR)# 将图像转换为灰度 gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用高斯模糊消除…

git更改远程仓库地址

1、输入命令【git remote -v】查看当前git远程仓库地址 2、输入命令【git remote set-url origin 新地址】替换成新地址 3、输入命令【git remote -v 】查看是否更新成功

WPF布局控件之DockPanel布局

前言&#xff1a;博主文章仅用于学习、研究和交流目的&#xff0c;不足和错误之处在所难免&#xff0c;希望大家能够批评指出&#xff0c;博主核实后马上更改。 概述&#xff1a; DockPanel 位置子控件基于子 Dock 属性&#xff0c;你有 4 个选项停靠&#xff0c;左 (默认) &…

全球发布|首个AI视角下的生态系统架构解读—《生态系统架构--人工智能时代从业者的新思维》重磅亮相!

点击可免费注册下载 &#x1f447; 人工智能时代的企业架构师必读系列 《生态系统架构--人工智能时代从业者的新思维》 Philip Tetlow、Neal Fishman、Paul Homan、Rahul著 The Open Group Press 2023年11月出版 这本书可以很好地帮助全球架构师使用人工智能来构建、开发和…

C语言映射表在串口数据解析中的应用

一、映射表在串口数据解析中的应用 1、数据结构 typedef struct {char CMD[CMDLen];unsigned char (*cmd_operate)(char *data); }Usart_Tab; 2、指令、函数映射表 static const Usart_Tab InstructionList[CMDMax] {{"PWON",PowOn},{"PWOFF",PowOff}…

C语言打印出九九乘法表

#include<stdio.h> int main() {int i,j;for(i1;i<9;i){for(j1;j<9;j){printf("%d*%d%d\t",i,j,i*j); //\t制表符}printf("\n"); //\n输出个回车} }