7. MySQL 视图、索引

文章目录

  • 【 1. 视图 View 】
    • 1.1 视图原理
    • 1.2 创建视图 CREATE VIEW
      • 1.2.1 创建基于单表的视图
      • 1.2.2 创建基于多表的视图
    • 1.3 查看视图
      • 1.3.1 查看视图的内容
      • 1.3.2 查看视图的详细信息
    • 1.4 修改视图 ALTER VIEW
      • 1.4.1 修改视图内容
      • 1.4.2 修改视图名称
    • 1.5 删除视图 DORP VIEW
  • 【 2. 索引 Index 】
    • 2.1 索引原理
    • 2.2 创建索引
      • 2.2.1 CREATE INDEX 直接创建索引
      • 2.2.2 CREATE TABLE 在创建表时创建索引
      • 2.2.3 ALTER TABLE 在修改表时创建索引
      • 实例:创建表时创建普通索引
      • 实例:创建表时创建唯一索引
    • 2.3 查看索引 SHOW INDEX
    • 2.4 修改索引
    • 2.5 删除索引
      • 2.5.1 DROP INDEX 删除索引
      • 2.5.2 ALTER TABLE 删除索引

【 1. 视图 View 】

1.1 视图原理

  • 视图(View) 是一种虚拟存在的表的显示形式,在数据库中的作用类似于窗户,用户可以通过这个窗口看到只对自己有用的数据,那些 对用户没用或者用户没有权限了解的信息,都可以直接屏蔽掉,作用类似于筛选。这样做既使应用简单化,提高了查询效率,也保证了系统和数据的安全。
  • 视图、数据、真实表的关系
    • 数据库中只存放了视图的定义,视图不包含数据 ,同真实表一样,视图也由列和行构成,视图上呈现的数据都存放在定义视图查询所引用的真实表中,每次使用视图时,都必须执行查询中所需的任何一个检索操作,数据库会从真实表中取出对应的数据 。如果用多个连接和过滤条件创建了复杂的视图或嵌套了视图,可能会发现系统运行性能下降得十分严重。因此,在部署大量视图应用时,应该进行系统测试。
      视图中的数据是依赖于真实表中的数据的,一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。
    • 使用视图的用户不接触数据表,不知道表结构
    • 视图的建立和删除只影响视图本身,不影响对应的基本表
    • 视图与表在本质上虽然不相同,但 视图经过定义以后,结构形式和表一样,可以进行查询、修改、更新和删除等操作
  • 例如,有两张表:公司的部门表(包括部门号、部门名称、功能和办公地址)和员工表(包括员工的工作号、部门号、姓名、性别、出生日期和家庭住址)。由于各部门领导的权力范围不同,因此,各部门的领导只能看到各自部门的员工信息;而且,领导可能不关心员工的生日和家庭住址,为了达到这个目的,可以为各部门的领导建立一个视图,通过该视图,领导只能看到本部门员工的指定信息。
  • 在此之上举例,我们可以为生产部门建立一个名为 product view 的视图,通过视图 product view,生产部门的领导只能看到生产部门员工的工作号、姓名和性别等信息。这些 部门表的信息和员工表的信息依然存在于各自的表中,而视图 product_view 中不保存任何数据信息,当部门表和员工表的信息发生改变时,视图 product_view 显示的信息也会发生相应的变化。
  • 使用视图的时候,还应该注意以下几点:
    • 创建 视图需要足够的访问权限
    • 视图可以从多个表中获取指定字段的数据。
    • 创建视图的数目没有限制。
    • 视图可以嵌套,即从其他视图中检索数据的查询来创建视图。
    • 视图不能索引,也不能有关联的触发器、默认值或规则。
    • 视图可以和表一起使用。
    • MySQL 的视图不支持输入参数的功能,因此交互性上还有欠缺。但对于变化不是很大的操作,使用视图可以很大程度上简化用户的操作。
视图的优点具体描述
定制用户数据,聚焦特定的数据在实际的应用过程中,不同的用户可能对不同的数据有不同的要求。
例如,当数据库同时存在时,如学生基本信息表、课程表和教师信息表等多种表同时存在时,可以根据需求让不同的用户使用各自的数据。学生查看修改自己基本信息的视图,安排课程人员查看修改课程表和教师信息的视图,教师查看学生信息和课程信息表的视图。
简化数据操作在使用查询时,很多时候要使用聚合函数,同时还要显示其他字段的信息,可能还需要关联到其他表,语句可能会很长,如果这个动作频繁发生的话,可以创建视图来简化操作。
提高数据的安全性视图是虚拟的,物理上是不存在的。可以只授予用户视图的权限,而不具体指定使用表的权限,来保护基础数据的安全。
共享所需数据通过使用视图,每个用户不必都定义和存储自己所需的数据,可以共享数据库中的数据,同样的数据只需要存储一次。
更改数据格式通过使用视图,可以重新格式化检索出的数据,并组织输出到其他应用程序中。
重用 SQL 语句视图提供的是对查询操作的封装,本身不包含数据,所呈现的数据是根据视图定义从基础表中检索出来的,如果基础表的数据新增或删除,视图呈现的也是更新后的数据。视图定义后,编写完所需的查询,可以方便地重用该视图。

1.2 创建视图 CREATE VIEW

  • 创建视图是指 在已经存在的 MySQL 数据库表上建立视图,视图可以建立在一张表中,也可以建立在多张表中。
  • 基本语法
    • <视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。
    • <SELECT语句>:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。对于创建视图中的 SELECT 语句的指定存在以下限制:
      • 用户除了拥有 CREATE VIEW 权限外,还具有操作中涉及的基础表和其他视图的相关权限。
      • SELECT 语句不能引用系统或用户变量。
      • SELECT 语句不能包含 FROM 子句中的子查询。
      • SELECT 语句不能引用预处理语句参数。
CREATE VIEW <视图名> AS <SELECT语句>
  • 视图定义中引用的表或视图必须存在。但是,创建完视图后,可以删除定义引用的表或视图。可使用 CHECK TABLE 语句检查视图定义是否存在这类问题。
  • 视图定义中允许使用 ORDER BY 语句,但是若从特定视图进行选择,而该视图使用了自己的 ORDER BY 语句,则视图定义中的 ORDER BY 将被忽略。 ORDER BY 子句可以用在视图中,但若该视图检索数据的 SELECT 语句中也含有 ORDER BY 子句,则该视图中的 ORDER BY 子句将被覆盖。
  • 视图定义中 不能引用 TEMPORARY 表(临时表),不能创建 TEMPORARY 视图。
  • WITH CHECK OPTION 的意思是,修改视图时,检查插入的数据是否符合 WHERE 设置的条件。

1.2.1 创建基于单表的视图

  • 实例1
    1. 在 tb_student_info 表上创建一个名为 view_students_info 的视图
      CREATE VIEW view_student_info AS SELECT * FROM tb_student_info;
    2. 查看视图 view_student_info。
      SELECT * FROM view_student_info;
      在这里插入图片描述
  • 实例2
    1. 在 tb_student_info 表上创建一个名为 v_student_info 的视图。
      CREATE VIEW v_student_info
      (s_id,s_name,s_age,s_sex,s_height)
      AS SELECT id,name,age,sex,height
      FROM tb_student_info;
    2. 查看视图 view_student_info 。
      可以看到,实例1的view_student_info 和实例2的 v_student_info 两个视图中的字段名称不同,但是数据却相同。因此,在使用视图时,可能用户不需要了解基本表的结构,更接触不到实际表中的数据,从而保证了数据库的安全。
      SELECT * FROM v_student_info;
      在这里插入图片描述

1.2.2 创建基于多表的视图

  • 实例
    在表 tb_student_info 和表 tb_department 上创建视图 v_students_info。
    1. 先创建 tb_department 数据表

1.3 查看视图

  • 视图内容和属性的查看和数据表一样,这里给出数据表的查看方式链接:查看数据表 。
  • 视图用于查询主要应用在以下几个方面:
    使用视图重新格式化检索出的数据。
    使用视图简化复杂的表连接。
    使用视图过滤数据。

1.3.1 查看视图的内容

  • 实例1
    SELECT *FROM v_student_info;
    在这里插入图片描述

1.3.2 查看视图的详细信息

  • 实例1
    DESCRIBE v_student_info;
    在这里插入图片描述
  • 实例2
    SHOW CREATE VIEW v_student_info \G
    在这里插入图片描述

1.4 修改视图 ALTER VIEW

  • 修改视图是指修改 MySQL 数据库中存在的视图,当基本表的某些字段发生变化时,可以通过修改视图来保持与基本表的一致性。
  • 基本语法
    • <视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。
    • <SELECT 语句>:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。
    • 对于 ALTER VIEW 语句的使用,需要用户具有针对视图的 CREATE VIEW 和 DROP 权限,以及由 SELECT 语句选择的每一列上的某些权限。
ALTER VIEW <视图名> AS <SELECT语句>

1.4.1 修改视图内容

  • 视图是一个虚拟表,实际的数据来自于基本表,所以通过插入、修改和删除操作更新视图中的数据,实质上是在更新视图所引用的基本表的数据,即:对视图的修改就是对基本表的修改 ,因此在修改时,要满足基本表的数据定义。
  • 对于可更新的视图,视图中的行和基本表的行之间必须具有一对一的关系
  • 如果视图包含以下结构中的任何一种,它就是 不可更新 的:
    • 聚合函数 SUM()、MIN()、MAX()、COUNT() 等。
    • DISTINCT 关键字。
    • GROUP BY 子句。
    • HAVING 子句。
    • UNION 或 UNION ALL 运算符。
    • 位于选择列表中的子查询。
    • FROM 子句中的不可更新视图或包含多个表。
    • WHERE 子句中的子查询,引用 FROM 子句中的表。
    • ALGORITHM 选项为 TEMPTABLE(使用临时表总会使视图成为不可更新的)的时候。
  • 实例1:ALTER 语句重构视图。
    使用 ALTER 语句修改视图 view_student_info。
    ALTER VIEW view_student_info
    AS SELECT id,name,age
    FROM tb_student_info;
    在这里插入图片描述
  • 实例2: UPDATE 语句更新视图。
    使用 UPDATE 语句更新视图 view_student_info。
    UPDATE view_student_info SET age=20 WHERE id=1;
    在这里插入图片描述

1.4.2 修改视图名称

  • 修改视图的名称可以先将视图删除,然后按照相同的定义语句进行视图的创建,并命名为新的视图名称。

1.5 删除视图 DORP VIEW

  • 删除视图是指删除 MySQL 数据库中已存在的视图。删除视图时,只能删除视图的定义,不会删除数据
    基本语法
    • <视图名>指定要删除的视图名。
    • DROP VIEW 语句可以一次删除多个视图,但是必须在每个视图上拥有 DROP 权限。
DROP VIEW <视图名1> [ , <视图名2>]
  • 实例
    1. 删除 v_student_info 视图。
      DROP VIEW IF EXISTS v_student_info;
    2. 再次查看 v_student_info 视图,提示不存在。
      SHOW CREATE VIEW v_student_info;
      在这里插入图片描述

【 2. 索引 Index 】

2.1 索引原理

  • 问题背景

    • 传统的 顺序访问 是在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据。顺序访问实现比较简单,但是当表中有大量数据的时候,效率非常低下
      例如,在几千万条数据中查找少量的数据时,使用顺序访问方式将会遍历所有的数据,花费大量的时间,显然会影响数据库的处理性能。
    • 索引访问 是通过遍历索引来直接访问表中记录行的方式:使用这种方式的前提是在数据表的列上创建索引(索引存储了指定列数据值的指针,根据指定的排序顺序对这些指针排序),查找数据时可以直接根据该列上的索引找到对应记录行的位置,从而快捷地查找到数据。
      例如,在学生基本信息表 tb_students 中,如果基于 student_id 建立了索引,系统就建立了一张索引列到实际记录的映射表,当用户需要查找 student_id 为 12022 的数据的时候,系统 先在 student_id 索引上找到该记录,然后通过映射表直接找到数据行,并且返回该行数据。因为扫描索引的 速度快,一般远远大于扫描实际数据行的速度,所以采用索引的方式可以大大提高数据库的工作效率。
  • 索引(Index) 是一种特殊的数据库结构,由数据表中的一列或多列组合而成(索引是根据表中的一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表,实质上是一张描述索引列的列值与原表中记录行之间一 一对应关系的有序表 )。可以 通过索引列快速查询数据表中有某一特定值的记录。如果在表中查询的列有一个索引,MySQL 能快速到达索引列的位置去搜寻数据,而不必查看所有数据;否则,数据库系统将读取每条记录的所有信息进行匹配。因此,使用索引可以很大程度上提高数据库的查询速度,有效的提高数据库系统的性能。

可以把索引比作新华字典的音序表。例如,要查“库”字,如果不使用音序,就需要从字典的 400 页中逐页来找。但是,如果提取拼音出来,构成音序表,就只需要从 10 多页的音序表中直接查找。这样就可以大大节省时间。

  • 索引的优缺点
优点缺点
1. 通过创建唯一索引可以保证数据库表中每一行数据的唯一性。
2. 可以给所有的 MySQL 列类型设置索引。
3. 可以大大加快数据的查询速度,这是使用索引最主要的原因。
4. 在实现数据的参考完整性方面可以加速表与表之间的连接。
5. 在使用分组和排序子句进行数据查询时也可以显著减少查询中分组和排序的时间
1. 创建和维护索引组要耗费时间,并且随着数据量的增加所耗费的时间也会增加。
2. 索引需要占磁盘空间,除了数据表占数据空间以外,每一个索引还要占一定的物理空间。如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸。
3. 当对表中的数据进行增加、删除和修改的时候,索引也要动态维护,这样就 降低了数据的维护速度
4. 索引可以提高查询速度,但是会影响插入记录的速度。 因为,向有索引的表中插入记录时,数据库系统会按照索引进行排序,这样就降低了插入记录的速度,插入大量记录时的速度影响会更加明显。这种情况下,最好的办法是先删除表中的索引,然后插入数据,插入完成后,再创建索引。

2.2 创建索引

  • 创建索引是指在某个表的一列或多列上建立一个索引,可以提高对表的访问速度。

2.2.1 CREATE INDEX 直接创建索引

  • 使用专门用于创建索引的 CREATE INDEX 语句,在一个已有的表上创建索引,但该语句不能创建主键
    基本语法
    • <索引名>:指定索引名。一个表可以创建多个索引,但每个索引在该表中的名称是唯一的
    • <表名>:指定要创建索引的表名。
    • <列名>:指定要创建索引的列名。通常可以考虑将查询语句中在 JOIN 子句和 WHERE 子句里经常出现的列作为索引列。
    • <长度>:可选项。指定使用列前的 length 个字符来创建索引。使用列的一部分创建索引有利于减小索引文件的大小,节省索引列所占的空间。在某些情况下,只能对列的前缀进行索引。索引列的长度有一个最大上限 255 个字节(MyISAM 和 InnoDB 表的最大上限为 1000 个字节),如果索引列的长度超过了这个上限,就只能用列的前缀进行索引。另外,BLOB 或 TEXT 类型的列也必须使用前缀索引。
    • ASC|DESC:可选项。ASC指定索引按照升序来排列,DESC指定索引按照降序来排列,默认为ASC。
CREATE <索引名> ON <表名> (<列名> [<长度>] [ ASC | DESC])

2.2.2 CREATE TABLE 在创建表时创建索引

  • 可以在创建表(CREATE TABLE)的同时创建索引。
作用基本语法
CREATE TABLE 语句中添加此语句,表示在创建新表的同时创建该表的 主键CONSTRAINT PRIMARY KEY [索引类型] (<列名>,…)
在 CREATE TABLE 语句中添加此语句,表示在创建新表的同时创建该表的 外键FOREIGN KEY <索引名> <列名>
在 CREATE TABLE 语句中添加此语句,表示在创建新表的同时创建该表的 索引KEY | INDEX [<索引名>] [<索引类型>] (<列名>,…)
在 CREATE TABLE 语句中添加此语句,表示在创建新表的同时创建该表的 唯一性索引UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)

2.2.3 ALTER TABLE 在修改表时创建索引

  • CREATE INDEX 语句可以在一个已有的表上创建索引,ALTER TABLE 语句也可以 在一个已有的表上创建索引。在使用 ALTER TABLE 语句修改表的同时,可以在 ALTER TABLE 语句中添加以下语法成分的某一项或几项,向已有的表添加索引。
作用基本语法
在 ALTER TABLE 语句中添加此语法成分,表示 在修改表的同时为该表添加索引ADD INDEX [<索引名>] [<索引类型>] (<列名>,…)
在 ALTER TABLE 语句中添加此语法成分,表示 在修改表的同时为该表添加主键ADD PRIMARY KEY [<索引类型>] (<列名>,…)
在 ALTER TABLE 语句中添加此语法成分,表示 在修改表的同时为该表添加外键ADD FOREIGN KEY [<索引名>] (<列名>,…)
在 ALTER TABLE 语句中添加此语法成分,表示 在修改表的同时为该表添加唯一性索引ADD UNIQUE [ INDEX | KEY] [<索引名>] [<索引类型>] (<列名>,…)

实例:创建表时创建普通索引

  1. 创建一个表 tb_stu_info,在该表的 height 字段创建普通索引。
    CREATE TABLE tb_stu_info
    (
    id INT NOT NULL,
    name CHAR(45) DEFAULT NULL,
    dept_id INT DEFAULT NULL,
    age INT DEFAULT NULL,
    height INT DEFAULT NULL,
    INDEX(height)
    );
  2. 显示这个表的详细属性。
    可以看到 height 字段 有 KEY 索引。
    SHOW CREATE TABLE tb_stu_info\G
    在这里插入图片描述

实例:创建表时创建唯一索引

  1. 创建一个表 tb_stu_info2,在该表的 id 字段上使用 UNIQUE 关键字创建唯一索引。
    CREATE TABLE tb_stu_info2
    (
    id INT NOT NULL,
    name CHAR(45) DEFAULT NULL,
    dept_id INT DEFAULT NULL,
    age INT DEFAULT NULL,
    height INT DEFAULT NULL,
    UNIQUE INDEX(height)
    );
  2. 显示这个表的详细属性。
    可以看到 id 字段 有 UNIQUE KEY 索引。
    SHOW CREATE TABLE tb_stu_info2\G
    在这里插入图片描述

2.3 查看索引 SHOW INDEX

  • 基本语法
    • <表名>:指定需要查看索引的数据表名。
    • <数据库名>:指定需要查看索引的数据表所在的数据库,可省略。
      比如,SHOW INDEX FROM student FROM test; 语句表示查看 test 数据库中 student 数据表的索引。
SHOW INDEX FROM <表名> [ FROM <数据库名>]
  • 实例
    查看 tb_stu_info2 数据表的索引信息。
    SHOW INDEX FROM tb_stu_info2\G
    在这里插入图片描述
  • 其中各主要参数说明如下:
参数说明
Table表示创建索引的数据表名,这里是 tb_stu_info2 数据表。
Non_unique表示该索引 是否是唯一索引。若不是唯一索引,则该列的值为 1;若是唯一索引,则该列的值为 0。
Key_name表示索引的名称。
Seq_in_index表示该列在索引中的位置,如果索引是单列的,则该列的值为 1;如果索引是组合索引,则该列的值为每列在索引定义中的顺序。
Column_name表示定义索引的列字段。
Collation表示列以何种顺序存储在索引中。在 MySQL 中,升序显示值“A”(升序),若显示为 NULL,则表示无分类。
Cardinality索引中唯一值数目的估计值。基数根据被存储为整数的统计数据计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL 使用该索引的机会就越大。
Sub_part表示列中被编入索引的字符的数量。若列只是部分被编入索引,则该列的值为被编入索引的字符的数目;若整列被编入索引,则该列的值为 NULL。
Packed指示关键字如何被压缩。若没有被压缩,值为 NULL。
Null用于显示索引列中是否包含 NULL。若列含有 NULL,该列的值为 YES。若没有,则该列的值为 NO。
Index_type显示索引使用的类型和方法(BTREE、FULLTEXT、HASH、RTREE)。
Comment显示评注。

2.4 修改索引

  • 在 MySQL 中修改索引可以通过删除原索引,再根据需要创建一个同名的索引,从而实现修改索引的操作。

2.5 删除索引

  • 不用的索引建议进行删除,因为它们会降低表的更新速度,影响数据库的性能。对于这样的索引,应该将其删除。
  • 如果删除的列是索引的组成部分,那么在删除该列时,也会将该列从索引中删除;
    如果组成索引的所有列都被删除,那么整个索引将被删除。

2.5.1 DROP INDEX 删除索引

  • 基本语法
    • <索引名>:要删除的索引名。
    • <表名>:指定该索引所在的表名。
DROP INDEX <索引名> ON <表名>
  • 实例
    1. 删除表 tb_stu_info 中的索引。
      DROP INDEX height ON tb_stu_info;
    2. 查看表 tb_stu_info 的详细属性。
      SHOW CREATE TABLE tb_stu_info\G
      在这里插入图片描述

2.5.2 ALTER TABLE 删除索引

  • ALTER TABLE 语句也可以用于删除索引,具体使用方法是将 ALTER TABLE 语句的语法中部分指定为以下子句中的某一项。
    • DROP PRIMARY KEY:表示删除表中的主键。一个表只有一个主键,主键也是一个索引。
    • DROP INDEX index_name:表示删除名称为 index_name 的索引。
    • DROP FOREIGN KEY fk_symbol:表示删除外键。
  • 实例
    1. 删除表 tb_stu_info2 中名称为 height 的索引。
      ALTER TABLE tb_stu_info2 DROP INDEX height;
    2. 查看表 tb_stu_info 的详细属性。
      SHOW CREATE TABLE tb_stu_info2\G
      在这里插入图片描述

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

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

相关文章

Ansys Mechanical|组装 External Mechanical Model

Assembling Finite Element Models 上文中介绍了如何导入外部模型并将其组合到单个模型中的示例。 如果要将外部模型与Workbench环境中已有的一个或多个模型组合在一起&#xff0c;该如何操作&#xff1f;本文将介绍这个工作流程。 Ansys Mechanical支持Mechanical Model和Ex…

移动系统编程-安装和运行Ionic应用程序 (Installation and Running Ionic Apps)

安装 (Installation) 假设您已经安装了Node.js和Angular&#xff0c;您可以使用以下命令安装Ionic&#xff1a; npm install -g ionic/cli您也可以不使用CLI安装Ionic&#xff0c;但如果您使用的是最新版本的Cordova&#xff0c;这样做可能会导致版本不匹配&#xff0c;不推荐…

用幻灯片讲解C++中的C语言风格数组

用幻灯片讲解C中的C语言风格数组 1.栈内存中的C风格数组 糟糕的可用性&#xff0c;但你将在遗留代码中看到它们。相同类型的对象块。大小必须是常量表达式。第一个元素的索引为0&#xff0c;即数组索引从0开始。 注意一下数组的初始化&#xff0c;使用了C11标准之后的统一初始…

回溯算法 -- 77. 组合

目录 一.题目描述 二.解题思路 三.回溯三部曲 3.1确定递归函数的返回值以及参数 3.2回溯算法的终止条件 3.3确定单层循环搜索逻辑 四.具体的代码 一.题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案…

软件开发整体介绍

黑马程序员瑞吉外卖 文章目录 一、软件开发流程二、角色分工三、软件环境 一、软件开发流程 二、角色分工 三、软件环境

MySQL—函数—流程控制函数(基础)

一、引言 接下来&#xff0c;我们就进入函数的最后一个部分&#xff1a;流程函数。而流程控制函数在我们的日常开发过程是很有用的。 流程控制函数在我们 sql 语句当中&#xff0c;经常用来实现条件的筛选&#xff0c;从而提高语句的一个执行效率。 我们主要介绍以下4个流程控…

第十五课,海龟画图:抬笔与落笔函数、画曲线函数

一&#xff0c;turtle.penup()和turtle.pendown()&#xff1a;抬起与落下画笔函数 当使用上节课学习的这个turtle.forward()&#xff1a;画笔前进函数时&#xff0c;画笔会朝着当前方向在画布上留下一条指定&#xff08;像素&#xff09;长度的直线&#xff0c;但你可能发现&a…

自动微分技术在 AI for science 中的应用

本文简记我在学习自动微分相关技术时遇到的知识点。 反向传播和自动微分 以 NN 为代表的深度学习技术展现出了强大的参数拟合能力&#xff0c;人们通过堆叠固定的 layer 就能轻松设计出满足要求的参数拟合器。 例如&#xff0c;大部分图神经网络均基于消息传递的架构。在推理…

政安晨【零基础玩转各类开源AI项目】:解析开源项目的论文:Physical Non-inertial Poser (PNP)

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 本文解析的原始论文为&#xff1a;https://arxiv.org/…

有容微ASW3642 HDMI或者DP双向切换器,二进一出,一进二出支持4K60HZ分辨率

ASW3642描述&#xff1a; ASW3642 是一款 12 通道 1:2 或 2:1 双向多路复 用器/ 多路解复用器。 ASW3642 可由 2.6V 至 4.5V 的电源供电&#xff0c;适用于电池供电的应用。该器 件的导通电阻&#xff08;R ON &#xff09;较低并且 I/O 电容较小&#xff0c; 能…

Nginx配置详细解释:(1)全局配置

自启动安装nginx:前面博客有解释 systemctl stop firewalld setenforce 0 [rootNode1 ~]#:mkdir /data [rootNode1 ~]#:cd /data [rootNode1 data]#:yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel [rootNode1 data]#:wget http://nginx.o…

JMeter工具介绍

Jmeter功能概要 JDK常用文件目录介绍 Bin目录&#xff1a;存放可执行文件和配置文件 Docs目录&#xff1a;是Jmeter的API文档&#xff0c;用于开发扩展组件 printable_docs目录&#xff1a;用户帮助手册 lib目录&#xff1a;存放JMeter依赖的jar包和用户扩展所依赖的Jar包 修…

linux mtd分区应用操作sample之某分区擦除

什么是擦除? 把flash相关的区域数据bit置为1的过程 #include <mtd/mtd-user.h> #include <mtd/mtd-abi.h> struct erase_info_user {__u32 start; // 起点 __u32 length; //长度 块大小对齐 不然报参数失败 };struct erase_info_user64 {__u64 sta…

wandb安装与使用 —— 用于跟踪、可视化和协作机器学习实验的工具

文章目录 一、wandb简介二、wandb注册与登陆&#xff08;网页&#xff09; —— 若登录&#xff0c;则支持在线功能三、wandb安装与登陆&#xff08;命令行&#xff09; —— 若不登录&#xff0c;则只保留离线功能四、函数详解4.1、wandb.init() —— 初始化一个新的 wandb 实…

Vivado的两种下载安装方式:Webpack下载与安装、本地文件安装详细步骤讲解

目录 1.前言2. Vivado Webpack下载、安装3.本地文件下载安装 微信公众号获取更多FPGA相关源码&#xff1a; 1.前言 本人自本科大二开始接触FPGA相关知识&#xff0c;现已将近六年&#xff0c;由于一直在上学&#xff0c;也不是一直在搞FPGA&#xff0c;但是也完成过一些项目…

【线性表】顺序存储和链式存储的实现

文章目录 顺序存储链式存储单向链表循环链表 线性表的定义 (1)概念定义&#xff1a;用数据元素的有限序列表示叫做线性表&#xff1b;线性表中数据元素的类型可以为简单类型&#xff0c;也可以为复杂类型。许多实际应用问题所涉的基本操作有很大相似性&#xff0c;不应为每个具…

Day02 设计首页导航条

设计首页导航条 导航条的样式&#xff0c;主要是从Material DesignThemes UI 拷贝过来修改的,项目用了这个UI组件库。就看项目需要什么&#xff0c;就去源码拷过来使用。 直接下载源码&#xff0c;编译运行就可以看到Demo 了 下载后且正常编译成功了&#xff0c;是能正常跑起来…

如何使用Python绘制出好看的小提琴图、箱形图、散点图、山脊图和柱状图

如何使用Python绘制出好看的小提琴图、箱形图、散点图、山脊图和柱状图 废话不多说&#xff0c;今天给大家分享一个&#xff0c;使用python绘制小提琴图、箱形图、散点图、山脊图和柱状图等等 图中的数据是随机生成的&#xff0c;图例&#xff0c;图注以及坐标题目各种信息&a…

javascript之对象属性配置

属性标志&#xff1a; 介绍&#xff1a; 对象属性&#xff0c;除 value 外&#xff0c;还有三个特殊的特性&#xff0c;也就是所谓的“标志”&#xff1a; 属性truefalsewritable值可以被修改只可读的enumerable被在循环中列出不会被列出configurable此属性可以被删除/修改 不可…

从头开始构建GPT标记器

从头开始构建GPT标记器 对于GPT Tokenizer&#xff0c;论文《Language Models are Unsupervised Multitask Learners》中介绍了一种字节级编码作为LLM的标记化机制&#xff1a; The vocabulary is expanded to 50,257. We also increase the context size from 512 to 1024 to…