今天把学习的源文件共享了出来,供大家学习使用 上次想到要学习这个 结合网友也提出意见,做一个,如果有用,请下载或复制代码使用 【问题】我们在工作中有时要在某个文件(工作簿)中查找一些数据,提取出来...想要做好了以后同样的工作就方便了 【想法】 在一个程序主控文件中 设定:数据源文件(要在那里查找的工作簿) 设定:目标文件(要保存起来的那个文件) 输入你要查找的数据:如:含有:杨过,郭靖的数据。...要复制整行出来 主控文件设定如图 数据源文件有两个工作表 查找到"郭靖"的数据保存到目标文件的【射雕英雄传】工作表 查找到"杨过"的数据保存到目标文件的【第一个】工作表 【代码】 Sub...从一个工作簿的某工作表中查找符合条件的数据插入到另一个工作簿的某工作表中() Dim outFile As String, inFile As String Dim outWb As...并转发使更多的人学习到。
触发器是在一个修改了指定表中的数据时执行的存储过程。 通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。...当从一个文本文件装载一个表时,使用LOAD DATA INFILE。...重置拆分,把主码和一些列放到一个表,然后把住码和另外的列放到另一个表, 好处可以将常用的列放在一起,不常用的列放在一起,使得数据行变少,一个数据页可以存放更多的数据,在查询时会减少I/O次数,缺点:管理冗余...根据一列或多列数据把数据行放到两个独立的表中:水平拆分会给应用增加复杂度,它通常在查询时需要多个表名,查询所有数据需要UNION操作,缺点:只要索引关键字不大,则在索引查询时,表中增加了2-3倍的数据量...,而有些数据不常用 需要把数据存放在多个介质上:如账单:最近三个月数据存在一个表中,3个月之前的数据存放在另一个表,成功一年的可以存储在单独的存储介质中。
重命名列,删除一列,或从一个表中添加或删除约束都是不可能的。 3. SQLite joins:用于结合两个或多个数据库中表的记录。...最初的结果表以相同的方式进行计算。一旦主连接计算完成,外连接(OUTER JOIN)将从一个或两个表中任何未连接的行合并进来,外连接的列使用 NULL 值,将它们附加到结果表中。...(1)带有 NULL 值的字段在记录创建的时候可以保留为空。 (2)NULL 值在选择数据时会引起问题,因为当把一个未知的值与另一个值进行比较时,结果总是未知的,且不会包含在最后的结果中。 6....SQLite 别名:暂时把表或列重命名为另一个名字,这被称为别名。 重命名是临时的改变,在数据库中实际的表的名称不会改变。 列别名用来为某个特定的 SQLite 语句重命名表中的列。...唯一索引不允许任何重复的值插入到表中。
左连接 从一个表中选择行,这些行在其他表中可能有也可能没有对应的行。 自连接 通过将表与自身进行比较来将表与其自身连接。 完全外连接 使用完全连接查找一个表中在另一个表中没有匹配行的行。...主题 描述 插入 指导您如何将单行插入表中。 插入多行 向您展示如何在表中插入多行。 更新 更新表中的现有数据。 连接更新 根据另一个表中的值更新表中的值。 删除 删除表中的数据。...连接删除 根据另一个表中的值删除表中的行。 UPSERT 如果新行已存在于表中,则插入或更新数据。 第 10 节....删除表 删除现有表及其所有依赖对象。 截断表 快速有效地删除大表中的所有数据。 临时表 向您展示如何使用临时表。 复制表 向您展示如何将表格复制到新表格。 第 13 节....PostgreSQL 触发器 本节向您介绍 PostgreSQL 触发器概念,并展示如何在 PostgreSQL 中管理触发器。
其他SQL语句操作 下面的SQL命令执行更复杂的SQL语句操作: CREATE TRIGGER: 在定义触发器的表中,无论是在定义触发器还是在提取触发器时,都不会创建SQL语句。...但是,如果触发器对另一个表执行DML操作,那么定义触发器将在被触发器代码修改过的表中创建一个SQL语句。 Location指定在其中定义触发器的表。...Catalog Details选项卡:选择一个表并显示其Catalog详细信息。 此选项卡提供了一个表的SQL语句按钮,用于显示与该表关联的SQL语句。...例如,如果向表中添加一列,则可能需要找出该表的所有SQL插入的位置,以便可以更新这些命令以包括此新列。...一个SQL命令可能会产生多个SQL语句。 例如,如果一个查询引用一个视图,SQL Statements将显示两个语句文本,一个列在视图名称下,另一个列在基础表名称下。
触发器(Triggers)的使用 MySQL的触发器(Triggers)是一种特殊类型的存储过程,它会在数据表上的特定操作(插入、更新或删除)发生时自动执行。...测试触发器 要测试触发器是否按预期工作,可以向关联的数据表中插入、更新或删除数据,并观察触发器的执行效果。...视图本身不存储数据,它只是保存了一条用于生成结果集的SELECT语句。当查询视图时,MySQL会执行该SELECT语句并返回结果集。视图可以帮助我们简化复杂的查询操作、隐藏部分数据、实现数据抽象等。...name, email FROM users; 在这个示例中,我们创建了一个名为UserNamesAndEmails的视图,它包含了users表中的name和email列。...一致性(Consistency):事务必须使数据库从一个一致性状态变换到另一个一致性状态。 隔离性(Isolation):事务的执行不被其他事务干扰。
列(column) - 表中的一个字段。所有表都是由一个或多个列组成的。 行(row) - 表中的一个记录。 主键(primary key) - 一列(或一组列),其值能够唯一标识表中每一行。...DISTINCT 用于返回唯一不同的值。它作用于所有列,也就是说所有列的值都相同才算相同。 LIMIT 限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。...外连接返回一个表中的所有行,并且仅返回来自次表中满足连接条件的那些行,即两个表中的列是相等的。外连接分为左外连接、右外连接、全外连接(Mysql 不支持)。 左外连接就是保留左表没有关联的行。...,并生成一个结果集,其中包含来自 UNION 中参与查询的提取行。...确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
MySQL5 中添加了存储过程的支持。 大多数SQL语句都是针对一个或多个表的单条语句。并非所有的操作都怎么简单。...MySQL5添加了对游标的支持 只能用于存储过程 由前几章可知,mysql检索操作返回一组称为结果集的行。...DECLARE命名游标,并定义相应的SELECT语句。根据需要选择带有WHERE和其他子句。...需要知道以下几点: 1 在INSERT触发器代码内,可引用一个名为NEW的虚拟表,访问被插入的行 2 在BEFORE INSERT触发器中,NEW中的值也可以被更新(允许更改插入的值) 3 对于AUTO_INCREMENT...列,NEW在INSERT执行之前包含0,在INSERT执行之后包含新的自动生成值 提示:通常BEFORE用于数据验证和净化(目的是保证插入表中的数据确实是需要的数据)。
以这个场景为例:你把数据插入一个临时表中,如果另一个值存在,需要它显示某个值。 也许你从 Customer 表中提取记录,想把订单金额超过 100000 美元的客户标记为“Preferred”。...不要查询两次(double-dip) 这是我看到好多人犯的另一个错误:写入存储过程,从一个有数亿行的表中提取数据。 开发人员想提取住在加利福尼亚州,年收入高于 4 万美元的客户信息。...触发器的问题:无论你希望触发器执行什么,都会在与原始操作同一个的事务中执行。 如果你写一个触发器,以便更新 Orders 表中的行时将数据插入到另一个表中,会同时锁定这两个表,直到触发器执行完毕。...如果你需要在更新后将数据插入到另一个表中,要将更新和插入放入到存储过程中,并在单独的事务中执行。 如果你需要回滚,就很容易回滚,不必同时锁定这两个表。...几年前我做过一项基准测试,我将一堆数据插入到一个带聚类 GUID 的表中,将同样的数据插入到另一个带 IDENTITY 列的表中。
模式定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。数据库和表都有模式。 列(column):表中的一个字段。所有表都是由一个或多个列组成的。...增删改查 插入数据 要点 INSERT INTO 语句用于向表中插入新记录。...外连接返回一个表中的所有行,并且仅返回来自次表中满足连接条件的那些行,即两个表中的列是相等的。外连接分为左外连接、右外连接、全外连接(Mysql 不支持)。 左外连接就是保留左表没有关联的行。...,并生成一个结果集,其中包含来自 UNION 中参与查询的提取行。...确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
在用 UNION 组合查询时,只能使用一条ORDER BY 子句,它必须出现在最后一条SELECT语句之后 SELECT INTO 语句 我们可以复制所有的列插入到新表中: SELECT * INTO...,然后把数据插入到一个已存在的表中。...我们可以从一个表中复制所有的列插入到另一个已存在的表中: INSERT INTO table2 SELECT * FROM table1; 或者我们可以只复制希望的列插入到另一个已存在的表中: INSERT...确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。...KEY 约束 一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。
列(column) - 表中的一个字段。所有表都是由一个或多个列组成的。 行(row) - 表中的一个记录。 主键(primary key) - 一列(或一组列),其值能够唯一标识表中每一行。...DISTINCT 用于返回唯一不同的值。它作用于所有列,也就是说所有列的值都相同才算相同。 LIMIT 限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。...内连接 vs 自然连接 内连接提供连接的列,而自然连接自动连接所有同名列。 外连接返回一个表中的所有行,并且仅返回来自次表中满足连接条件的那些行,即两个表中的列是相等的。...,并生成一个结果集,其中包含来自 UNION 中参与查询的提取行。...确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
触发器是在一个修改了指定表中的数据时执行的存储过程。 通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。...当从一个文本文件装载一个表时,使用LOAD DATA INFILE。...ENUM定义通常很难阅读,通过输出信息,可以将表中的部分字段修改为效率更高的字段。 拆分 重置拆分 把主码和一些列放到一个表,然后把住码和另外的列放到另一个表。...好处 可以将常用的列放在一起,不常用的列放在一起,使得数据行变少,一个数据页可以存放更多的数据,在查询时会减少I/O次数,缺点:管理冗余,查询所有数据需要用join操作 水平拆分 根据一列或多列数据把数据行放到两个独立的表中...需要把数据存放在多个介质上:如账单:最近三个月数据存在一个表中,3个月之前的数据存放在另一个表,成功一年的可以存储在单独的存储介质中。
from sampdb; 8、往数据表中插入数据 普通插入一条数据:insert into student values('Kyle','M',NULL); 一次插入多条数据:insert into...16、从其他表中创建新表 1、create table tablename like othertable; 将另一个表的数据复制到新表中。...你可以为单个数据列编制索引,也可以为多个数据列构造复合索引。 索引可以只包含独-无二的值,也可以包含重复的值。 你可以为同一个数据表创建多个索引并分别利用它们来优化基于不同数据列的查询。...比如说,你可以像下面这样交换两个数据表的名字: RENAME TABLE t1 TO tmp, t2 TO t1, tmp TO t2; 如果在重新命名个数据表时在它的名字前面加上了数据库名前级,就可以把它从一个数据库移动到另一个数据库...这被称为级联删除(cascaded delete), 因为删除操作的效果就像瀑布(cascade)那样从一一个数据表“流淌”到另外-一个数据表。级联更新也是可能的。
TRUNCATE 用于快速删除表中的所有数据,而不考虑任何条件。它删除表中的所有行,并释放存储空间,但不删除表本身。...外键(Foreign Key)是数据库表中的一列或多列,其值必须与另一个表中的主键或唯一键的值相匹配。外键用于建立表与表之间的关联关系,从而实现数据的完整性和一致性。...如果事务在执行过程中发生错误,会被回滚(Rollback)到事务开始之前的状态,保持数据库的一致性。 2、一致性(Consistency)事务在执行前后,数据库从一个一致的状态转移到另一个一致的状态。...通常,游标在存储过程、触发器或批处理中使用,它允许程序逐个地访问查询结果,并对每一行执行相应的操作。基本上,游标的使用流程如下:1、声明游标在数据库中声明一个游标,并定义该游标与哪个查询结果集关联。...由于不记录删除的行,TRUNCATE 不能用于带有触发器或需要记录删除日志的表。
劣势(千羽在面试时也被问到了) 1) 实际上索引也是一张表,该表中保存了主键与索引字段,并指向实体类的记录,所以索引列也是要占用空间的。...在原B+Tree的基础上,增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能。 MySQL中的 B+Tree 索引结构示意图: ?...2.4 索引分类 1) 单值索引 :即一个索引只包含单个列,一个表可以有多个单列索引 2) 唯一索引 :索引列的值必须唯一,但允许有空值 3) 复合索引 :即一个索引包含多个列 2.5 索引语法 索引在创建表的时候...对查询频次较高,且数据量比较大的表建立索引。 索引字段的选择,最佳候选列应当从where子句的条件中提取,如果where子句中的组合比较多,那么应当挑选最常用、过滤效果最好的列的组合。...触发器 5.1 介绍 触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。
❑ 用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期之差,检查日期有效性)的日期和时间函数。...SQL Aggregate 聚集函数 对某些行运行的函数,计算并返回一个值。...SQL 视图(Views) 视图是可视化的表。在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。 视图包含行和列,就像一个真实的表。...视图中的字段就是来自一个或多个数据库中的真实的表中的字段。 您可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。...SQL 游标 有时,需要在检索出来的行中前进或后退一行或多行,这就是游标的用途所在。
),其值能够唯一区分表中每个行; 外键(foreign key) 表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。...如果你用的是 navicate,在上一章创建到 localhost-mysql 的连接后,运行一下即可: 同理运行另一个文件 populate.sql,填充每个表中的数据。...比如你想将另一个表中查询的数据插入到这个表中: # 从别的表中找出数据,并插入 customers 表中 insert into customers(cust_id, cust_name, cust_address...游标主要用于交互式应用,其中用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改。 MySQL 中的游标只能用于存储过程或函数。...drop trigger if exists deletecustomer; # 创建触发器,当从顾客表中删除时将删除的数据插入到另一个存档表中 create trigger deletecustomer
领取专属 10元无门槛券
手把手带您无忧上云