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) 
);

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

react_11

MobX 介绍 需求&#xff0c;组件0 改变了数据&#xff0c;其它组件也想获得改变后的数据&#xff0c;如图所示 这种多个组件之间要共享状态数据&#xff0c;useState 就不够用了&#xff0c;useContext 也不好用了 能够和 react 配合使用的状态管理库有 MobX Redux 其中…

黑猫带你学NandFlash第3篇:NAND寻址(行列地址和block/page/LUN之间的关系)

本文依据不同型号NandFlash spec及个人工作经验整理而成,如有错误请留言。 文章为付费内容,已加入原创侵权保护,禁止私自转载及抄袭。 文章所在专栏:《黑猫带你学:NandFlash详解》 本文大约2000字,主要讲解:nand flash如何物理寻址、多plane又是如何寻址、相关计算公式等…

Spring Data Redis + RabbitMQ - 基于 string 实现缓存、计数功能(同步数据)

目录 一、Spring Data Redis 1.1、缓存功能 1.1.1、分析 1.1.2、案例实现 1.1.3、效果演示 1.2、计数功能&#xff08;Redis RabbitMQ&#xff09; 1.2.1、分析 1.2.2、案例实现 一、Spring Data Redis 1.1、缓存功能 1.1.1、分析 使用 redis 作为缓存&#xff0c; M…

ArmSom---I2C开发指南

1. 简介 RK3588从入门到精通 本⽂介绍在rockchip平台下如何配置i2c接口的方法并且添加调试验证i2c外设的例子 开发板&#xff1a;ArmSoM-W3 Kernel&#xff1a;5.10.160 OS&#xff1a;Debian11 2. i2c接口概述 i2c 总线控制器通过串行数据&#xff08;SDA&#xff09;线…

【hcie-cloud】【1】华为云Stack解决方案介绍、华为文档获取方式 【上】

文章目录 华为文档获取方式前言云计算发展背景国家政策、社会发展驱动数字经济开启新时代深化数字化转型提升效率&#xff0c;国家数字主权云进入落地阶段从Cloud-Based到Cloud-Native&#xff0c;两种模式长期并存适合政企智能升级的云华为云Stack&#xff0c;政企智能升级首选…

ks ios快手极速版、概念版、创作版sig sig3

风控&#xff1a; 快手除了正版下&#xff0c;还有极速版&#xff0c;概念版&#xff0c;创作版。 然而看了下概念版还是风控比正版要低的多~ 抓包&#xff1a; 对于快手的ios版本抓包很简单&#xff0c;直接vpn转发抓包方式即可&#xff0c;不可用代理抓包&#xff1b;这个…

[SSD综述 1.4] SSD固态硬盘的架构和功能导论

依公知及经验整理,原创保护,禁止转载。 专栏 《SSD入门到精通系列》 <<<< 返回总目录 <<<< ​ 前言 机械硬盘的存储系统由于内部结构, 其IO访问性能无法进一步提高,CPU与存储器之间的性能差距逐渐扩大。以Nand Flash为存储介质的固态硬盘技术的发展,…

redis rdb aof

appendonly yes # appendfsync always appendfsync everysec # appendfsync no E:\Document_Redis_Windows\redis-2.4.5-win32-win64\64bit appendonly.aof

基于单片机的养殖场温度控制系统设计

博主主页&#xff1a;单片机辅导设计 博主简介&#xff1a;专注单片机技术领域和毕业设计项目。 主要内容&#xff1a;毕业设计、简历模板、学习资料、技术咨询。 文章目录 主要介绍一、控制系统设计二、系统方案设计2.1 系统运行方案设计2.1.1 羊舍环境温度的确定 三、 系统仿…

ElasticSearch高级功能详解与原理剖析

ES数据预处理 Ingest Node Elasticsearch 5.0后&#xff0c;引入的一种新的节点类型。默认配置下&#xff0c;每个节点都是Ingest Node&#xff1a; 具有预处理数据的能力&#xff0c;可拦截lndex或Bulk API的请求对数据进行转换&#xff0c;并重新返回给Index或Bulk APl 无…

项目实战:优化Servlet,把所有围绕Fruit操作的Servlet封装成一个Servlet

1、FruitServlet 这些Servlet都是围绕着Fruit进行的把所有对水果增删改查的Servlet放到一个Servlet里面&#xff0c;让tomcat实例化一个Servlet对象 package com.csdn.fruit.servlet; import com.csdn.fruit.dto.PageInfo; import com.csdn.fruit.dto.PageQueryParam; import c…

(景行锐创) 高性能计算平台 Pytorch 深度学习环境超详细教程

文章目录 前言1. 账号申请2. 登录高算平台网站3. 安装 Xshell&#xff0c;Xftp 软件4. 连接高算平台5. 安装 Anaconda6. 安装 CUDA7. 配置 cuDNN8. 安装 torch 和 torchvision9. 提交作业测试10. 解压与压缩文件11. 其他结语 前言 目前一些学校为了便于师生进行大规模的计算任…

vue工程化开发和脚手架

工程化开发和脚手架 1.开发Vue的两种方式 核心包传统开发模式&#xff1a;基于html / css / js 文件&#xff0c;直接引入核心包&#xff0c;开发 Vue。工程化开发模式&#xff1a;基于构建工具&#xff08;例如&#xff1a;webpack&#xff09;的环境中开发Vue。 工程化开…

使用免费 FlaskAPI 部署 YOLOv8

目标检测和实例分割是计算机视觉中关键的任务&#xff0c;使计算机能够在图像和视频中识别和定位物体。YOLOv8是一种先进的、实时的目标检测系统&#xff0c;因其速度和准确性而备受欢迎。 Flask是一个轻量级的Python Web框架&#xff0c;简化了Web应用程序的开发。通过结合Fla…

如何使用Selenium处理Cookie,今天彻底学会了

01 cookie介绍 HTTP协议是无状态的协议。一旦数据交换完毕&#xff0c;客户端与服务器端的连接就会关闭&#xff0c;再次交换数据需要建立新的连接&#xff0c;这就意味着服务器无法从连接上跟踪会话。也就是说即使第一次和服务器连接后并且登录成功后&#xff0c;第二次请求…

【vue2高德地图api】04-poi搜索

系列文章目录 文章目录 系列文章目录前言一、高德地图文档入口二、使用步骤1.创建文件以及路由2.编写页面代码3.样式4变量以及方法5.编写查询方法 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 本篇要实现的功能&#xff0c;看下图 提示&#x…

PivotNet:Vectorized Pivot Learning for End-to-end HD Map Construction

参考代码&#xff1a;BeMapNet。PS&#xff1a;代码暂未放出&#xff0c;关注该仓库动态 动机和主要贡献 在MapTR系列的算法中将单个车道线建模为固定数量的有序点集&#xff08;对应下图Evenly-based&#xff09;&#xff0c;这样的方式对于普通道路场景具备一定适应性。但是…

谁说 Linux 不能玩游戏?

在上个世纪最早推出视频游戏的例子是托马斯戈德史密斯&#xff08;Thomas T. Goldsmith Jr.&#xff09;于1947年开发的“「Cathode Ray Tube Amusement Device」”&#xff0c;它已经显着发展&#xff0c;并且已成为人类生活中必不可少的一部分。 通过美国游戏行业的统计数据&…

yum

什么是yum? Linux中我们也要进行工具/指令/程序&#xff0c;安装&#xff0c;检查卸载等&#xff0c;需要yum的软件 安装软件的方式&#xff1a; 1.源代码安装--交叉编译工作 2.rpm包直接安装 3.yum / apt-get yum:yum是我们linux预装的一个指令&#xff0c;搜索&#x…

【小白专用】PHP基本语法 23.11.04

PHP基本语法 PHP是超文本预处理器 由服务器解析执行 可以与 html 进行混编(嵌入) ,PHP是一种弱类型语言 1.1 PHP标记 PHP和其他Web语言一样&#xff0c;都是用一对标记将PHP代码包含起来&#xff0c;以便和HTML代码区分开来。PHP支持4种风格的标记&#xff0c;如表所示。 标…