《SQL必知必会》万字浓缩精华 本文是《SQL必知必会》一书的万字精华浓缩,帮助读者快速入门SQL或者MySQL,主要内容包含: 数据库基础知识 库表的相关操作 检索数据的方法等 思维导图 下面的思维导图中记录了这本书的整体目录结构...数据库中的每个列都应该是具有的相同数据类型datatype。数据类型定义了列可以存储哪些数据类型。 行 表中的数据是按照行来进行存储的,所保存的每个记录存储在自己的行内。...如果表中的列可以作为主键,则它必须满足: 任意两行都不具有相同的主键值(主键列不允许NULL值) 每行都必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用(如果某行从表中删除,则它的主键不能赋给以后的行记录...七、创建计算字段 计算字段 存储在数据库表中的字段一般不是应用程序中所需要的格式。我们需要直接从数据库中检索出来进行转换、计算或者格式化过的数据。计算字段并不实际存在于数据库表中。...与其他计算机语言一样,SQL中也提供函数来处理数据。
《SQL必知必会》万字精华 本文是《SQL必知必会》一书的精华总结,帮助读者快速入门SQL或者MySQL,主要内容包含: 数据库基础知识 库表的相关操作 检索数据的方法等 ?...如果表中的列可以作为主键,则它必须满足: 任意两行都不具有相同的主键值(主键列不允许NULL值) 每行都必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用(如果某行从表中删除,则它的主键不能赋给以后的行记录...七、创建计算字段 计算字段 存储在数据库表中的字段一般不是应用程序中所需要的格式。我们需要直接从数据库中检索出来进行转换、计算或者格式化过的数据。计算字段并不实际存在于数据库表中。...与其他计算机语言一样,SQL中也提供函数来处理数据。...,并不能将底层数据库中的第一个账户的数据进行修改,只是单纯地记录操作,记录在内存中完成 第二条语句成功执行之后,和底层数据库文件中的数据完成同步 若第二条数据执行失败,清空所有的历史记录 事务相关术语
] 一、了解SQL 本章中主要是介绍了数据库和SQL相关的基本知识和术语。...行 表中的数据是按照行来进行存储的,所保存的每个记录存储在自己的行内。如果把表想象成一个网格,那么网格中垂直的列则为表列,水平则为表行。 行表示的是一个记录。行有时候也称之为记录。...如果表中的列可以作为主键,则它必须满足: 任意两行都不具有相同的主键值(主键列不允许NULL值) 每行都必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用(如果某行从表中删除,则它的主键不能赋给以后的行记录...七、创建计算字段 计算字段 存储在数据库表中的字段一般不是应用程序中所需要的格式。我们需要直接从数据库中检索出来进行转换、计算或者格式化过的数据。计算字段并不实际存在于数据库表中。...常用函数 与其他计算机语言一样,SQL中也提供函数来处理数据。
数据库表中的分区是分配用于在表中存储特定记录的空间。 5.什么是数据库中的记录? 记录(也称为数据行)是表中相关数据的有序集合。 6.什么是表中的列?...2.不相关:不相关子查询是其中外部查询和内部查询都彼此独立的子查询。 26.局部变量和全局变量有什么区别? 局部变量: 局部变量只能在函数内部使用或存在。这些变量未被任何其他功能使用或引用。...用字段NULL值是没有值的字段。甲NULL值是从零值或包含空格的字段不同。 具有NULL值的字段是在记录创建过程中留为空白的字段。...假定:表1有10条记录,表2 有10条记录。两个表中的最后一条记录是相同的。 如果运行联合查询。...SQL中的一些汇总函数如下 AVG()–此函数返回平均值 COUNT()–此函数返回行数 MAX()–此函数返回最大值 MIN()–此函数返回最小值 ROUND()–此函数将数字字段舍入为指定的小数位数
表是在具有列和行的模型中设计的数据集合。在表中,指定了列数称为字段,但未定义行数称为记录。 什么是数据库? 数据库是有序形式的一组信息,用于访问、存储和检索数据。 DBMS的类型是什么?...Join用于从相关的行和列中检索数据。它在两个或多个表之间工作,并且它从两个表返回至少一个匹配。...Autoincrement是一个关键字,用于在表中插入新记录时生成数字。 SQL中的Constraints(约束)是什么? 它可用于设置表中数据类型的限制。在创建或更新表语句时,可以使用约束。...SQL中有不同类型的键: · SuperKey(超级密钥)——一个或多个密钥的集合被定义为超级密钥,它用于唯一地标识表中的记录。主键,唯一键和备用键是超级键的子集。...SQL中的聚合函数是: · AVG()——返回平均值 · COUNT()——返回行数 · MAX()——返回最大值 · MIN()——返回最小值 · ROUND()——基于十进制规范,此函数对数字字段进行舍入
第一章 了解SQL第二章 MySQL 介绍第三章 使用 MySQL第四章 检索数据第五章 排序检索数据第六章 过滤数据第七章 数据过滤第八章 通配符过滤第九章 正则搜索第十章 创建计算字段第十一章 数据处理函数第十二章...行:表的数据按行存储,每行存放特定的一条记录。 将表想象成网格,水平的一行就是表的行。 行数表示着记录的总数。...嵌套在其他查询中的查询语句。...虽然子查询的嵌套数目没有限制,不过在实际使用时由于性能的限制,不应该嵌套太多的子查询。 相关子查询 涉及外部查询的子查询,利用子查询获得外部表的指定字段。...笛卡尔积 两个没有联结条件的表返回的结果, 检索出的行的数目将是第一个表中的行数乘 以第二个表中的行数。
,将数据源中的一行数据,也就是一条记录,显示为在web页面上输出表格中的一行。...()分页:根据Max()函数的性质,在分页时依赖于数据表的id自增数字段,首先得到排序后的id记录值;然后利用Max()来得到待分页需要的最大记录;最后根据id值得到分页记录信息。...游标总是与一条TSQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。...根据NotIn()和max()函数的分页原理,可以发现这两种分页方案存在致命的不足,就是依赖于数据表里的id自增数字字段,并且这些自增数字必须要具有连续性,如果删除数据表里的一条或多条数据,id数字字段不再连续...同max()结合临时表一样,Row_number()函数在大数据后期分页时显示的效率也并不理想,这两种分页方案更适用于中小型的数据分页,要保证大数据的分页效率,就需要用到新的分页方案,Row_number
表是在具有列和行的模型中设计的数据集合。在表中,指定了列数称为字段,但未定义行数称为记录。 3. 什么是数据库? 数据库是有序形式的一组信息,用于访问、存储和检索数据。 4. DBMS的类型是什么?...DML(数据操作语言) - 用于管理数据。 DQL(数据查询语言) - 所有命令都在SQL中,用于检索DQL中的数据。 TCL(事务控制语言) - 用于管理DML所做的更改。 6....什么是SQL中的Joins(连接)? Join用于从相关的行和列中检索数据。它在两个或多个表之间工作,并且它从两个表返回至少一个匹配。...SQL中有多少Key(键),它们如何工作? SQL中有不同类型的键: SuperKey(超级密钥)——一个或多个密钥的集合被定义为超级密钥,它用于唯一地标识表中的记录。...SQL中的聚合函数是: AVG()——返回平均值 COUNT()——返回行数 MAX()——返回最大值 MIN()——返回最小值 ROUND()——基于十进制规范,此函数对数字字段进行舍入 SUM()—
sql大小写规范 表名、表别名、字段名、字段别名等可以小写 SQL保留字,函数名,绑定变量大写 SELECT name,age FROM student WHERE id="1"; 2 为啥要存储数据...文档数据库 管理文档,一个文档相当于一条记录,MongoDB。 搜索引擎 虽然关系型数据库常常通过索引的方式提高检索效率(不一定),但是对于全文检索却比较低。...NDB存储引擎 用于Mysql Cluster分布式集群环境 Archive存储引擎 压缩机制的特点便于文件的归档,常用来做仓库 8 如何查看一条sql的资源使用情况 prifiling是否开启 mysql...主键可以使是一个字段或者多个字段的组合,一个数据表主键只能有一个 外键约束 外键确保表与表之间引用的完整性。外键可以重复也可以为空。 唯一性约束 字段在表中可以使唯一的。...本身不具有数据。 为什么使用视图 重用SQL语句 使用表的一部分而不是整个表 更改数据格式和表示。
缺点:移植性差 4、存储过程与函数的区别 存储过程 函数 用于在数据库中完成特定的操作或者任务(如插入、删除等) 用于特定的数据(如选择) 程序头部声明用procedure 程序头部声明用...1.建索引 2.减少表之间的关联 3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据 量大的表排在前面 4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据...Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是它的操作对象仍是记录。 Update语句:用于修改已存在表中的记录的内容。...PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 PL/SQL 的。 25、序列的作用 Oracle使用序列来生成唯一编号,用来处理一个表中自增字段。...26、表和视图的关系 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。 表就是关系数据库中实际存储数据用的。
(左闭右开) 排序查询 分组函数 单行处理函数 ifnull group by和having区别 SQL语句执行顺序 查询结果集去重 连接查询 内连接之等值连接 内连接之非等值连接(连接条件中的关系是非等量关系...分组函数 count 计数 sum 求和 avg 平均值 max 最大值 min 最小值 PS:所有的分组函数都是对“某一组”数据进行操作的。...它管理的表具有下列主要特征: 每个InnoDB表在数据库目录中以.frm格式文件表示 InnoDB表空间tablespace被用于存储表的内容 提供一组用来记录事务性活动的日志文件 用commit(提交...MEMORY存储引擎管理的表具有下列特征: 在数据库目录内,每个表均以.frm格式的文件表示。 表数据及索引被存储在内存中。 表级锁机制。 不能包含TEXT或BLOB字段。...因为它们这三个语句都适合数据库表当中的“数据”相关的。事务的存在是为了保证数据的完整性,安全性。 假设所有的业务的都能使用一条DML语句搞定,还需要事务机制吗? 不需要事务。
on 对虚表T1进行ON筛选,只有那些符合的行才会被记录在虚表T2中。...只有符合的记录才会被插入到虚拟表T3中。 5.group by group by 子句将中的唯一的值组合成为一组,得到虚拟表T4。...这段sql的一些说明: 可能有些同学会认为子查询没有必要 直接查询pk记录表就可以,但是并不能拿到预期的结果,因为分组后的每个组结果是不进行排序的,而且max拿到的最高分数肯定是对应的该分组下最高分数,...所以子查询非常有必要,它能够对原始的数据首先进行排序,分数最高的那条就是第一条对应的第一条记录。...子句中对字段进行运算或函数(索引相关) 如where amount / 2 > 100,即使amount字段有索引,也无法使用,改成where amount > 100 * 2就可使用amount列上的索引
这些 DQL 保留字常与其他类型的SQL语句一起使用。 1.2.2、数据操作语言(DML) 其语句包括动词 INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。...行: 表示一个实体,一条记录 列: 字段,数据项。...** SQL语句中有一个语法规则,分组函数不可以直接使用在where字句当中。 count(*)和count(具体的字段的区别) count(*)一定是总记录数,和字段无关。...聚合函数分组会和group by一起联合使用,并且任何一个分组函数都是在group by语句执行结束之后才会执行。当一条sql语句没有group by的话,整张表的数据会自成一组。...需求:求每一个工作岗位的最高薪资 select max(sal),job from emp group by job; 结论:当一条sql语句中有group by的时候,select 后面只允许出现分组函数或者是参加分组的字段
SQL CREATE INDEX 语句 SQL CREATE INDEX 语句用于在表中创建索引。 索引用于比其他方式更快地从数据库中检索数据。用户无法看到索引,它们只是用于加速搜索/查询。...SQL AUTO INCREMENT字段 AUTO INCREMENT 允许在将新记录插入表时自动生成唯一编号。通常,这是我们希望每次插入新记录时自动创建的主键字段。...('Lars', 'Monsen'); 上面的 SQL 语句将在 "Persons" 表中插入一条新记录。...('Lars', 'Monsen'); 上面的 SQL 语句将在 "Persons" 表中插入一条新记录。...要将新记录插入 "Persons" 表中,我们必须使用 nextval 函数,此函数从 seq_person 序列检索下一个值: INSERT INTO Persons (Personid, FirstName
SELECT SELECT 可能是最常用的 SQL 语句,每次使用 SQL 查询数据时,几乎都会用到它。 例如,在下面的代码中,从customers表中查询name字段。...只返回不同的数据,意思就是如果有重复的记录,只会返回重复记录中的一条记录。...,索引用于更快地从数据库中检索数据。...不同之处在于 HAVING 用于聚合函数。 下面的示例将返回每个名称的行数,但仅适用于具有 2 个以上记录的名称。...INNER JOIN INNER JOIN 选择在两个表中具有匹配值的记录。
例如: 表:StudentInformation 字段:Stu ID,Stu名称,Stu标记 Q5。什么是SQL中的连接? JOIN子句用于根据两个或多个表之间的相关列来组合它们。...例如–客户名称与客户帐号和联系信息相关,它们可能在同一表中。各个表之间也可能存在关系(例如,客户到帐户)。 Q18。什么是指数? 索引是一种性能调整方法,它允许从表中更快地检索记录。...索引为每个值创建一个条目,因此检索数据会更快。 19.解释不同类型的索引。 索引分为三种: 唯一索引: 如果列是唯一索引的,则此索引不允许字段具有重复的值。如果定义了主键,则可以自动应用唯一索引。...交叉联接产生两个表的叉积或笛卡尔积,而自然联接基于两个表中具有相同名称和数据类型的所有列。 Q28。什么是SQL中的子查询? 子查询是另一个查询中的查询,其中定义了查询以从数据库中检索数据或信息。...什么是合计和标量函数? 聚合函数用于评估数学计算并返回单个值。这些计算是从表中的列进行的。例如-max(),count()是针对数字计算的。 标量函数根据输入值返回单个值。
每列又称为一个字段,每列的标题称为字段名;每一行包括 若千列信息,一行数据称为一个元组或一条记录,它是有一定意义的信息组合,代表一个实体或联系;一个数据库表由一条或多条记录组成,没有记录的表称为空表。...(2)主键:每个表中通常都有一个主关键字,用于唯一标识一条记录。主键是唯一的,用户可以使用主键来查询数据。 (3)外键:用于关联两个表。...(6)视图:视图看上去同表相似,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存在。视图是由查询数据库表或其他视图产生的,它限制了用户能看 到和修改的数据。...(9)规则:用来限制数据表中字段的有限范围,以确保列中数据完整性的一种方式。...> 注意:所有的数据库名、表名、表字段都是区分大小写的,所以在使用 SQL命令时需要输入正确的名称。 3.3 使用命令查看数据库 在控制台输入 show databases; 4.
SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。...DML(Data Manipulation Language)数据操作语言,用于检索或者修改数据 DDL(Data Definition Language)数据定义语言,用于定义数据的结构, 比如 创建...和表B的record FULL OUTER JOIN 生成表A和表B里的记录全集,包括两边都匹配的记录。...SELECT语句规则: - 你仅能够使用那些能通过表引用而得来的字段; - 如果你有 GROUP BY 语句,你只能够使用 GROUP BY 语句后面的字段或者聚合函数; - 当你的语句中没有...GROUP BY 的时候,可以使用开窗函数代替聚合函数; - 当你的语句中没有 GROUP BY 的时候,你不能同时使用聚合函数和其它函数; - 有一些方法可以将普通函数封装在聚合函数中; 集合运算
数据库基础 数据库 保存有组织的数据的容器,通常是一个文件或者一组文件 表 结构化的文件,用来存储某种特定的数据 列和数据类型 列指的是表中的字段。所有的表都是有一个或者多个列组成的。...表中的每列存储着某种特定的信息。数据库中的每个列对应着相应的字段类型。 行 表中的数据是按照行存储的。垂直为列,水平为行。...行指的是表中的一个记录 主键 表中的每一行都应该有一列或者几列可以唯一标识自己。...主键满足的条件是: 任意两行不具有相同的主键值 每行必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用 创建表 create table products( prod_id char(...vend_id -- 检索不同的字段值 distinct from products; select top 5 prod_name -- 限制最多返回5行数据(SQL server) from
1.4 主键 主键是一列或多列的组合,用于标识表中唯一的一条记录。所以,它天然的一个属性就是不重复性,也不允许为NULL值。...1对1,是指表A和表B通过某字段关联后,表A中的一条记录最多对应表B中的一条记录,表B中的一条记录也最多对应表A中的一条记录。...1对多,是指表A和表B通过某字段关联后,表A中的一条记录可能对应表B中的多条记录,而表B中的一条记录最多对应表A中的一条记录。...多对多,是指表A和表B通过某字段关联后,表A中的一条记录可能对应表B中的多条记录,而表B中的一条记录可能对应表A中的多条记录。 1对1 和 1对多关系,通常使用外键引用对应表的主键就可以表达。...,出现在group by后面的字段或计算公式,必须出现在对应的select的后面,并且除了这些字段或计算公式外,select后面不能有其他字段,只能使用聚合函数。
领取专属 10元无门槛券
手把手带您无忧上云