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

3. MySQL 数据表的基本操作

文章目录

  • 【 1. MySQL 创建数据表 】
  • 【 2. MySQL 查看表 】
    • 2.1 查看表的属性
      • DESCRIBE/DESC 以表格的形式展示表属性
      • SHOW CREATE TABLE 以SQL语句的形式展示表属性
    • 2.2 查看表的内容
  • 【 3. MySQL 修改数据表结构 】
    • 3.1 修改表名
    • 3.2 修改表字符集
    • 3.3 添加字段
      • 在末尾添加字段
      • 在开头添加字段
      • 在中间添加字段
    • 3.3 修改/删除字段
      • 修改字段名称
      • 修改字段数据类型
      • 删除字段
    • 3.4 删除数据表
    • 3.5 删除被其它表关联的主表
  • 【 4. 插入数据 INSERT 】
    • 4.1 基本语法
      • INSERT…VALUES
      • INSERT…SET
    • 4.2 向表中的全部字段添加值
      • 指定所有字段名
      • 完全不指定字段名
    • 4.3 向表中指定字段添加值
    • 4.4 复制表数据 INSERT INTO…FROM
  • 【 5. 修改数据 UPDATE 】
    • 5.1 修改表中数据
    • 5.2 根据条件修改表中的数据
  • 【 6. 删除数据 DELETE 】
    • 6.1 删除表中的全部数据
    • 6.2 根据条件删除表中的数据
  • 【 7. 清空表记录 TRUNCATE 】

  • 数据表是数据库的重要组成部分,每一个数据库都是由若干个数据表组成的

比如,在电脑中创建一个空文件夹,如果要把“Hello 普罗米修斯”存放到文件夹中,必须把它写在 Word 文档、记事本或其它能存放文本的文档中。这里的空文件夹就相当于数据库,存放文本的文档就相当于数据表。

【 1. MySQL 创建数据表 】

  • 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性)约束的过程。故创建数据表时必须指定数据表中每个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。
    基本语法
    • CREATE TABLE:用于创建给定名称的表,必须拥有表CREATE的权限。
    • <表名>:指定要创建表的名称,必须符合标识符命名规则。表名称被指定为 db_name.tbl_name,以便在特定的数据库中创建表。无论是否有当前数据库,都可以通过这种方式创建。在当前数据库中创建表时,可以省略 db-name。如果使用加引号的识别名,则应对数据库和表名称分别加引号。
      例如,‘mydb’.‘mytbl’ 是合法的,但 ‘mydb.mytbl’ 不合法。
    • <表定义选项>:表创建定义,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。 [表定义选项]的格式为:<列名1> <类型1> [,…] <列名n> <类型n>
    • 默认的情况是,表被创建到当前的数据库中。若表已存在、没有当前数据库或者数据库不存在,则会出现错误。
CREATE TABLE <表名> ([表定义选项])[表选项][分区选项];
  • 要创建的 表的名称不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。
  • 数据表属于数据库,在创建数据表之前,应使用语句“USE<数据库>”指定操作在哪个数据库中进行 ,如果没有选择数据库,就会抛出 No database selected 的错误。
  • 实例
    创建员工表 tb_emp1,结构如下表所示。
    在这里插入图片描述
    选择创建表的数据库 mytest,创建 tb_emp1 数据表,输入的 SQL 语句和运行结果如下所示。
    CREATE TABLE tb_emp1
    (
    id INT(11),
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT
    );
    语句执行后,便创建了一个名称为 tb_emp1 的数据表,使用 SHOW TABLES;语句查看数据表是否创建成功,如下所示。
    在这里插入图片描述

【 2. MySQL 查看表 】

2.1 查看表的属性

DESCRIBE/DESC 以表格的形式展示表属性

  • 基本语法
DESCRIBE <表名>;#或 简写为DESC  <表名>
表中的字段含义
Null表示该列是否可以存储 NULL 值。
Key表示该列是否已编制索引。PRI 表示该列是表主键的一部分,UNI 表示该列是 UNIQUE 索引的一部分,MUL 表示在列中某个给定值允许出现多次。
Default表示该列是否有默认值,如果有,值是多少。
Extra表示可以获取的与给定列有关的附加信息,如 AUTO_INCREMENT 等。
  • 实例
    DESC tb_emp1;
    在这里插入图片描述

SHOW CREATE TABLE 以SQL语句的形式展示表属性

  • SHOW CREATE TABLE 命令会以 SQL 语句的形式来展示表信息。和 DESCRIBE 相比,SHOW CREATE TABLE 展示的内容更加丰富,它可以 查看表的存储引擎和字符编码;另外,你还可以通过 \g或者\G参数来控制展示格式
  • 基本语法
    SHOW CREATE TABLE student;
SHOW CREATE TABLE <表名>;
  • 实例
    SHOW CREATE TABLE tb_emp1;
    SHOW CREATE TABLE tb_emp1\G
    SHOW CREATE TABLE tb_emp1\g
    在这里插入图片描述

2.2 查看表的内容

  • 详情看 MySQL 数据表查询 SELECT 。

【 3. MySQL 修改数据表结构 】

  • 在 MySQL 中可以使用 ALTER TABLE 语句来改变原有表的结构,例如增加或删减列、更改原有列类型、重新命名列或表等。
  • 基本语法
    • 修改选项的格式:
      { ADD COLUMN <列名> <类型>
      | CHANGE COLUMN <旧列名> <新列名> <新列类型>
      | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
      | MODIFY COLUMN <列名> <类型>
      | DROP COLUMN <列名>
      | RENAME TO <新表名>
      | CHARACTER SET <字符集名>
      | COLLATE <校对规则名> }
ALTER TABLE <表名> [修改选项]

3.1 修改表名

  • 基本语法:
    • TO 为可选参数,使用与否均不影响结果。
ALTER TABLE <旧表名> RENAME [TO] <新表名>
  • 实例
    将数据表 tb_temp1 改名为 tb_temp2。
    在这里插入图片描述

3.2 修改表字符集

  • 基本语法
    • DEFAULT 为可选参数,使用与否均不影响结果。
ALTER TABLE 表名 [DEFAULT] CHARACTER SET <字符集名> [DEFAULT] COLLATE <校对规则名>;
  • 实例
    将数据表 tb_temp2 的字符集修改为 gb2312,校对规则修改为 gb2312_chinese_ci。
    ALTER TABLE tb_temp2 CHARACTER SET gb2312 DEFAULT COLLATE gb2312_chinese_ci;
    在这里插入图片描述

3.3 添加字段

  • 随着 MySQL 业务的变化,可能需要在已有的表中添加新的字段,一个完整的字段包括字段名、数据类型和约束条件。

在末尾添加字段

  • 这种语法格式默认在表的最后位置(最后一列的后面)添加新字段。
    基本语法:
    • <表名> 为数据表的名字;
    • <新字段名> 为所要添加的字段的名字;
    • <数据类型> 为所要添加的字段能存储数据的数据类型;
    • [约束条件] 是可选的,用来对添加的字段进行约束。
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
  • 实例
    新建 student 数据表,再在 student 数据表末尾添加一个 INT 类型的字段 age。
    ALTER TABLE student ADD stuId INT(4);
    在这里插入图片描述

在开头添加字段

  • 在开头位置(第一列的前面)添加新字段,需要将 FIRST 关键字 放在语句的末尾。
    基本语法:
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;
  • 实例
    在表的第一列添加 INT 类型的字段 stuId。
    ALTER TABLE student ADD stuId INT(4) FIRST;
    在这里插入图片描述

在中间添加字段

  • 在中间位置(指定的字段之后)添加新字段,需要将 AFTER 关键字+已存在的字段名 放在语句的末尾。基本语法:
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;
  • 实例
    在 student 表中添加名为 stuno,数据类型为 INT 的字段,stuno 字段位于 name 字段的后面。
    ALTER TABLE student ADD stuno INT(11) AFTER name;
    在这里插入图片描述

3.3 修改/删除字段

修改字段名称

  • 基本语法:
    • 旧字段名:指修改前的字段名;
    • 新字段名:指修改后的字段名;
    • 新数据类型:指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样,但数据类型不能为空。
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>
  • CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果,方法是将 SQL 语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。
  • 实例
    使用 ALTER TABLE 修改表 tb_temp2 的结构,将 id 字段名称改为 id2,同时将数据类型变为 CHAR(30)。
    ALTER TABLE tb_temp2 CHANGE id id2 CHAR(30);
    在这里插入图片描述

修改字段数据类型

  • 由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录,因此,当数据表中已经有数据时,不要轻易修改数据类型
    基本语法:
    • 表名:指要修改数据类型的字段所在表的名称;
    • 字段名:指需要修改的字段;
    • 数据类型:指修改后字段的新数据类型。
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
  • 实例
    使用 ALTER TABLE 修改表 tb_temp2 的结构,将 name 字段的数据类型由 VARCHAR(25) 修改成 VARCHAR(30)。
    ALTER TABLE tb_temp2 MODIFY name VARCHAR(30);
    在这里插入图片描述

删除字段

  • 删除字段是将数据表中的某个字段从表中移除。
    基本语法:
    • 字段名”指需要从表中删除的字段的名称。
ALTER TABLE <表名> DROP <字段名>;
  • 实例
    使用 ALTER TABLE 修改表 tb_temp2 的结构,删除 deptID 字段。
    ALTER TABLE tb_temp2 DROP deptID;
    在这里插入图片描述

3.4 删除数据表

  • 对于不再需要的数据表,我们可以将其从数据库中删除。在删除表的同时,表的结构和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失。
    基本语法:
    • 表名1, 表名2, 表名3 …表示要被删除的数据表的名称。DROP TABLE 可以同时删除多个表,只要将表名依次写在后面,相互之间用逗号隔开即可
    • IF EXISTS 用于在删除数据表之前判断该表是否存在。如果不加 IF EXISTS,当数据表不存在时 MySQL 将提示错误,中断 SQL 语句的执行;加上 IF EXISTS 后,当数据表不存在时 SQL 语句可以顺利执行,但是会发出警告(warning)。
DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 ...]
  • 用户 必须拥有执行 DROP TABLE 命令的权限,否则数据表不会被删除,表被删除时,用户在该表上的权限不会自动删除。
  • 实例
    删除数据表 tb_temp2。
    DROP TABLE tb_temp2;
    在这里插入图片描述

3.5 删除被其它表关联的主表

  • 数据表之间经常存在外键关联的情况,这时如果直接删除父表,会破坏数据表的完整性,也会删除失败。故删除父表有以下两种方法:通常采用第2种
    ① 先删除与它关联的子表,再删除父表;但是这样会同时删除两个表中的数据。
    ② 将关联表的外键约束取消,再删除父表;适用于需要保留子表的数据,只删除父表的情况。

  • 实例

    1. 创建两个关联表
      表 tb_emp4
      CREATE TABLE tb_emp4
      (
      id INT(11) PRIMARY KEY,
      name VARCHAR(22),
      location VARCHAR (50)
      );
      表 tb_emp5
      CREATE TABLE tb_emp5
      (
      id INT(11) PRIMARY KEY,
      name VARCHAR(25),
      deptId INT(11),
      salary FLOAT,
      CONSTRAINT fk_emp4_emp5 FOREIGN KEY (deptId) REFERENCES tb_emp4(id)
      );

    2. 使用 SHOW CREATE TABLE tb_emp5\G; 命令查看表 tb_ emp5 的外键约束。
      可以看出,tb_emp5 表为子表,具有名称为 fk_emp4_emp5 的外键约束;tb_emp4 为父表,其主键 id 被子表 tb_ emp5 所关联。

    3. 直接删除被数据表 tb_emp5 关联的数据表 tb_emp4。
      可以看出,当主表在存在外键约束时,不能被直接删除。

    4. ALTER TABLE tb_emp5 DROP FOREIGN KEY fk_emp4_emp5;解除子表 tb_emp5 的外键约束,语句成功执行后,会取消表 tb_emp4 和表 tb_emp5 之间的关联关系。

    5. 解除关联关系后,DROP TABLE tb_emp4;语句直接删除父表 tb_emp4

在这里插入图片描述

【 4. 插入数据 INSERT 】

4.1 基本语法

  • 在 MySQL 中,相对于多条 INSERT 语句进行多个插入,用单条 INSERT 语句处理多个插入更快。当使用单条 INSERT 语句插入多行数据的时候,只需要将每行数据用圆括号括起来即可。

INSERT…VALUES

  • 可以向表中插入一行数据,也可以插入多行数据。
  • 基本语法
    • <表名>:指定被操作的表名。
    • <列名>:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可以省略,直接采用 INSERT<表名>VALUES(…) 即可。
    • VALUES 或 VALUE 子句:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应
INSERT INTO <表名> [ <列名1> [ ,<列名n>] ]
VALUES (1) [, (值n) ];

INSERT…SET

  • 指定插入行中每列的值,也可以指定部分列的值; 也可以向表中插入其他表的数据。
  • 基本语法
    • 用于 直接给表中的某些列指定对应的列值,即要插入的数据的列名在 SET 子句中指定,等号后面为指定的数据,而对于未指定的列,列值会指定为该列的默认值。
INSERT INTO <表名>
SET <列名1> = <1>,<列名2> = <2>,

4.2 向表中的全部字段添加值

  • 向表中所有字段插入值的方法有两种:一种是指定所有字段名;另一种是完全不指定字段名。
  • 实例
    创建一个课程信息表 tb_courses,包含课程编号 course_id、课程名称 course_name、课程学分 course_grade 和课程备注 course_info。
    CREATE TABLE tb_courses
    (
    course_id INT NOT NULL AUTO_INCREMENT,
    course_name CHAR(40) NOT NULL,
    course_grade FLOAT NOT NULL,
    course_info CHAR(100) NULL,
    PRIMARY KEY(course_id)
    );
    在这里插入图片描述

指定所有字段名

  • 插入数据时,不需要按照表定义的顺序插入,只要保证值的顺序与列字段的顺序相同就可以
  • 实例1
    在 tb_courses 表中插入一条新记录,course_id 值为 1,course_name 值为“Network”,course_grade 值为 3,info 值为“Computer Network”。
    在插入数据时,指定了 tb_courses 表的所有字段,因此将为每一个字段插入新的值。
    INSERT INTO tb_courses
    (course_id,course_name,course_grade,course_info)
    VALUES(1,'Network',3,'Computer Network');
    在这里插入图片描述
  • 实例2
    在 tb_courses 表中插入一条新记录,course_id 值为 2,course_name 值为“Database”,course_grade 值为 3,info值为“MySQL”。
    INSERT INTO tb_courses
    (course_name,course_info,course_id,course_grade)
    VALUES('Database','MySQL',2,3);
    在这里插入图片描述

完全不指定字段名

  • 使用 INSERT 插入数据时,允许列名称列表 column_list 为空,此时值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。如果表的结构被修改,对列进行增加、删除或者位置改变操作,这些操作将使得用这种方式插入数据时的顺序也同时改变。如果指定列名称,就不会受到表结构改变的影响。
  • 实例
    在 tb_courses 表中插入一条新记录,course_id 值为 3,course_name 值为“Java”,course_grade 值为 4,info 值为“Jave EE”。
    INSERT INTO tb_courses
    VALUES(3,'Java',4,'Java EE');
    在这里插入图片描述

4.3 向表中指定字段添加值

  • 为表的指定字段插入数据,是在 INSERT 语句中 只向部分字段中插入值,而其他字段的值为表定义时的默认值
  • 实例
    在 tb_courses 表中插入一条新记录,course_name 值为“System”,course_grade 值为 3,course_info 值为“Operating System”。
    如查询结果显示,这里的 course_id 字段自动添加了一个整数值 4。这时的 course_id 字段为表的主键,不能为空,系统自动为该字段插入自增的序列值。
    INSERT INTO tb_courses
    (course_name,course_grade,course_info)
    VALUES('System',3,'Operation System');
    在这里插入图片描述

4.4 复制表数据 INSERT INTO…FROM

  • MySQL 可以快速地从一个或多个表中取出数据,并将这些数据作为行数据插入另一个表中。
    基本语法
    • SELECT 子句返回的是一个查询到的结果集;
    • INSERT 语句将这个结果集插入指定表中,结果集中的每行数据的字段数、字段的数据类型都必须与被操作的表完全一致。
INSERT INTO…SELECT…FROM
  • 实例
    1. 在数据库 test_db 中创建一个与 tb_courses 表结构相同的数据表 tb_courses_new。
      CREATE TABLE tb_courses_new
      (
      course_id INT NOT NULL AUTO_INCREMENT,
      course_name CHAR(40) NOT NULL,
      course_grade FLOAT NOT NULL,
      course_info CHAR(100) NULL,
      PRIMARY KEY(course_id)
      );
    2. 从 tb_courses 表中查询所有的记录,并将其插入 tb_courses_new 表中。
      INSERT INTO tb_courses_new
      (course_id,course_name,course_grade,course_info)
      SELECT course_id,course_name,course_grade,course_info
      FROM tb_courses;
      在这里插入图片描述

【 5. 修改数据 UPDATE 】

  • 在 MySQL 中,可以使用 UPDATE 语句 来修改、更新一个或多个表的数据。
    基本语法
    • <表名>:用于指定要更新的表名称。
    • SET 子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字 DEFAULT 表示列值。
    • WHERE 子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行
    • ORDER BY 子句:可选项。用于限定表中的行被修改的次序。
    • LIMIT 子句:可选项。用于限定被修改的行数。
    • 修改一行数据的多个列值时,SET 子句的每个值用逗号分开即可。
UPDATE <表名> SET 字段 1=1 [,字段 2=2] [WHERE 子句 ]
[ORDER BY 子句] [LIMIT 子句]

5.1 修改表中数据

  • 实例
    在 tb_courses_new 表中,更新所有行的 course_grade 字段值为 4。
    UPDATE tb_courses_new SET course_grade=4;
    在这里插入图片描述

5.2 根据条件修改表中的数据

  • 实例
    在 tb_courses 表中,更新 course_id 值为 2 的记录,将 course_grade 字段值改为 3.5,将 course_name 字段值改为“DB”。
    保证 UPDATE 以 WHERE 子句结束,通过 WHERE 子句指定被更新的记录所需要满足的条件,如果忽略 WHERE 子句,MySQL 将更新表中所有的行
    UPDATE tb_courses_new SET course_name='DB',course_grade=3.5 WHERE course_id=2;
    在这里插入图片描述

【 6. 删除数据 DELETE 】

  • 在 MySQL 中,可以使用 DELETE 语句 来删除表的一行或者多行数据。
    基本语法
    • <表名>:指定要删除数据的表名。
    • ORDER BY 子句:可选项。表示删除时,表中各行将按照子句中指定的顺序进行删除。
    • WHERE 子句:可选项,表示为删除操作限定删除条件;若省略该 WHERE 子句,则代表删除该表中的所有行
    • LIMIT 子句:可选项。用于告知服务器在控制命令被返回到客户端前被删除行的最大值。
DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

6.1 删除表中的全部数据

  • 实例
    删除 tb_courses_new 表中的全部数据。
    DELETE FROM tb_courses_new;
    在这里插入图片描述

6.2 根据条件删除表中的数据

  • 实例
    在 tb_courses_new 表中,删除 course_id 为 4 的记录。
    由运行结果可以看出,course_id 为 4 的记录已经被删除。
    DELETE FROM tb_courses WHERE course_id=4;
    在这里插入图片描述

【 7. 清空表记录 TRUNCATE 】

  • MySQL 提供了 DELETE 和 TRUNCATE 关键字来删除表中的数据,它们都可以用来清空表中的数据。
DELETETRUNCATE
DML 类型的语句。DDL 类型的语句。
逐行一条一条删除记录。直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
删除数据后,配合事件回滚 可以找回数据不支持事务的回滚,数据删除后无法找回。
删除数据后,系统不会重新设置自增字段的计数器清空表记录后,系统会重新设置自增字段的计数器。
使用范围更广,因为它 可以通过 WHERE 子句指定条件来删除部分数据不支持 WHERE 子句,只能删除整体。
会返回删除数据的行数只会返回 0,没有任何意义。
  • TRUNCATE 关键字 用于 完全清空一个表
    基本语法
    • 其中,TABLE 关键字可省略。
TRUNCATE [TABLE] 表名
  • 实例
    1. 新建表 tb_student_course,插入数据并查询。
      CREATE TABLE tb_student_course (
      id int(4) NOT NULL AUTO_INCREMENT,
      name varchar(25) NOT NULL,
      PRIMARY KEY (id)
      );
    2. 插入数据
      INSERT INTO tb_student_course(name) VALUES ('Java'),('MySQL'),('Python');
    3. 查询表tb_student_course
      SELECT * FROM tb_student_course;
      在这里插入图片描述
    4. 清空 tb_student_course 表中的记录
      TRUNCATE TABLE tb_student_course;
      在这里插入图片描述

相关文章:

3. MySQL 数据表的基本操作

文章目录 【 1. MySQL 创建数据表 】【 2. MySQL 查看表 】2.1 查看表的属性DESCRIBE/DESC 以表格的形式展示表属性SHOW CREATE TABLE 以SQL语句的形式展示表属性 2.2 查看表的内容 【 3. MySQL 修改数据表结构 】3.1 修改表名3.2 修改表字符集3.3 添加字段在末尾添加字段在开头…...

Linux命令篇(一):文件管理部分

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 1、cat命令常用参…...

IP协议1.0

基本概念&#xff1a; • 主机: 配有IP地址, 但是不进⾏路由控制的设备; • 路由器: 即配有IP地址, ⼜能进⾏路由控制; • 节点: 主机和路由器的统称; IP协议的报头 • 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. • 4位头部⻓度(header length): IP头部的⻓…...

源码编译安装LNMP

LNMP包含&#xff1a; linux、Nginx、Mysql、php LNMP的工作原理 &#xff1a; 由客户端发送页面请求给Nginx&#xff0c;Nginx会根据location匹配用户访问请求的URL路径判断是静态还是动态&#xff0c;静态的一般是以 .html .htm .css .shtml结尾&#xff0c;动态的一般是以 .…...

安装Chrome扩展程序来 一键禁用页面上的所有动画和过渡。有那些扩展程序推荐一下

要安装Chrome扩展程序来一键禁用页面上的所有动画和过渡&#xff0c;以下是一些推荐的扩展程序&#xff1a; Toggle CSS Animations and Transitions 功能&#xff1a;此扩展程序允许用户轻松地在网页上切换CSS动画和过渡的开启与关闭状态。使用方法&#xff1a;安装后&#x…...

读人工智能时代与人类未来笔记19_读后总结与感想兼导读

1. 基本信息 人工智能时代与人类未来 (美)亨利基辛格,(美)埃里克施密特,(美)丹尼尔胡滕洛赫尔 著 中信出版社,2023年6月出版 1.1. 读薄率 书籍总字数145千字&#xff0c;笔记总字数39934字。 读薄率39934145000≈27.5% 1.2. 读厚方向 千脑智能 脑机穿越 未来呼啸而来 …...

个人影响力

华人出了个黄仁勋&#xff0c;世界级影响力&#xff0c;还是近代华人历史首次出现具有如此影响力的人。凭借的逻辑是什呢&#xff1f;在人工智能领域有巨大影响力。...

OBS实现多路并发推流

OBS实现多路并发推流 解决方案速览相关依赖下载安装多路推流 解决方案速览 利用OBS进行本地直播画面的构建。 使用Multiple RTMP outputs plugin进行多路并发推流。 相关依赖下载安装 OBS软件 # OBS官网 https://obsproject.com/zh-cnMultiple RTMP outputs plugin # 插件官网…...

JDK环境配置、安装

DK环境配置&#xff08;备注&#xff1a;分32位与64位JDK&#xff0c;32位电脑只能按照32位JDK&#xff0c;64位电脑兼容32、64位JDK&#xff09; 一、检查自己电脑是否安装过JDK 1.在电脑屏幕左下角&#xff0c;输入命令提示符CMD&#xff0c;打开命令提示符应用 2.在打开界…...

莱富康压缩机的选型软件介绍

下载地址 https://download.csdn.net/download/jintaihu/16295771 安装步骤 这里可以选制冷系统的参数&#xff0c;最后在压缩机列表内选择推荐的型号。...

Pr 2024下载安装,Adobe Premiere专业视频编辑软件安装包获取!

Premiere Pro&#xff0c;简称PR&#xff0c;无论是想要剪辑家庭录像&#xff0c;还是制作专业的影视作品&#xff0c;Premiere Pro都能为您提供强大的支持。 Premiere Pro以其卓越的编辑功能和强大的性能&#xff0c;助力用户在视频创作的道路上不断突破自我。 它具备丰富的视…...

MySQL事务与MVCC

文章目录 事务和事务的隔离级别1.为什么需要事务2.事务特性1_原子性&#xff08;atomicity&#xff09;2_一致性&#xff08;consistency&#xff09;3_持久性&#xff08;durability&#xff09;4_隔离性&#xff08;isolation&#xff09; 3.事务并发引发的问题1_脏读2_不可重…...

【数据结构】链式二叉树详解

个人主页~ 链式二叉树基本内容~ 链式二叉树详解 1、通过前序遍历的数组来构建二叉树2、二叉树的销毁3、二叉树节点个数4、二叉树叶子节点个数5、二叉树第k层节点个数6、二叉树查找7、前序遍历8、中序遍历9、后序遍历10、层序遍历与检查二叉树是否为完全二叉树Queue.hQueue.c层序…...

PHP面向对象编程总结

PHP面向对象编程总结 学习PHP时&#xff0c;面向对象编程&#xff08;OOP&#xff09;往往是一个重要的里程碑。PHP的OOP功能提供了一种更加模块化、可扩展和易于维护的代码结构。在本文中&#xff0c;我们将深入探讨PHP面向对象编程的各个方面&#xff0c;包括类与对象、访问控…...

linux中的“->“符号

问&#xff1a; "->“符号在Linux中是什么意思。 例如&#xff1a;当我在一个特定的文件夹中执行ls -l时&#xff0c;我得到了以下结果。 lrwxrwxrwx 1 root root 11 May 16 13:30 nexus3 -> /nexus-data lrwxrwxrwx 1 root root 29 Feb 27 12:23 ojdbc.jar -&g…...

MySql 数据类型选择与优化

选择优化的数据类型 更小的通常更好 一般情况下尽量使用可以正确存储数据的最小类型。更小的数据类型通常更快&#xff0c;因为它们占用更少的磁盘&#xff0c;内存和CPU缓存&#xff0c;并且处理时需要的CPU周期也更少。但也要确保没有低估需要存储值的范围。 简单就好 简单的…...

HTML静态网页成品作业(HTML+CSS)——家乡常德介绍网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…...

【ARMv7-A】——CP15 协处理器

文章目录 CP15 协处理器指令格式MCR 示例MRC 示例寄存器C0 identification registersC1 system control registersC2 memory protection and control registersC3 memory protection and control registersC4 Not usedC5 Memory system fault registers...

学习笔记:(2)荔枝派Nano开机显示log(全志F1C200S)

学习笔记:TF卡启动荔枝派Nano(全志F1C200S) 1.u-boot配置2.需要配置LCD的显示设备树1.u-boot配置 ARM architecture Enable graphical uboot console on HDMI, LCD or VGAx:480,y:272,depth:...

Qt——升级系列(Level Two):Hello Qt 程序实现、项目文件解析、

Hello Qt 程序实现 使用“按钮”实现 纯代码方式实现&#xff1a; // Widget构造函数的实现 Widget::Widget(QWidget *parent): QWidget(parent) // 使用父类构造函数初始化QWidget&#xff0c;传入父窗口指针, ui(new Ui::Widget) // 创建Ui::Widget类的实例&#xff0c;并…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...