列是表中的某个字段。所有的表都是由一个或者多个列组成的。 数据库中的每个列都应该是具有的相同数据类型datatype。数据类型定义了列可以存储哪些数据类型。...如果表中的列可以作为主键,则它必须满足: 任意两行都不具有相同的主键值(主键列不允许NULL值) 每行都必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用(如果某行从表中删除,则它的主键不能赋给以后的行记录...FROM Products LIMIT 5,4 -- 效果同上 第一个数字表示显示多少行数据 第二个数字表示从哪里开始显示 SQL注释问题 SQL中的注释分为两种:单行注释和多行注释 单行注释使用—符号...如果将值和字符串类型的比较,需要使用限定符号 3、用来与数值列进行比较的值,则不用括号。...计算字段是运行时在select语句内创建的。 拼接字段 将多个字段联结在一起构成单个字段。根据不同的DBMS,使用+或者||来进行联结。但是在MySQL中必须使用特殊的函数来进行操作。
列(column) 表中的一个字段,所有表都是有一个和 多个列组成 行(row) 表中的一个记录(record) 主键(primary key) 一列(或一组列),其值能够唯一标识表中每一行 关键字(...一般认为写成多行更容易维护。 选择多个列时,一定要在列名之间加上逗号,但最后一个列名不加。如果在最后一个列名加了逗号,会出现错误。 SQL 一般返回原始的、无格式的数据。...选择单个列 SELECT prod_name FROM Products; 处理 SQL 语句时,所有空格都会被忽略。下面三个例子可以实现同样的效果,一般认为写成多行更容易维护。...FROM Products; 检索多个列 SELECT prod_id, prod_name, prod_price FROM Products; 检索所有列 SELECT * FROM Products...NULL 表示空值,确定是否空值,不能简单的 = NULL,SELECT 语句有一个特殊的 WHERE 子句 IS NULL ,可用来检查具有 NULL 值的列。
任何列作为主键的条件: 任意两行都不具有相同的主键值; 每一行都必须具有一个主键值(主键列不允许NULL值); 主键列中的值不允许修改或更新; 主键值不能重用(某行从表中删除,它的主键不能赋给以后的新行...关键字(keyword) 作为SQL组成部分的保留字,关键字不能用作表或列的名字。 2.2 检索单个列 用SELECT语句从Products表中检索名为prod_name的列。...以上SELECT语句将返回表中所有行,数据没有过滤。 多条SQL语句必须以分号(;)分隔。 SQL关键字应大写,列名和表名应小写。...例子: SELECT prod_name FROM Products ORDER BY prod_name; 3.2 按多个列排序 要按多个列排序,简单指定列名,列名之间用逗号分开即可。...屏幕快照 2018-05-25 06.04.04.png 对于上述例子中的输出,仅在多个行具有相同的 prod_price 值时才对产品按prod_name 进行排序。
所有的表都是由一个或者多个列组成的。 数据库中的每个列都应该是具有的相同数据类型datatype。数据类型定义了列可以存储哪些数据类型。...如果表中的列可以作为主键,则它必须满足: 任意两行都不具有相同的主键值(主键列不允许NULL值) 每行都必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用(如果某行从表中删除,则它的主键不能赋给以后的行记录...FROM Products LIMIT 5,4 -- 效果同上 第一个数字表示显示多少行数据 第二个数字表示从哪里开始显示 SQL注释问题 SQL中的注释分为两种:单行注释和多行注释 单行注释使用...计算字段是运行时在select语句内创建的。 拼接字段 将多个字段联结在一起构成单个字段。根据不同的DBMS,使用+或者||来进行联结。但是在MySQL中必须使用特殊的函数来进行操作。...,SELECT语句中的每列都必须在GROUP BY子句中列出 如果分组中包含具有NULL的行,则NULL将作为一个分组返回;如果列中出现多个NULL,它们将分成一个组 GROUP BY子句必须在WHERE
②获得表中行组的和 ③找出表列(或所有行或某些特定的行)的最大值、最小值和平均值 聚集函数(aggregate function):运行在行组上,计算和返回单个值的函数(MySQL还支持一些列的标准偏差聚集函数...vend_id为1003的产品,avg_price中返回该供应商的产品的平均值; PS:avg()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出,为了获得多个列的平均值,必须使用多个avg...①使用count(*)对表中行的数目进行计数,不管表列中包含的是空值(null)还是非空值; ②使用count(column)对特定列中具有值的行进行计数,忽略null值; select count(...,where子句保证只统计某个指定列的数值; PS:利用标准的算数操作符,所有聚集函数都可用来执行多个列上的计算(sum()函数忽略列值为null的行) 6、distinct与聚集函数 MySQL5.0.3...如果分组列中具有null值,则null将作为一个分组返回(如果列中有多行null值,他们将分为一组); ⑥group by子句必须出现在where子句之后,order by子句之前; PS:使用with
❑ 如果分组列中包含具有 NULL 值的行,则 NULL 将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。...这些问题不是理论问题,其答案取决于数据库的设置方式。 limit 关键字 行0 检索出来的第一行为行 0 而不是行 1。因此,LIMIT 1, 1 将检索出第二行而不是第一行。...通常,子查询将返回单个列并且与单个列匹配,但如果需要也可以使用多个列。 虽然子查询一般与IN操作符结合使用,但也可以用于测试等于(=)、不等于()等。...企图检索多个列将返回错误。 tip: 逐渐增加子查询来建立查询 用子查询测试和调试查询很有技巧性,特别是在这些语句的复杂性不断增加的情况下更是如此。...例如,一个特殊词的搜索将会返回包含该词的所有行,而不区分包含单个匹配的行和包含多个匹配的行(按照可能是更好的匹配来排列它们)。类似,一个特殊词的搜索将不会找出不包含该词但包含其他相关词的行。
from products order by prod_name; 按多个列排序:select prod_id,prod_price,prod_name from products order...by prod_name,prod_price; 仅在多个行具有相同的prod_price 值时才对产品按prod_name进行排序。...is null子句用来检查具有NULL值的列。...%告诉MySQL接受jet之后的任意字符,不 管它有多少字符。 下划线(_)通配符 下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符。...除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子 句中给出。 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。
) 表中的一个记录 主键(primary key),一列(或一组列),其值能够唯一区分表中每个行,用来表示一个特定的行 任意两行都不具有相同的主键值 每个行都必须具有一个主键值(主键列不允许NULL值)...by and having,分组允许把数据分为多个逻辑组,以便能够对每个组进行聚集计算。...19 插入数据 插入完整的行;插入行的一部分;插入多行;插入某些查询的结果。...= 'elemer@fudd.com' where cust_id = 10005; # 在更新多个列时,只需要使用单个SET命令,每个“列=值”对之间用逗号分隔 update customers...主键值必须唯一,表中的每个行必须具有唯一的主键值。如果主键使用单个列,则它的值必须唯一。如果使用多个列,则这些列的组合值必须唯一。
2.2 主键 主键的概念十分重要,它唯一标识表中每行的单个或者多个列称为主键。主键用来表示一个特定的行。 虽然并不总是都需要主键,但应尽量保证每个表都定义有主键,以便于以后的数据操纵和管理。...表中的任何列都可以作为主键,只要它满足以下条件: 任意两行都不具有相同的主键值; 每个行都必须具有一个主键值(主键列不允许 NULL 值)。...这该用到分组了,分组允许把数据分为多个逻辑组,以便能对每个组进行聚集计算。...如果分组列中具有 null 值,则 null 将作为一个分组返回。如果列中有多行 null 值,它们将分为一组。 group by 子句必须出现在 where 子句之后,order by 子句之前。...有两种情况需要使用组合查询: 在单个查询中从不同的表返回类似结构的数据; 对单个表执行多个查询,按单个查询返回数据。 多数情况下,组合查询可以使用具有多个 where 子句条件的单条查询代替。
列压缩单元 (CU) 列压缩单元(CU)是IMCU中的单个列的连续存储。 每个IMCU具有一个或多个CU。...列始终占据相同的位置,因此Oracle数据库可以通过读取段的IMCU重建行。 列压缩单元 (CU) 列压缩单元(CU)是IMCU中的单个列的连续存储。 每个IMCU具有一个或多个CU。...此部分包含以下主题: CU的结构 CU被划分为主体和头部。 本地词典(Local Dictionary) 在CU中,本地字典具有不同值的列表及其对应的字典代码。 CU的结构 CU被划分为主体和头部。...数据库将物化表达式视为IMCU中的其他列。 从概念上讲,IMEU是其父IMCU的逻辑扩展。 正如IMCU可以包含多个列,IMEU可以包含多个虚拟列。...典型的IM表达式涉及一个或多个列,可能具有常量,并且与表中的行具有一对一映射。 例如,employees 表的IMCU包含列为 weekly_salary 的行1-1000。
所有的表都是由一个或者多个列组成的。 数据库中的每个列都应该是具有的相同数据类型datatype。数据类型定义了列可以存储哪些数据类型。...FROM Products LIMIT 5,4 -- 效果同上 第一个数字表示显示多少行数据 第二个数字表示从哪里开始显示 SQL注释问题 SQL中的注释分为两种:单行注释和多行注释 单行注释使用—符号...计算字段是运行时在select语句内创建的。 拼接字段 将多个字段联结在一起构成单个字段。根据不同的DBMS,使用+或者||来进行联结。但是在MySQL中必须使用特殊的函数来进行操作。...,SELECT语句中的每列都必须在GROUP BY子句中列出 如果分组中包含具有NULL的行,则NULL将作为一个分组返回;如果列中出现多个NULL,它们将分成一个组 GROUP BY子句必须在WHERE...,标志事务开始 结束的标志分为两种:成功结束的标识和失败结束的标识 1、成功结束的标志 commit:提交 将所有的DML语句的操作历史记录和底层硬盘中的数据进行了同步。
数据库中的每个列都应该是具有的相同数据类型datatype。数据类型定义了列可以存储哪些数据类型。 行 表中的数据是按照行来进行存储的,所保存的每个记录存储在自己的行内。...FROM Products LIMIT 5,4 -- 效果同上 第一个数字表示显示多少行数据 第二个数字表示从哪里开始显示 SQL注释问题 SQL中的注释分为两种:单行注释和多行注释 单行注释使用...计算字段是运行时在select语句内创建的。 拼接字段 将多个字段联结在一起构成单个字段。根据不同的DBMS,使用+或者||来进行联结。但是在MySQL中必须使用特殊的函数来进行操作。...除了聚集函数外,SELECT语句中的每列都必须在GROUP BY子句中列出 如果分组中包含具有NULL的行,则NULL将作为一个分组返回;如果列中出现多个NULL,它们将分成一个组 GROUP BY子句必须在...,标志事务开始 结束的标志分为两种:成功结束的标识和失败结束的标识 1、成功结束的标志 commit:提交 将所有的DML语句的操作历史记录和底层硬盘中的数据进行了同步。
如上所示把子查询分解为多行并且适当地进行缩进,能极大地简化子查询的使用。 对于能嵌套的子查询的数目没有限制,不过在实际使用时由于性能的限制,不能嵌套太多的子查询。...注: 列必须匹配 在WHERE子句中使用子查询(如这里所示),应 该保证SELECT语句具有与WHERE子句中相同数目的列。通常, 子查询将返回单个列并且与单个列匹配,但如果需要也可以使用多个列。...如果引用一个 没有用表名限制的具有二义性的列名,MySQL将返回错误。 这里使用where 语句进行联接的作用: 利用WHERE子句建立联结关系似乎有点奇怪,但实际上,有一个很充 分的理由。...在联结两个表时,你实际上做 的是将第一个表中的每一行与第二个表中的每一行配对。WHERE子句作为 过滤条件,它只包含那些匹配给定条件(这里是联结条件)的行。...外部联结: 许多联结将一个表中的行与另一个表中的行相关联。但有时候会需 要包含没有关联行的那些行。
在优化磁盘使用方面有重要作用; 行: 表中的一个记录; 别称记录,从技术上讲:行才是正确的术语; 主键: 一列或一组列,其值能够唯一区分表中的每一行; 唯一标识表中每行的这个列(或这组列...order by prod_price,prod_name; 首先按照价格排序,然后按照名字排序; 仅在多个行具有相同的prod_price值时才对产品按照prod_name进行排序,如果prod_price...= > 大于 < 小于 >= 大于等于 <= 小于等于 BETWEEN 在某个范围内 LIKE 搜索某种模式 IN 指定针对某个列的多个可能值 检查单个值: demo: select prod_name...where cust_email is null; NULL与不匹配: 在通过过滤选择出不具有特定值的行时,你可能希望返回具有NULL值的行。...因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们; 因此,再过滤数据时,一定要验证返回数据中确实给出了被过滤列具有的NULL的行。
还有点要注意,刚才说的标点符号要是英文的标点符号,如果使用中文的标点符号会报错。还有就是,在处理 SQL 语句时,所有的空格都会被忽略,我们可以把一条 SQL 语句写在一行上,也可以分开写在多行上。...但是比较好的习惯是,将 SQL 语句写在多行上,这样使得代码更容易阅读和调试。 刚才我们从数据库表中查询的是单个列,我们还可以从数据库表中查询多个列。...例如,我们从数据库表 products 中查询 prod_id 和 prod_name,各个列之间以逗号分隔,最后一列的后面不加逗号。...SELECT prod_name FROM products LIMIT 1 OFFSET 0; 运行结果如下: 可以看到结果返回的是第 0 行而不是第 1 行。 2....prod_name FROM products; 运行结果如下: 2.3 注释分布在多行 /* 这是一条注释 这是一条注释 这是一条注释 */ SELECT prod_name FROM products
数据库基础 数据库 保存有组织的数据的容器,通常是一个文件或者一组文件 表 结构化的文件,用来存储某种特定的数据 列和数据类型 列指的是表中的字段。所有的表都是有一个或者多个列组成的。...表中的每列存储着某种特定的信息。数据库中的每个列对应着相应的字段类型。 行 表中的数据是按照行存储的。垂直为列,水平为行。...行指的是表中的一个记录 主键 表中的每一行都应该有一列或者几列可以唯一标识自己。...主键满足的条件是: 任意两行不具有相同的主键值 每行必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用 创建表 create table products( prod_id char(...(column):特定的列进行统计,忽略NULL值 max() 最大值忽略列值为NULL的行 min() 最小值忽略列值为NULL的行 sum() 某列值之和忽略列值为NULL的行 select avg
SELECT prod_name, prod_price FROM Products WHERE prod_price = 3.49; 分析 这条语句从 products 表中检索两个列,但不返回所有行...将值与字符串类型的列进行比较,就要限定引号。 将值与数值列进行比较,不用引号。 范围值检索 要检查某个范围的值,使用 BETWEEN 操作符。...但是,Customers 表包含具有 NULL 值的列:如果没有电子邮件地址,则 cust_email 列将包含 NULL 值: SELECT cust_name FROM Customers WHERE...屏幕快照 2018-05-27 11.17.33.png 将前两个条件用圆括号括起来,因为圆括号具有比 AND 或 OR 操作符更高的求值顺序,所以 DBMS 首先过滤圆括号内的 OR 条件。...下划线(_)通配符 下划线的用途与%一样,但只匹配单个字符,而不是多个字符。
SQL 目录 检索 过滤检索结果 数据汇总处理 分组 给检索结果排序 表操作 插入数据 更新删除数据 子查询-迭代查询 联结-关联多个表 组合查询 视图 其它 检索 检索某表中单个列: SELECT 列名...*可以换成指定列如:cust_email。计算所得行数不包括该列值为null的行。 DISTINCT 列名,求不重复的列。...注意:多行NULL会分为一组,GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。 可以对一个以上的列进行 GROUP BY 过滤分组: HAVING:类似于WHERE。...一次插入多行的方式。...,要更新的列,要更新的行。
列(column) - 表中的一个字段。所有表都是由一个或多个列组成的。 行(row) - 表中的一个记录。 主键(primary key) - 一列(或一组列),其值能够唯一标识表中每一行。...SQL 语句可以写成一行,也可以分写为多行。...外连接分为左外连接、右外连接、全外连接(Mysql 不支持)。 左外连接就是保留左表没有关联的行。 右外连接就是保留右表没有关联的行。...UNION 将查询之后的行放在一起(垂直放置),但 JOIN 将查询之后的列放在一起(水平放置),即它构成一个笛卡尔积。 五、函数 ? 注意:不同数据库的函数往往各不相同,因此不可移植。...ASC :升序(默认) DESC :降序 可以按多个列进行排序,并且为每个列指定不同的排序方式 指定多个列的排序方向 SELECT * FROM products ORDER BY prod_price
目录 检索 过滤检索结果 数据汇总处理 分组 给检索结果排序 表操作 插入数据 更新删除数据 子查询-迭代查询 联结-关联多个表 组合查询 视图 其它 检索 检索某表中单个列: SELECT 列名...*可以换成指定列如:cust_email。计算所得行数不包括该列值为null的行。 DISTINCT 列名,求不重复的列。...注意:多行NULL会分为一组,GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。 可以对一个以上的列进行 GROUP BY 过滤分组: HAVING:类似于WHERE。...一次插入多行的方式。...,要更新的列,要更新的行。
领取专属 10元无门槛券
手把手带您无忧上云