5.数据表基本操作

news2024/11/29 11:30:07

目录

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.coloradmin.cn/o/1174606.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用户态内存映射

内存映射不仅仅是物理内存和虚拟内存之间的映射&#xff0c;还包括将文件中的内容映射到虚拟内存空间。这个时候&#xff0c;访问内存空间就能够访问到文件里面的数据。而仅有物理内存和虚拟内存的映射&#xff0c;是一种特殊情况。 对于堆的申请来讲&#xff0c;mmap 是映射内…

试试流量回放,不用人工写自动化测试case了

大家好&#xff0c;我是洋子&#xff0c;接触过接口自动化测试的同学都知道&#xff0c;我们一般要基于某种自动化测试框架&#xff0c;编写自动化case&#xff0c;编写自动化case的依据来源于接口文档&#xff0c;对照接口文档里面的请求参数进行人工添加接口自动化case 其实…

应用安全四十二:SSO安全

一、什么是SSO SSO是单点登录(Single Sign On)的缩写,是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是比较流行的企业业务整合的解决方案之一。 身份验证过程依赖于双方之间的信任关…

大数据毕业设计选题推荐-智慧小区大数据平台-Hadoop-Spark-Hive

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

2022年ISSCC会议报告分析

Tutorial Fundamentals of Self-Sensing Processor Systems AMD Zen架构的CCD die中有很多传感器检测die的频率、电压、电压和温度 HBM DRAM and 3D Stacked Memory Advances in Digital vs. Analog AI Accelerators Nvidia的Multi-chip架构的DNN加速器 Form1: Compute-in…

Pycharm-community-2021版安装和配置

一、下载Pycharm-community-2021 1.从官网下载pycharm-community Pycharm 版本官网 二、安装PyCharm 1.打开下载完成的安装包&#xff0c;点击Next 2.安装PyCharm到其他位置,点击Next 3.一定把更新PATH变量勾上,可以创建桌面快捷方式&#xff0c;创建关联&#xff0c;最后…

apache-maven-3.6.3 安装配置教程

链接&#xff1a;https://pan.baidu.com/s/1RkMXipnvac9EKcZyUStfGQ?pwdl32m 提取码&#xff1a;l32m 1. 将 maven 压缩包解压至指定文件夹 2. 配置环境变量 &#xff08;1&#xff09;打开此电脑-> 鼠标右键选择属性->点击高级系统设置 &#xff08;2&#xff09;点…

【移远QuecPython】EC800M物联网开发板的硬件PWM和PWM输出BUG

【移远QuecPython】EC800M物联网开发板的硬件PWM和PWM输出BUG 文章目录 导入库初始化PWM开启PWMPWM硬件BUG附录&#xff1a;列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 导入库 from misc import PWM_V2或者 from misc import PWM但我觉得PWM_V2好用 初…

嵌入式中如何把C++代码改写成C语言代码

由于C&#xff0b;&#xff0b;解释器比C语言解释器占用的存储空间要大500k左右。为了节省有限的存储空间、降低成本&#xff0c;同时也为了提高效率&#xff0c;将用C&#xff0b;&#xff0b;语言写的源程序用C语言改写是很有必要的。 C&#xff0b;&#xff0b;与C最大的区…

高位片选与低位交叉编址、芯片扩展与多模块存储器、多通道内存

多模块存储器 是一种空间并行技术&#xff0c;利用多个结构完全相同的存储模块的并行工作来增加存储器的吞吐率。根据不同的编址方式&#xff0c;多模块存储器分为连续编址和交叉编址两种结构 连续编址方式&#xff1a;主存地址的高位表示模块号&#xff08;体号&#xff09;…

Python--快速入门二

Python--快速入门二 1.Python数据类型 1.可以通过索引获取字符串中特定位置的字符&#xff1a; a "Hello" print(a[3]) 2.len函数获取字符串的长度&#xff1a; a "Hello" print(a) print(len(a)) 3.空值类型表示完全没有值&#xff1a; 若不确定当…

【嵌入式项目应用】__物联网小知识:不同通讯线的通讯距离是多少,你知道吗?

目录 前言 不同协议通讯线的传输距离 无线传输协议与距离 1. 蓝牙 2. Zigbee 3. LoRa 4. Wi-Fi 5. 蜂窝网络 6. Sigfox 7. LoRaWAN (*&#xffe3;︶&#xffe3;)创作不易&#xff01;期待你们的 点赞、收藏和评论喔。 前言 在物联网中&#xff0c;通讯线的作用是…

leetcode经典面试150题---5.多数元素

目录 题目描述 前置知识 代码 方法一 排序法 思路 实现 复杂度 方法二 哈希表 思路 实现 题目描述 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给…

pg14-sql基础(四)-多表联查

多表联查 内联查询 SELECT e.department_id, e.first_name, d.department_name FROM employees e INNER JOIN departments d -- JOIN departments d ON e.department_id d.department_id;左外联查询 SELECT e.department_id, e.first_name, d.department_name FROM employees…

【C语言基础】第01章_C语言入门

讲师&#xff1a;康师傅 视频&#xff1a;https://www.bilibili.com/video/BV1Bh4y1q7Nt?p1&vd_source3eaa9d17f2454e1ae80abc50d16e66b5 文章目录 本章专题脉络1初识计算机语言1.1 计算机语言是什么1.2 计算机语言简史 2初识C语言2.1 C语言的由来2.2 为什么要学习C语言2.…

英语——分享篇——每日200词——1-200

1——ball——[bɔːl]——n.球——ball——ba爸(拼音)ll筷子(象形)——爸爸用筷子夹球——The kid is playing the ball. ——孩子在玩皮球。 2——boat——[bəʊt]——n.船——boat——bo60(象形)at在(熟词)——60个人在船上——I have 60 boats.——我有60艘船。 3——bag—…

【架构图解】API架构图解:如何以图表形式展现复杂系统

文章目录 前言序列图组件图数据流程图结论 前言 架构图是链接到 API 的不同组件/服务如何相互交互的直观表示。 当需要理解 API 的架构并将其传达给不同的利益相关者&#xff08;包括其他开发人员、项目经理和客户&#xff09;时&#xff0c;这些图表非常有用。 图表/视觉效…

Python基础入门例程50-NP50 程序员节(循环语句)

最近的博文&#xff1a; Python基础入门例程49-NP49 字符列表的长度-CSDN博客 Python基础入门例程48-NP48 验证登录名与密码&#xff08;条件语句&#xff09;-CSDN博客 Python基础入门例程47-NP47 牛牛的绩点&#xff08;条件语句&#xff09;-CSDN博客 目录 最近的博文&a…

告知粉丝 重要

告知! 亲爱的粉丝朋友们&#xff0c;由于CSDN(博客)平台的限制&#xff0c;被迫转入 公众号!希望粉丝朋友们谅解!我们也是被逼无奈~~ 但我们还是会在CSDN(博客)发文章&#xff0c;但很少。 如果想要接触更好的文章请关注我们公众号&#xff0c;谢谢! 微信公众号:

POJ-3630电话表(考察字典树)

2023每日刷题&#xff08;二十&#xff09; POJ-3630电话表 题目原地址 输入样例&#xff1a; 2 3 911 97625999 91125426 5 113 12340 123440 12345 98346输出结果&#xff1a; NO YES实现代码 #include<iostream> #include<string> #include<cstring>…