首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL操作之数据查询语言:(DQL)(四-1)(单表操作)

FROM 表名 WHERE 字段名 IS [NOT] NULL 查询grade为空的值 SELECT id,name,grade FROM student WHERE grade IS NULL;...查询grade不为空的值 SELECT id,name,grade FROM student WHERE grade IS NOT NULL; 3.5 带LIKE关键之查询 进行模糊查询 通配符有%和_...; 五、聚合函数 COUNT( ):统计指定列不为NULL的记录行数; SUM( ):计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0 MAX( ):计算指定列的最大值,如果指定列是字符串类型...排序默认是升序(AES) 假如某条记录为NULL,则它会呗排序第一条中(默认NULL为最小值) 使用价格排序(降序) SELECT * FROM product ORDER BY price DESC...FROM 表名 LIMIT [OFFSET,]记录数 OFFSET表示偏移量。 偏移量为0,则从第一条记录开始查询。

20210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    解读年度数据库PostgreSQL:如何处理并发控制(一)

    PostgreSQL使用更简单的方法,即新数据对象被直接插入相关表页中。读取对象时,PostgreSQL根据可见性检查规则,为每个事务选择合适的对象版本作为响应。...PostgreSQL的txid是一个32位无符号整数,取值空间大小约为42亿。在事务启动后执行内置的txid_current()函数,即可获取当前事务的txid,如下所示。...例如对于txid=100的事务,大于100的txid属于“未来”,且对于txid=100的事务而言都是不可见的,小于100的txid属于“过去”,且对该事务可见,如图5.1(1)所示。...注意,txid并非是在BEGIN命令执行时分配的。在PostgreSQL中,当执行BEGIN命令后的第一条命令时,事务管理器才会分配txid,并真正启动其事务。 ?...;           /* 复杂类型的oid或记录ID */ } DatumTupleFields; typedef struct HeapTupleHeaderData {

    98270

    MySQL 八股文中的联合索引最左匹配原则结论正确? 值得去亲手验证一下,纠正全网错误结论

    B+Tree 是一种多叉树,叶子节点才存放数据,非叶子节点只存放索引,而且每个节点里的数据是按主键值(id)顺序存放的,每一层父节点的索引值都会出现在下层子节点的索引值中,因此在叶子节点中,包括了所有的索引值信息...聚簇索引的 B+Tree 如图所示: 假设,执行了 select * from t_product where id = 5 查询语句,该查询语句的条件是找到 id(主键)为 5 的这条记录。...product_no 为 0002 的二级索引记录,然后获取主键值,然后利用主键值在主键索引的 B+Tree 中快速查询到对应的叶子节点,然后获取完整的记录。...如下图: 不过,当查询的数据是能在二级索引的 B+Tree 的叶子节点里查询到,这时就不用再查主键索引查,比如下面这条查询语句: select id from product where product_no...,然后沿着记录所在的链表向后扫描,直到某条记录的 name 前缀不为 ‘j’ 为止。

    16110

    解读年度数据库PostgreSQL:如何处理并发控制(一)

    PostgreSQL使用更简单的方法,即新数据对象被直接插入相关表页中。读取对象时,PostgreSQL根据可见性检查规则,为每个事务选择合适的对象版本作为响应。...PostgreSQL的txid是一个32位无符号整数,取值空间大小约为42亿。在事务启动后执行内置的txid_current()函数,即可获取当前事务的txid,如下所示。...例如对于txid=100的事务,大于100的txid属于“未来”,且对于txid=100的事务而言都是不可见的,小于100的txid属于“过去”,且对该事务可见,如图5.1(1)所示。...注意,txid并非是在BEGIN命令执行时分配的。在PostgreSQL中,当执行BEGIN命令后的第一条命令时,事务管理器才会分配txid,并真正启动其事务。 ?...; /* 复杂类型的oid或记录ID */ } DatumTupleFields; typedef struct HeapTupleHeaderData { union

    83730

    【数据库设计和SQL基础语法】--SQL语言概述--数据类型和约束

    唯一约束允许 NULL 值,即允许在该列中存在多个 NULL 值,但对于非 NULL 值,每个值都必须是唯一的。...(10, 2) ); 在上述示例中,product_id 列被定义为唯一约束,确保每个产品的产品ID是唯一的。...2.6 非空约束 非空约束(NOT NULL Constraint)是一种用于确保列中的数据不为空的约束。在定义表结构时,可以通过应用非空约束来防止在插入或更新记录时将空值(NULL)插入到特定列中。...非空约束对于确保关键字段不缺失是非常有用的,同时也能够简化对数据库中的数据的处理,因为可以信任特定列中的数据不会是空的。...,其中包含了不同类型的列,并应用了各种约束: product_id INT PRIMARY KEY: 定义了一个整数类型的主键列,用于唯一标识每个产品。

    36910

    每天玩转3分钟 MyBatis-Plus - 5. 高级查询(三)(条件构造器)

    26的用户,且只需返回第一条记录 难度系数 ★★ 二、案例讲解 1.1 查询名字为"J"开头并且满足条件:年龄小于20或邮箱不为空 难度系数 ★★★ 考察 and 嵌套 1 /* 2 * 描述:例...1.5 查询名字为"J"开头并且满足条件:年龄小于20或邮箱不为空 3 * SQL语句:SELECT id,name,age,email,manager_id,create_time FROM user...1 /* 2 * 描述:例1.6 查询年龄小于20或邮箱不为空且满足条件:名字为"J"开头 3 * SQL语句:SELECT id,name,age,email,manager_id,create_time...1.4 查询年龄为20、21、25、26的用户,且只需返回第一条记录 难度系数 ★★ 考察 last 和 limit 用法 ?...1 /* 2 * 描述:例1.8 查询年龄为20、21、25、26的用户,且只需返回第一条记录 3 * SQL语句:SELECT id,name,age,email,manager_id,create_time

    71510

    PostgreSQL>窗口函数的用法

    窗口函数还可以实现在子分类排序的情况下取偏移值,这样实现>   获取到排序数据的每一项的偏移值(向下偏移) , lag(val1,val2,val3) 函数实现> SELECT id,type,name...注意:函数lag(val1,val2,val3) 中的三个参数分别为->(输出的上一条记录的字段,偏移值,无偏移值的默认值);以上这里的偏移值为1,偏移字段为id,无偏移默认值为空('')   若获取数据项偏移值...当然,窗口函数还可以实现每个子类排序中的第一项的某个字段的值,可以这样实现:   获取分类子项排序中的第一条记录的某个字段的值, first_value(val1) 实现> SELECT id,type...注意:以上函数取的是排序子类记录中的第一条记录的name字段。   ...额,这里需要说明的是,当取分类在最后一条记录的时候 自然排序下不可以在over() 使用排序字段,不然取得的值为相对于当前记录的值,故这里按价格(price) 升序的时候指定 排序字段 -> range

    1K10

    SQL优化(五) PostgreSQL (递归)CTE 通用表表达式

    前者算出每个区域的总销售量,后者了查出所有销售量占所有地区总销售里10%以上的区域。主语句通过将这个CTEs及订单表关联,算出了顶级区域每件商品的销售量和销售额。...定义下面这样的表,存储每个区域(省、市、区)的id,名字及上级区域的id CREATE TABLE chinamap ( id INTEGER, pid INTEGER, name TEXT...PostgreSQL也延用了RECURSIVE这一关键词。...WITH RECURSIVE 防止死循环 从上一节中可以看到,决定是否继续迭代的working table是否为空,如果它永不为空,则该CTE将陷入无限循环中。...对于本身并不会形成循环引用的数据集,无段作特别处理。而对于本身可能形成循环引用的数据集,则须通过SQL处理。

    2.6K60

    深入理解 PostgreSQL 中的 MVCC(多版本并发控制)机制

    事务ID在数据库中是递增的,并且对于每个事务,它所创建的数据版本都会与其事务ID关联。 b. 版本链(Version Chain) 对于每个数据行,都会存在一个版本链,它链接了不同事务创建的数据版本。...事务ID(Transaction ID) 事务ID是PostgreSQL中用于标识事务的唯一标识符。每个事务在创建时都会被分配一个递增的事务ID。...事务ID在数据库中是全局唯一的,并且会在每个新的事务提交时递增。通过事务ID,PostgreSQL可以跟踪每个事务对数据库的读取和修改操作。 2....以下是它们在PostgreSQL中的具体执行过程: 读操作(SELECT)的执行过程: 获取事务的快照(Snapshot): 在执行SELECT语句的事务开始时,会获取一个快照,用于记录当前数据库状态...写操作(INSERT、UPDATE、DELETE)的执行过程: 开始事务: 写操作的事务开始时,会获取一个唯一的事务ID,并且记录当前数据库状态的快照。

    1.2K10

    005微信小程序云开发API数据库-查询记录-聚合-统计记录数量

    { // 如果查询结果不为空,返回查询结果(必选) return result.data[0] // 仅返回第一条记录(根据实际需求修改) } } catch (e) { // 打印错误信息并抛出异常...) return 'No records found.' } else { // 如果查询结果不为空,返回查询结果(必选) return result[0]...._id // 仅返回第一条记录的 ID(根据实际需求修改) } } catch (e) { // 打印错误信息并抛出异常(必选) console.error(e) throw e....groupBy({ field: 'user_id', as: 'user_total_price' }) // 根据用户ID分组,计算每个用户的总金额 .sum('price', 'quantity...在聚合操作中,我们使用 match() 方法筛选价格大于0的记录,使用 groupBy() 方法根据用户ID进行分组,并使用 sum() 方法对每个分组的总金额进行求和操作。

    26610

    Active Record基础

    对象关系映射: ORM是一种技术手段,把应用中的对象和关系型数据库中的数据表连接起来,使用ORM,应用中对象的属性和对象之间的关系可以通过一种简单额方法从数据库中获取,无需直接编写SQL语句,也不过度依赖特定的数据库种类...Schema约定 外键: 使用 singularized_table_name_id 形式命名,例如 item_id,order_id。...主键: 默认情况下,使用证整数字段id作为表的主键。...Product < ApplicationRecord end 如果应用需要使用其他的命名约定,或者在 Rails 中使用已有的数据库,则可以覆盖默认的命名约定,如修改表名和主键名: class...Product < ApplicationRecord self.table_name = "my_products" self.primary_key = "product_id"

    3.2K20

    PostgreSQL核心揭秘(三)-元组结构

    概述 在PostgreSQL中,堆元组(Heap Tuple)是表中一行数据的内部表示。...每个堆元组都存储在一个页面(通常为8KB)内,并且由三个主要部分组成:HeapTupleHeaderData 结构、空值位图以及用户数据。 详细介绍 1....空值位图(Null Bitmap) 空值位图是一个可选的部分,仅当表中有允许NULL值的列时存在。这个位图用来标记哪些列的值是NULL。每个位对应一个列,如果某一位被设置,则表示相应的列是NULL。...对于固定长度的数据类型(如int4),直接存储在用户数据部分;对于可变长度的数据类型(如text、varchar),则会有一个长度前缀,随后是实际的数据。 元组增、删、改操作介绍 1....总结 在这个过程中,元组的状态变化如下: 插入:新元组的字段由插入事务的 txid 决定。 删除:删除操作更新t_xmax,记录删除事务的txid。

    15810

    PostgreSQL亿级行数据处理

    这篇文章展示了如何使用Timescale的列存储和块跳过索引功能来减小表大小并加快搜索速度。 以下是我们将遵循的方法。首先,我们将数据插入到未压缩表中以获取初始大小和查询速度。...数据导入时间:49分钟12秒 包括索引和数据的总表大小:101 GB 步骤4:运行聚合查询 目标是通过对压缩表和未压缩表运行各种缩放聚合查询来比较查询执行时间,观察压缩表相对于未压缩表的性能。...在 TimescaleDB 中,数据被组织成基于时间的块,每个块代表超表的整体的一个子集。...该查询为客户和产品 ID、数量、总计和状态字段分配随机值,以创建真实的订单记录。...这样可以让 TimescaleDB 为每个块生成必要的元数据。

    12010
    领券