# 插入一行数据;仅当该数据与表格已有数据不重复时才插入,否则就不会插入 sql_insert = 'INSERT INTO `topic_monitor`(question_id,is_title...我在最初一个月的实践中,最常出现的错误有: 值的引用没有加上引号; 符号错乱:多一个符号,少一个符号; 值的类型不符合:不管 mysql 表格中该值是数,还是文本,在定义 sql 语句的字符串时,对每个值都需要转化为字符串...二、sql语句:搜索查询 搜索是指在数据库的某个表格中查询符合特定条件的数据,并返回查询结果。...仅返回符合条件的数据个数: SELECT count(*) FROM table_name ; ? 变量B:条件是指,期望返回的数据满足哪些条件。...三、sql语句:修改表属性 横向的一整条数据,叫做行;竖向的一整条数据,叫作列。列的名字,叫做 column,这是通用的知识点。 这段时间的实战中,我完全没有用到修改表的名称、重设index等知识点。
自然毫无悬念 dataframe:无法访问单个元素,只能返回一列、多列或多行:单值或多值(多个列名组成的列表)访问时按列进行查询,单值访问不存在列名歧义时还可直接用属性符号" ....切片形式访问时按行进行查询,又区分数字切片和标签切片两种情况:当输入数字索引切片时,类似于普通列表切片;当输入标签切片时,执行范围查询(即无需切片首末值存在于标签列中),包含两端标签结果,无匹配行时返回为空...isin/notin,条件范围查询,即根据特定列值是否存在于指定列表返回相应的结果 where,仍然是执行条件查询,但会返回全部结果,只是将不满足匹配条件的结果赋值为NaN或其他指定值,可用于筛选或屏蔽值...如下实现对数据表中逐元素求平方 ? 广播机制,即当维度或形状不匹配时,会按一定条件广播后计算。...,要求每个df内部列名是唯一的,但两个df间可以重复,毕竟有相同列才有拼接的实际意义) merge,完全类似于SQL中的join语法,仅支持横向拼接,通过设置连接字段,实现对同一记录的不同列信息连接,支持
连接表时的SQL的工作原理 SQL 连接子句类似于关系代数中的连接操作。它将关系数据库中一个或多个表中的列组合起来,创建一组可以保存为表或按原样使用的集合。...外键 外键是表中的列,指定到另一个表中主键的链接。例如,在上图中,albums 表中的artist_id 列是artists 表中id 的外键。...如果可能,内联接将组合公共维度(前 N 列)上的列,并且仅包含公共 N 列中共享相同值的列的数据。在上面的示例中,User_ID 将是用于内连接的公共维度。...如果可能,左连接会组合公共维度上的列(前 N 列),返回第一个表中的所有行以及连续表中的匹配行。当没有匹配时,连续表中的结果为 NULL。...在左连接中,表 1(左表)被视为基础,而在右连接中,表 2(右表)将被视为基础。右连接尽可能组合公共维度上的列(前 N 列),返回第二个/右表中的所有行以及第一个/左表中的匹配行。
在开始之前,我们需要记住另外两个SQL细节: WHERE针对行测试条件,并且仅当此条件为TRUE时才让行通过(拒绝FALSE和UNKNOWN)。...例如,有些人震惊地看到IN和NOT IN都错过了A房屋,就像A不在两组(“coal”, “wood”和另一组)中一样;似乎是看不见的,有点像幽灵…… 问题的关键是当我设计房屋表时,我的意思是NULL为“...我只需要用SQL更好地表达我想要的内容即可。 我可以将NOT IN更改为IN NOT TRUE: ? 这将让IN返回FALSE或UNKNOWN的房屋通过;因此,A和B会如我所愿地通过。...>没有结果。 再次缺少A。同样,解决方案是: ? 现在我得到A。将其重写为IN IS NOT TRUE效果很好。 我可以改写为NOT EXISTS,但这是需要更多的编辑工作: ? 这也返回A。...当NOT IN的任何一侧是可为空的列(此处是我们的情况)时, SELECT … WHERE heating NOT IN (SELECT name …) 不能转换为反联接(MySQL 8.0.17的新功能
索引有三种类型 1.唯一索引:唯一索引通过确保表中没有两行数据具有相同的键值来帮助维护数据完整性。定义主键时,可以自动应用唯一索引。它确保索引键列中的值是唯一的。...内部联接:当正在比较的两个(或多个)表之间至少有一些匹配数据时,内部联接将返回行。 外部联接:外部联接从两个表返回行,这些行包括与一个或两个表不匹配的记录。 36.什么是SQL约束?...如果在插入记录时未提供任何值,则DEFAULT约束用于在列中包括默认值。 51.什么是标准化? 规范化是表设计的过程,以最大程度地减少数据冗余。 53.什么是非正规化?...在SQL Server中,数据库表中的每一列都有一个名称和一种数据类型。 在创建SQL表时,我们需要决定在表的每一列中存储哪种数据类型。 57.可以在BOOLEAN数据字段中存储哪些可能的值?...SQL中的聚合函数是什么? SQL聚合函数返回单个值,该值是根据列中的值计算得出的。
许多子查询返回单个列值,因为它们与比较运算符(=,!=,,> =)或表达式结合使用。当子查询不用作表达式或使用比较运算符时,它可以返回多个值。...子查询的另一个特点是可以独立于外部查询运行,并且将无错误地运行,并且可能返回一组行或空行集。 子查询的另一种形式是相关子查询。但是相关的子查询不能独立于外部的Transact SQL语句运行。...返回多个值的子查询的示例 我迄今为止的所有示例都包含仅在单个列中返回单个值的子查询。 并不是所有的子查询都有这个要求。 接下来的几个例子将使用返回多个值和/或多个列的子查询。...使用具有IN关键字的子查询的示例 您可以编写一个返回列的多个值的子查询的地方是当您的子查询生成与IN关键字一起使用的记录集时。 清单9中的代码演示了如何使用子查询将值传递给IN关键字。...当用作表达式或在比较操作中时,子查询需要返回一个列值。当子查询与IN关键字一起使用时,它可以返回列的单个或多个值。如果在FROM子句中使用子查询,它只能返回一列和一个值,但也可以返回多个列和值。
INSERT INTO SELECT 语法 将一个表中的所有列复制到另一个表中: INSERT INTO table2 SELECT * FROM table1 WHERE condition; 仅将一个表中的某些列复制到另一个表中...CASE 表达式 SQL CASE 表达式遍历条件并在满足第一个条件时返回一个值(类似于 if-then-else 语句)。...因此,一旦条件为真,它将停止阅读并返回结果。如果没有条件为真,它将返回 ELSE 子句中的值。 如果没有 ELSE 部分并且没有条件为真,它将返回 NULL。...1 10248 11 12 2 10248 42 10 3 10248 72 5 4 10249 14 9 5 10249 51 40 SQL CASE 示例 以下 SQL 遍历条件并在满足第一个条件时返回一个值...Server SQL Server 的 ISNULL() 函数允许您在表达式为 NULL 时返回替代值: SELECT ProductName, UnitPrice * (UnitsInStock +
,这时编写SQL时就会出现“卡壳”情况,包括我在内也不例外,日常开发中也会遇到这类情况。...因为有些情况下,一个查询条件会依赖于另一条SQL的执行结果来决定,很多人在这种情况下会直接组合起来一起写,但这会导致编写SQL的复杂度再次提升,因此在这种情况下,可以先用指定值作为条件去查询,例如xx...当使用*时,查询时每条数据会返回所有字段值,然后这些查询出的数据会先被放到结果集中,最终查询完成后会统一返回给客户端,但线上Java程序和MySQL都是分机器部署的,所以返回数据时需要经过网络传输,而由于返回的是所有字段数据...Mediumint通常比int好,因为Mediumint列使用的空间少25%。 ②如果可能的话,声明该列不为空。它可以通过更好地使用索引和消除测试每个值是否为空的开销而使SQL操作更快。...当MySQL从行中检索任何值时,它读取一个包含该行所有列(可能还有其他相邻行)的数据块。保持每一行的大小并只包含最常用的列,使每个数据块可以容纳更多的行。
也可能会使用完全限定的名字来引用列。 WHERE 过滤数据 MySQL中可根据需要使用很多条件操作符和操作符的组合。为了检查某个范围的值,可使用BETWEEN操作符。 注意:是!=还是?!...NULL 与不匹配 在通过过滤选择出不具有特定值的行时,你可能希望返回具有 NULL 值的行。但是,不行。因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们。...因此,在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有 NULL 的行。 计算次序 WHERE 可包含任意数目的 AND 和 OR 操作符。允许两者结合以进行复杂和高级的过滤。...❑ 如果分组列中包含具有 NULL 值的行,则 NULL 将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。...下标从 0 开始,当根据不出现在 SELECT 清单中的列进行排序时,不能采用这项技术 如果想在多个列上进行降序排序,必须对每一列指定 DESC 关键字。
利用mysql explain来对sql语句进行优化,你需要懂这些关键字各表示的含义,这样优化才有的放矢。...ref_or_null:类似于ref,但是当查询语句的连接条件或者查询条件包含的列有NULL值时,MySQL会进行额外查询,经常被用于解析子查询。...range:当查询语句的查询条件为某个范围的记录时,type的取值为range。key列会显示使用的索引,key_len显示使用索引的最长键长值。...(8)key_len:执行查询语句时实际用到的索引按照字节计算的长度值,可以通过此字段计算MySQL实际上使用了复合索引中的多少字段。如果key列值为NULL,则key_len列值也为NULL。...(9)ref:数据表中的哪个列或者哪个常量用来和key列中的索引做比较来检索数据。如果此列的值为func,则说明使用了某些函数的结果数据与key列中的索引做比较来检索数据。
非关系数据库管理系统:没有关系,元组和属性的概念。示例– Mongo Q4。SQL中的表和字段是什么意思? 表是指以行和列的形式组织的数据集合。字段是指表中的列数。...左连接: MySQL中的左连接用于返回左表中的所有行,但仅返回右表中满足连接条件的匹配行。 右连接: MySQL中的右连接用于返回右表中的所有行,但仅返回满足连接条件的左表中的匹配行。...完全联接: 当任何表中都存在匹配项时,完全联接将返回所有记录。因此,它将返回左侧表中的所有行和右侧表中的所有行。 Q16。您所说的非规范化是什么意思?...第一范式(1NF) –行内没有重复的组 第二范式(2NF) –每个非键(支持)列的值都取决于整个主键。 第三范式(3NF) –仅取决于主键,而没有其他非键(支持)列值。 Q23。...插入数据时如何在列中插入NULL值? 可以通过以下方式插入NULL值: 隐式地通过从列列表中省略列。 通过在VALUES子句中指定NULL关键字来显式 Q36。”
在students表中,通过class_id的字段,可以把数据与另一张表关联起来,这种列称为外键。...反过来,如果记录的列存在大量相同的值,例如gender列,大约一半的记录值是M,另一半是F,因此,对该列创建索引就没有意义。 可以对一张表创建多个索引。...如果我们只希望返回某些列的数据,而不是所有列的数据,我们可以用SELECT 列1, 列2, 列3 FROM ...,让结果集仅包含指定列。这种操作称为投影查询。...列1, 列2, 列3则可以仅返回指定列,这种操作称为投影。...步骤: 2、显式游标属性 %FOUND 布尔值属性,当最近一次读记录时成功返回,则返回TURE %NOTFOUND 布尔值属性,与%FOUND相反 %ISOPEN 布尔值属性,当游标已打开时返回TURE
确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。...CHECK - 保证列中的值符合指定的条件。 DEFAULT - 规定没有给列赋值时的默认值。 NOT NULL 约束 强制列不接受 NULL 值。 建表的时候指定 NOT NULL ......SQL CHECK 约束 ALTER TABLE 时的 SQL CHECK 约束 当表已被创建时,如需在 "alexa" 列创建 CHECK 约束,请使用下面的 SQL: MySQL / SQL Server...如需撤销 DEFAULT 约束,请使用下面的 SQL ALTER TABLE 时的 SQL DEFAULT 约束 当表已被创建时,如需在 "City" 列创建 DEFAULT 约束,请使用下面的 SQL...默认地,表的列可以存放 NULL 值。 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。
在SQL中,可使用以下通配符: 通配符 描述 % 替代一个或多个字符 _ 仅代替一个字符 [charlist} 字符列中的任何单一字符 [^charlist]或者[!...SQL INNER JOIN关键字 在表中至少有一个匹配时,INNER JOIN关键字返回行。 SQL LEFT JOIN关键字 LEFT JOIN会从左表那里返回所有行,即使在右表中没有匹配的行。...FOREIGN KEY约束 一个表中的FOREIGN KEY指向另一个表中的PRIMARY KEY CHECK 限制列中的值的范围。...DEFAULT 用于向列中插入默认值,如果没有规定其他的值,就添加默认值。 SQL CREATE INDEX语句 用于在表中创建索引,在不读取整个表的情况下,使用索引可以更快的查找数据。...MAX()和MIN() 返回一列中的最大值和最小值,NULL值不包括在计算中,可以用于文本列,获得按照字母顺序排列的最高或最低值。 SUM()函数 返回数值列的总数。
8.4 EXISTS和IN的使用: 在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接。 在这种情况下,使用EXISTS(或NOT EXISTS)通常将提高查询的效率。...因为空值不存在于索引列中,所以WHERE子句中对索引列进行空值比较将使SQLSERVER停用该索引。...另一方面,在应用程序里,从视图选择数据没有好的理由,相反,绕过视图直接从需要的表里获取数据。原因是许多视图(当然不是全部)返回比SELECT语句所需更多的数据,增加不必要的开销。...既然你仅需要7列,而不是视图返回的10列,更多不必要的数据被返回。浪费SQLServer的资源。...当每次执行SQL时,都会执行解析SQL语句、估算索引的利用率、绑定变量、读数据块等等工作。 * 存储过程执行计划能够重用,驻留在SQLServer内存的缓存里,减少服务器开销。
,并且以索引列、主键值的先后顺序有序二级索引为(age,student_name)联合索引时整体上age有序,当age相等时,student_name有序,当student_name相等时,主键有序当发生多条件查询时...二级索引只存储需要的列和主键,聚簇(主键)索引存储所有数据由于我们使用的索引没有存储查询列表需要的列,于是需要去聚簇(主键)索引中再次查询获取其他列的值在这个过程中主键值可能是乱序的,因此回表查询聚簇索引时...,会出现随机IO(开销大)server层与存储引擎层交互的单位是记录server层优化器根据索引生成执行计划,执行器调用存储引擎层存储引擎层在联合索引中寻找满足 age=18的记录每次找到记录回表查询聚簇索引获取其他列的值然后返回给...,根据索引上现有列判断其他查询条件,不满足则跳过该记录满足则回表查询聚簇索引其他列的值获取需要查询的值后,返回server层进行where过滤2-5步骤为循环执行,直到找到第一条不满足条件的记录测试开启函数创建...,并以索引列、主键进行排序,有多个索引列时,前一个索引列相等时当前索引列才有序;聚簇索引存储整条记录的值,并以主键有序当使用二级索引并且二级索引上的列不满足查询条件时,需要回表查询聚簇索引获取其他列的值
查询 - 基于特定条件检索数据。这是 SQL 的一个重要组成部分。 语句 - 可以持久地影响纲要和数据,也可以控制数据库事务、程序流程、连接、会话或诊断。...内连接 vs 自然连接 内连接提供连接的列,而自然连接自动连接所有同名列。 外连接返回一个表中的所有行,并且仅返回来自次表中满足连接条件的那些行,即两个表中的列是相等的。...确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。...CHECK - 保证列中的值符合指定的条件。 DEFAULT - 规定没有给列赋值时的默认值。...BEGIN 和 END 当触发器的触发条件满足时,将会执行 BEGIN 和 END 之间的触发器执行动作。 ?
2,说明 gender 列里面有大量重复值,phone 列的基数等于总行数,说明 phone 列没有重复值,相当于主键。...当查询结果返回表中 30% 内的数据时,应该走索引(表中数据量小,其实 phone 的等值查询也是);当查询结果返回的是超过表中 30% 数据时,基本会走全表扫描。...在进行 SQL 优化的时候,单独看列的基数是没有任何意义的,基数相对于总行数才有实际意义,正是这个原因,我们才引出选择性这个概念。 请思考,什么样的列必须建立索引?...有人说基数高的列,有人说在 where 条件中的列。这些答案并不完美。基数高究竟多高?没有和总行数对比,始终不知道有多高。比如一个列的基数是几万行,但是总数是十几亿行,那么这个列的基数还高?...当一个列出现在 where 条件中,该列没有创建索引并且选择性大于 20% 时,那么该列必须创建索引,从而提升 SQL 查询性能。当然了,如果表只有几百条数据,那我们就不用创建索引了。
如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复...这也是一条简单而重要的规则,当仅引用索引的第二个列时,优化器使用了全表扫描而忽略了索引 回到顶部 (28) 用UNION-ALL 替换UNION ( 如果有可能的话) 当SQL 语句需要UNION两个查询结果集合时...当比较不同数据类型的数据时, ORACLE自动对列进行简单的类型转换....对应所有行,返回的永远只有一个值,即常量 。所以正常只会用来判断是否有还是没有(比如exists子句)。而select * from ... 是返回所有行的所有列。...select count(*)返回所有满足条件的记录数,此时同select sum(1) 但是sum()可以传任意数字,负数、浮点数都可以,返回的值是传入值n*满足条件记录数m 回到顶部 (36) IS
领取专属 10元无门槛券
手把手带您无忧上云