一、元组常用操作 1、使用下标索引取出元组中的元素 - [下标索引] 使用下标索引取出 元组 tuple 中的元素 的方式 , 与 列表 List 相同 , 也是将 下标索引 写到中括号中 访问指定位置的元素...print(index) 执行结果 : 2 3、统计某个元素的个数 - count 函数 调用 tuple#count函数 , 可以统计 元组 中指定元素 的个数 ; 函数原型如下 : def...tuple 常用操作 代码示例 """ # 定义元组字面量 t0 = ("Tom", "Jerry", 18, "Tom", False, 3.1415926) # 查找元素个数 count =...t0.count("Tom") # 打印查询结果 print(count) 执行结果 : 2 4、统计元组中元素的个数 - len 函数 调用 len(元组变量) 函数 , 可以统计 元组 所有元素...的个数 ; 函数原型如下 : def len(*args, **kwargs): # real signature unknown """ Return the number of items
合法三元组的个数 给定三个数组 A, B, C,以及一个非负整数 d。求共有多少个三元组 (i, j, k),满足 ... 输出一个整数,用来表示满足条件的三元组的个数。...题目大意 给定三个数组 A, B, C,以及一个非负整数 d。...求共有多少个三元组 (i, j, k),满足:|A_i - B_j| \le d, |A_i - C_k| \le d, |B_j - C_k| \le d。 解题思路 双指针常用于解决计数类问题。...如果把 A,B,C 三个数组合并到一个数组 D 中,并将 D 数组排序,问题就转化为求所有满足 D[j] - D[i] 的区间中能选出多少个 A, B, C;考虑到直接枚举区间的时间复杂度较高,而 D...数组具有单调性,因此可以使用双指针中的快慢指针来选择区间。
表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过技术收到逼迫程序员插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。...我们可以用hex函数来证明 :hex:把一个数字变成十六进制 mysql> insert into t17 values (100,200); Query OK, 1 row affected (0.00...一个主键可以被添加到一列,或者多列上 主键;主键所在的列通常是整数类型 创建表的时候直接在字段上指定主键 mysql> create table if not exists test_key (...对于自增长:默认是从1开始插入的,如果默认插入了一个值作为起始值,则从这个起始值加1开始 所以我们在创建表的时候可以给自增长设置一个起始值: mysql> create table t22( -...建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入。
'学号', name varchar(5) ); 创建好表之后,我们可以追加主键 2.删除主键 alter table 表名 drop primary key; 案例: 3.复合主键 在创建表的时候...索引: 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结 构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。...索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。 索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。...这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息 七、唯一键 一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段需要唯一性约束的问题...;插入的学生班级号不能在班级表中没有。
表的约束 表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼用户,插入正确的数据。...反过来,在 mysql 角度,凡是插入进来的数据,都是符合数据约束的!约束的最终目的就是保证数据的完整性和可预期性。因此我们需要更多的约束条件!...的值由原来的 1 变成 00001,这就是 zerofill 属性的作用,如果宽度小于设定的宽度(这里设置的是 5),自动填充 0;要注意的是,这只是最后显示的结果,在 MySQL 中实际存储的还是1...再插入 stu 表: 但是此时这两张表是两张独立的表,它们只有对应的关联关系,并没有任何的约束关系。...建立外键的本质其实就是把相关性交给 mysql 去审核了,提前告诉 mysql 表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql 不允许你插入。
#前言:我们说过,库相当于一个文件夹,表相当于文件夹里的一个个文件,表里面的一条记录相当于一行内容,表中的一条记录有对应的标题,称为表的字段 #直观表 ?...#id,name,sex,age为表的字段,其余一行内容称为一条记录 1.建表 #创建表语法格式 Create table ( , ….....: create table 表示创建表的固定关键字,student为表名,有四个字段,分别表示 id:学号列, int:数字类型, 4:长度为4, not null:不为空值...字节 极大文本数据 #创建表的时候指定存储引擎 mysql> create table test ( -> id int(4) not null auto_increment,...#语法格式:drop table #例子:删除db库里面的student表 mysql> use db; Database changed mysql> show tables; #查看库中的表
所谓约束,就是避免犯一些低级错误,比如类似于语法错误,编译器的编译失败实际上也算是一种约束。 表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。...约束的本质: 通过技术手段倒逼程序员插入正确的数据。反过来站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。 约束的最终目标: 保证数据的完整性和可预期性。 为什么数据库这么严格?...二.表的非空约束 1.NULL与’ '比较 在MySQL数据类型已经说过,这二者是不同的,NULL代表什么都没有,而' '代表一个空串。 在select语句中,NULL不会参与到相应的计算操作中。...如果将学生表和班级表结合成一个表,那么在插入数据时,就需要插入大量的字段造成没必要的冗余。若将其分成两个表,那么通过一一对应的映射,来减少没必要的数据。 为什么会造成没必要的冗余?...在两个表的前提下,若要新增一名学生信息,只需要插入三个字段;若合并成一个表,那么就需要插入3+2-1=4个字段,并且我们知道组合起来的情况也会更多,两个表合并的结果就是数据位置上的相乘,比如: 两个表
本期题目:统计匹配的二元组个数 题目 给定两个数组 A 和 B,若数组 A 的某个元素 A[i] 与数组 B 中的某个元素 B[j] 满足 A[i]==B[j],则寻找到一个匹配的二元组(i,j) ,请统计再这两个数组...A 和 B 中,一共存在多少个这样的二元组。...输入 第一行输入数组 A 的长度 M ; 第一行输入数组 B 的长度 N ; 第三行输入数组 A 的值; 第四行输入数组 B 的值。...1≤M,N≤100000 A,B 数组中数值的取值均小于 100000 输出描述 输出匹配的二元组个数 题解地址 ⭐️ 华为 OD 机考 Python https://dream.blog.csdn.net...(也可以通过数组索引的方法) BFS 广搜的共同点:利用数组索引的方法。
表与表之间的关系 表1 foreign key 表2 则表1的多条记录对应表2的一条记录,即多对一 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表...2的一条记录 表2的多条记录也可以对应表1的一条记录 一对一: 表1的一条记录唯一对应表2的一条记录,反之亦然 分析时,我们先从按照上面的基本原理去套,然后再翻译成真实的意义,就很好理解了...1、先确定关系 2、找到多的一方,把关联字段写在多的一方 一对多 多对一或者一对多(左边表的多条记录对应右边表的唯一一条记录) 需要注意的: 1.先建被关联的表,保证被关联表的字段必须唯一。...图片 创建表 书要关联出版社 被关联的表 create table press(id int primary key auto_increment, name char(20)); 关联的表 create...add primary key(id,avg) 多对多:一个作者可以写多本书,一本书也可以有多个作者,双向的一对多,即多对 关联方式:foreign key+一张新的表 示例: 图片 图片 创建表 =
大家好,又见面了,我是你们的朋友全栈君。...元组 元组的特点:是一种不可变序列,一旦创建就不能修改 拆包 将元组的元素取出赋值给不同变量 >>> a = ('hello', 'world', 1, 2, 3) >>> str1, str2,...*n = a >>> str1 'hello' >>> str2 'world' >>> n [1, 2, 3] >>> str1, _, n1, n2, _ = a enumerate 解释:用于元组遍历...,获得元组对象,第一个元素是索引,第二个是数值 a = ('1', 2, 35, 'hello') for i in enumerate(a): print(i) >>> (0, '1') >>...> (1, 2) >>> (2, 35) >>> (3, 'hello') list() 元组转换成列表 a = ('1', 2, 35, 'hello') print(list(a)
一、元组 tuple 简介 1、元组引入 列表 List 中的数据是可修改的 , 如果有这样一种场景 , 数据生成后 , 不能修改 , 列表就不适用了 ; 这里引入新的 数据容器 " 元组 tuple..." ; 数据封装 : 元组 中可以 封装 多个 不同类型 的元素 , 该功能与 列表 相同 ; 不可修改 : 元组 一旦定义初始化完成 , 其中的数据就不可更改 ; 元组 可以被理解为 只读 List...列表 ; 2、元组定义 元组 使用小括号 () 定义 , 多个数据元素之间 , 使用逗号隔开 ; 元组 中的 数据元素 可以是 相同数据类型的 , 也可以是 不同数据类型的 ; 元组字面量 定义语法 :...定义只有一个元素的元组 , 需要在这唯一的元素后面加上一个逗号 , 这个逗号必须存在 ; 定义只有一个元素的元组语法 : 元组变量 = (元素,) 如果在这唯一的元素后面没有逗号 , 则定义的就不是元组...元组 中的 元素 数据类型 不限制 , 因此 元组 中也可以存放 元素 类型数据 , 也就是 元组嵌套 ; 代码示例 : # 元组嵌套 t6 = (("Tom", 16), ("Jerry", 18)
使用原则和设计规范 聊完范式,接下来我们看看 MySQL 使用中的一些使用原则和设计规范。...想要发挥 MySQL 的最佳性能,需要遵循 3 个基本使用原则 首先是需要让 MySQL 回归存储的基本职能:MySQL 数据库只用于数据的存储,不进行数据的复杂计算,不承载业务逻辑,确保存储和计算分离...一旦事务回滚,会导致资源占用时间过长 大 SQL,复杂的 SQL 意味着过多的表的关联,MySQL 数据库处理关联超过 3 张表以上的 SQL 时,占用资源多,性能低下 大批量,意味着多条 SQL...必须要用时,尽量与主业务表分离,减少对这类字段的检索和更新 ---- 基本设置规则 必须指定默认存储引擎为 InnoDB,并且禁用 MyISAM 存储引擎,随着 MySQL 8.0 版本的发布,所有的数据字典表都已经转换成了...单实例表个数必须控制在 2000 个以内。 单表分表个数必须控制在 1024 个以内。 单表字段数上限控制在 20~50 个 【禁用 ENUM、SET 类型】 兼容性不好,性能差。
前言: 在数据库中,数据表是存储和组织数据的基本单位,对于数据表的操作是每个程序员需要烂熟于心的技巧。...创建表时,不同的存储引擎创建的文件不同,比如我再任意创建一个表,不过这个表的存储引擎为MyISAM。使用这个搜索引擎创建的文件有 xxx.sdi 、xxx.MYD、xxx.MYI 三个文件。...表的修改 在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。...✈️表的重命名 修改表,是对表中的属性字段以及格式的修改,不同的属性修改起来略有不同。...--行插入,根据行属性个数插入-- 插入字段: 如果我们表结构已经创建好了,但是未来发现有新的数据类型要加在这张表当中,我们可以使用如下SQL指令 添加新的字段: ALTER TABLE table_name
MySQL修改表的字段 MySQL 修改表字段的方法有两种: ALTER TABLE MODIFY COLUMN。...其语法如下: ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型; 其中,表名 表示要修改的表名,字段名 表示要修改的字段名,字段类型 表示修改后的字段类型。...例如,修改表 users 的字段 username 的类型为 VARCHAR(50),可以使用以下 SQL 语句: ALTER TABLE users MODIFY COLUMN username VARCHAR...其语法如下: ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 [属性]; 其中,表名 表示要修改的表名,字段名 表示要修改的字段名,字段类型 表示修改后的字段类型,属性 表示修改后的字段属性...例如,将表 users 中的字段 age 的数据类型修改为 INT,并设置默认值为 0,可以使用以下 SQL 语句: ALTER TABLE users MODIFY COLUMN age INT DEFAULT
数据操作语言:表连接查询(一) 从多张表中提取数据 从多张表提取数据,必须指定关联的条件。如果不定义关联条件就会出现无条件连接,两张表的数据会交叉连接,产生 笛卡尔积。...规定了连接条件的表连接语句,就不会出现笛卡尔积。...表连接分为两种:内连接 和 外连接 内连接是结果集中只保留符合连接条件的记录 外连接是不管符不符合连接条件,记录都要保留在结果集中 内连接的简介 内连接是最常见的一种表连接,用于查询多张关系表符合连接条件的记录...内连接的多种语法形式 SELECT ...... FROM 表1 JOIN 表2 ON 连接条件; SELECT .........="SCOTT"; 相同的数据表也可以做表连接
分析步骤: #1、先站在左表的角度去找 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段(通常是id) #2、再站在右表的角度去找 是否右表的多条记录可以对应左表的一条记录...如果步骤1和2同时成立,则证明这两张表时一个双向的多对一,即多对多,需要定义一个这两张表的关系表来专门存放二者的关系 #一对一: 如果1和2都不成立,而是左表的一条记录唯一对应右表的一条记录,反之亦然...这种情况很简单,就是在左表foreign key右表的基础上,将左表的外键字段设置成unique即可 三 建立表之间的关系 #一对多或称为多对一 三张表:出版社,作者信息,书 一对多(或多对一):一个出版社可以出版多本书...id外键到丈夫表的id #多对多 三张表:出版社,作者信息,书 多对多:一个作者可以写多本书,一本书也可以有多个作者,双向的一对多,即多对多 关联方式:foreign key+一张新的表 ===...用户表+相亲关系表,相当于:用户表+相亲关系表+用户表 多张表:用户表+用户与主机关系表+主机表 中间那一张存放关系的表,对外关联的字段可以联合唯一 #一对一 两张表:学生表和客户表 一对一:一个学生是一个客户
当处理较复杂大的逻辑时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录存到一个临时表可能更快些,然后多这些表运行查询。...这就是mysql临时表的作用了 一:创建临时表 CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL, value...如果你声明Mysql临时表是一个HEAP表,MySQL也允许你指定在内存中创建它 CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT... NULL, value INTEGER NOT NULL ) TYPE = HEAP 因为HEAP表存储在内存中,你对它运行的查询可能比磁盘上的临时表快些。...然而,HEAP表与一般的表有些不同,且有自身的限制。详见MySQL参考手册。
表的连接分为内连和外连。 一.内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。...左外连接 如果联合查询,左侧的表完全显示我们就说是左外连接。...即将学生表放在左侧,成绩表放在右侧,此时左侧的表完全显示,右侧的表由于缺少对应的一条信息,其内部的值为空。语法与内连接的区别就是将inner替换成了left。...这与左外连接的规则是一样的,只不过主导的表变成了右侧。...从上面要求:同时列出没有员工的部门可以看出,部门为主,因此若选择左外连接,部门表在左侧;选择右外连接,部门表在右侧。
在 MySQL 中,Temporary Table(临时表)和 Memory Table(内存表)是两种不同的表类型,它们有一些重要的区别和用途。...可以使用 CREATE TEMPORARY TABLE 语句创建临时表。 临时表可以存储在磁盘上,也可以存储在内存中,具体取决于 MySQL 的配置和存储引擎。...内存表适用于需要快速读写操作的场景,但需要注意的是,内存表的数据会在 MySQL 服务重启时丢失,因为数据存储在内存中。...3.区别 主要的区别在于存储和生命周期: 存储: 临时表的存储位置可以是磁盘或内存,而内存表的数据存储在内存中。...生命周期: 临时表的生命周期限于会话或连接,会话结束时自动删除;而内存表的数据在 MySQL 服务重启时会丢失。 4.小结 您需要根据业务需求来选择使用临时表还是内存表。
在设计好表结构之后, 就需要进行物理设计, 将实体及属性映射到具体表和列. 而合理选择存储引擎和列类型也是数据库设计十分重要的一个环节....命名规范 首先在定义数据库,表,字段时一定要公司的命名规范; 二....; 如存储金钱相关数据, 那最好是decimal类型 列类型 存储空间 是否精确类型 float 4字节 否 double 8字节 否 decimal 每4字节存9个数字,小数点占1个字节 是 3.3...字符串类型 MySQL中字符串类型主要有两种varchar 和 char, 如果是非常大的文本可以酌情选择text类型....主键选择 应选择尽可能小且顺序增长的数字类型, 并且表主键可以与业务主键不同.
领取专属 10元无门槛券
手把手带您无忧上云