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

PostgreSQL 基础与实践

--- 在创建表时对字段进行唯一性的约束 CREATE TABLE person ( id INT NOT NULL auto_increment PRIMARY KEY, name VARCHAR...而用户自定义完整性则是根据具体应用场景和涉及到数据来对数据进行一些语义方面的限制,如余额不能为负数等,一般用设定规则、存储过程和触发器等来进行约束和限制。...ON CONFLICT 关键字来处理冲突: --- 当发生冲突时不进行操作 INSERT INTO person ( first_name, last_name, gender...date_of_birth ) VALUES ('Yu', 'ZHANG', 'MALE', DATE '1997-06-06') ON CONFLICT (id) DO NOTHING; --- 当发生冲突时更新指定字段...COALESCE 在查询数据时我们可以使用 COALESCE 填充默认值: --- 使用 COALESCE 填充默认值 SELECT COALESCE(email, 'Email Not Provided

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

    PostgreSQL - 字符串函数汇总

    null和'‘的区别与判断以及COALESCE函数 null是一种类型,''是空字符串,打个比方,''是你参加了考试且得了零分,而null则是你压根就没有参加考试。...如果要在sql中对两者进行判断,是有区别的: 1 2 3 4 5 6 7 8 9 10 11 --null只能和is或is not搭配,不能使用=、!...不过在PostgreSQL 12.6版本COALESCE函数允许参数里只有null,此时返回值是null。...select COALESCE(null,null,'',now()::varchar); //结果会得到'' //可以和其他函数配合来实现一些复杂点的功能:查询学生姓名,如果学生名字为null或'...常用函数汇总 字符串函数和操作符 PostgreSQL 判断字符串包含的几种方法 PostgreSql 聚合函数string_agg与array_agg 警告 本文最后更新于 June 22, 2021

    3.3K21

    【重学MySQL】十三、基本的 select 语句

    使用列的别名可以使结果集更加易于理解,特别是在进行复杂的查询、连接(JOINs)、分组(GROUP BY)和聚合(如SUM、AVG等)操作时。...进行排序 别名在聚合函数中的应用 在使用聚合函数(如SUM、AVG、COUNT等)时,为结果列指定别名尤其有用,因为它可以清晰地表示该列包含的数据类型或含义。...使用DISTINCT可能会影响查询的性能,因为它需要MySQL对结果集进行排序和去重。在大数据集上使用时尤其要注意这一点。...返回第一个非NULL值 总之,当在MySQL中编写查询并处理可能包含NULL值的列时,重要的是要了解NULL在不同运算和函数中的行为,并相应地调整你的查询逻辑。...使用反引号可以确保这些标识符被正确地识别和处理。 为什么使用着重号(反引号)? 避免保留字冲突:如果你的表名或列名与MySQL的保留字相同,使用反引号可以避免语法错误。

    17610

    GPDB-疑难杂症-PlaceHolderVar

    GPDB-疑难杂症-PlaceHolderVar 从GPDB5升级到GPDB6时,遇到以往可以执行的SQL不能执行了。...coalesce函数对NULL进行了处理,表示若为NULL,则使用60替代,可以看到,对left join结果中的NULL做了处理,被强制提升后,逻辑树就不一样了。...4)子查询的目标列不能是聚合函数类型 5)子查询目标列不能含有易失函数 6)子查询存在连接条件 2.3什么时候使用PlaceHolderVar替代 我们看pullup_replace_vars_callback...2.3什么是非严格的函数 参数是NULL,则输出也是NULL则是严格的。在定义函数时可以指定strict。当然若函数是严格的,还需继续判断参数。...为了保证逻辑等价,会使用PlaceHolderVar替代原format函数的表达式节点 2)havingQual条件即having count(t4id2) is not null,t4id2是子查询中的非严格函数

    24630

    PostgreSQL 教程

    PostgreSQL 基础教程 首先,您将学习如何使用基本数据查询技术从单个表中查询数据,包括查询数据、对结果集进行排序和过滤行。然后,您将了解高级查询,例如连接多个表、使用集合操作以及构造子查询。...导入和导出数据 您将学习如何使用COPY命令,以 CSV 文件格式对 PostgreSQL 数据进行导入和导出。 主题 描述 将 CSV 文件导入表中 向您展示如何将 CSV 文件导入表中。...外键 展示如何在创建新表时定义外键约束或为现有表添加外键约束。 检查约束 添加逻辑以基于布尔表达式检查值。 唯一约束 确保一列或一组列中的值在整个表中是唯一的。...非空约束 确保列中的值不是NULL。 第 14 节. 深入了解 PostgreSQL 数据类型 主题 描述 布尔型 使用布尔数据类型存储TRUE和FALSE值。...条件表达式和运算符 主题 描述 CASE 向您展示如何使用CASE表达式构成条件查询。 COALESCE 返回第一个非空参数。您可以使用它将NULL替换为一个默认值。

    59010

    PostgreSQL中NULL的意义

    该值可以通过等值运算符进行测试,当打印空值时,会打印空值。Java中,null区分大小写,必须全小写为“null”。...换句话说,NULL 列没有任何值。它不等于 0、空字符串或空格。NULL 值不能使用任何相等运算符(如“=”“!=”等)进行测试。...在下面的代码片段中,我们将 1 与 1 进行比较,显而易见的结果是“t”(真)。这让我们明白,当两个值匹配时,PostgreSQL 相等运算符给了我们 true。同样,相等运算符适用于文本值。...这证明我们不能使用相等和不等运算符来比较 NULL 和 NULL。 postgres=# SELECT NULL !...那么如何使用NULL呢?PG提供了特殊的语句和函数来对NULL值进行检查和测试。

    2.2K20

    PawSQL周更新 | 新增6个SQL审查重写规则

    但它也失去了优化器带来的进行表连接顺序的优化,需要根据场景谨慎使用。PawSQL对使用STRAIGHT_JOIN的语句进行了风险提示,以提示用户其可能引起的性能问题。...避免使用Natural Join Natural Join是一种特殊的等值连接,它可以和内连接、外连接及全连接配合使用,它会自动搜索两张表中所有相同列名和类型的列,并且以这些列为条件进行等值连接。...避免COUNT DISTINCT多个可空列 当你使用COUNT (DISTINCT) 进行多列的计算时,它的计算结果可能和你预想的不同。...NPE问题重写 SQL的NPE(Null Pointer Exception)问题是指在SQL查询中,当聚合列全为NULL时,SUM、AVG等聚合函数会返回NULL,这可能会导致后续的程序出现空指针异常...Oracle:NVL(); SQL Server和MS Access:ISNULL(); MySQL:IFNULL()或COALESCE(); PostgreSQL/openGauss CASE WHEN

    9310

    SQL中这些与NULL有关的细节,你知道吗?

    1.NULL是一种特殊的值,对某字段使用distinct 关键字时,NULL和一般值一样,都会排重,只保留一个值。 ?...2.不能对NULL值使用比较运算符 直白地讲,不能对null值使用等号(=)或者不等号(!=)进行比较,要使用is null 和 is not null。 ?...4.含NULL值的运算结果都为NULL,如下面图所示(点击查看大图) ? 5.使用sum函数和avg函数时,相应列中包含NULL的,会发生什么? ?...事实上,聚合函数如果以列名为参数,那么在计算之前就会把NULL 排除在外。 6.如果某列含有null,使用group by 进行聚合时,null值会单独保留一行。...小结 对NULL常用的知识点总结如下面的思维导图,欢迎大家补充。(在有些地方看到了在插入和更新数据时NULL的注意事项和索引相关的知识,由于用的比较少,就不放在这里了,可以参考文末链接自行学习) ?

    2.8K10

    MADlib——基于SQL的数据挖掘解决方案(7)——数据转换之其它转换

    逗号分隔的聚合函数列表,可以是PostgreSQL内建的聚合函数或者是用户自定义的聚合函数(UDAs)。有可能为每个列值赋予多个聚合函数。这里只允许使用所谓的“严格转换函数”。...我们将根据piv和piv2两列的值进行行转列,piv有3个不同值,piv2有4个不同值,因此结果中将包含12个由行转成的列,共3行。 (10) 聚合多列。...可以使用通配符‘*’,表示除‘categorical_cols_to_exclude’和‘row_id’参数指定的列以外,其它列都编码。...设置为‘column’时,为每个指示符变量创建一列。PostgreSQL限制一个表中的列数最多为1600。...由于任何单个元组的数组输出都是稀疏的(每个分类列只有一个非零元素),‘svec’输出类型的存储效率最高。如果后续处理需要使用数组,如与其它非分类的特征相关联时,可以使用‘array’输出类型。

    3K20

    PawSQL更新 | 新增7个SQL可维护性安全性规则

    默认预警级别 警告 触发条件 存在别名相同的表引用/子查询 或表的别名和其他表名本身相同 3. 建议使用''代替'!=' 规则描述 '!...NPE重写 规则描述 SQL的NPE(Null Pointer Exception)问题是指在SQL查询中,当聚合列全为NULL时,SUM、AVG等聚合函数会返回NULL,这可能会导致后续的程序出现空指针异常...Oracle:NVL(); SQL Server和MS Access:ISNULL(); MySQL:IFNULL()或COALESCE(); 默认预警级别 警告 触发条件 SUM或AVG聚集函数...聚集函数的参数可能全为NULL, 包括 参数是列,列定义可以为空 参数是表达式,表达式可以为空 列定义不可为空,但是是外连接的内表,结果可能为空 关于PawSQL PawSQL专注数据库性能优化的自动化和智能化...PawSQL Ora2pg/PawsQL Ora2op,Oracle语法的SQL应用转换为PostgreSQL和openGauss语法的工具。

    9710

    PostgreSQL全文检索简介 转

    感谢PostgreSQL中文社区的翻译文档 PostgreSQL的全文检索入门 PG的全文检索操作符是@@,当一个tsvector(文档)和tsquery(条件)匹配时返回true,并且前后顺序无影响...---------- f PostgreSQL 10开始,jsonb也支持全文检索了。 和普通的SQL查询一样,只要在WHERE条件中使用这个符号就代表使用全文检索条件筛选文档了。...所以需要对列进行显式类型转换。 使用了to_tsvector()函数的双参数版本指定了全文检索配置,因此必须使用to_tsvector()相同全文检索配置才能命中索引。...在使用一个单独的列来存储tsvector表示时,有必要创建一个触发器在title或body改变时保证tsvector列为当前值。详见文档。...安装和启用没什么好说的。值得一提的是分词配置参数。 在CREATE EXTENSION之后,必须配置分词参数才能正确进行分词和查找,否则什么都查不到。

    5.4K30

    HAWQ取代传统数仓实践(六)——增加列

    因为客户表和产品表是全量覆盖抽取数据,所以如果源和目标顺序不一样,将产生错误的结果。 3. 修改rds模式中的表结构         HAWQ允许使用ALTER TABLE语句为内部表增加列。...本例只需要对客户维度表和销售订单事实表的部分进行修改,修改后的函数如下。...与“HAWQ实践(四)——定期ETL(Sqoop、HAWQ)”建立的定期装载函数中相同部分比较,会发现在比较客户属性时使用了coalesce函数。        ...在源系统库中,客户地址和送货地址列都是允许为空的,这样的设计是出于灵活性和容错性的考虑。我们以送货地址为例进行讨论。...基于以上分析,这里使用HAWQ的coalesce函数处理NULL值(类似于Oracle的NVL或SQL Server的ISNULL)将NULL值比较转化为标量值比较。

    2.4K80

    SQL系列(一)快速掌握Hive查询的重难点

    select ''=1 -- 返回结果0 ,'age'=1.5 -- 返回结果0 Hive和MySQL在数据类型上有一定差异,因此在进行数值与字符串转换时,存在较大差异,具体如下: -- MySQL...在做日期计算时,建议先将日期转为月初/年初计算(使用trunc函数即可),最后再进行截取操作,因为截取后的日期无法被识别为日期,在后续计算又得concat回来。...当然可以,事实上使用场景最多的就是上面的3和4,即cume累积和total总体。...,coalesce(b,'未知') as b -- 虽然b字段本身没有null值,但为了防止异常数据,也需要进行null替换 ,coalesce(c,'未知') as c --...-- 虽然b字段本身没有null值,但为了防止异常数据,也需要进行null替换 ,coalesce(c,'未知') as c -- 对所有参与强化聚合的维度进行null替换

    3.1K22

    MySQL之数据库基本查询语句

    with rollup; 使用 coalesce 来设置一个可以取代 NUll 的名称 #coalesce 语法:select coalesce(a,b,c); select coalesce(author..._等) #查询姓名中有*的学生信息 select * from Article where type regexp '\\*'; SELECT 使用函数处理数据 concat()函数拼接 #将类型和对应的...qq群连接起来,并按类型排序(a-z) select concat(type,'(',qq_group,')')from Article order by type; 使用列别名 select concat...#COUNT(*)对表中行的数目进行计数, 不管表列中包含的是空值( NULL)还是非空值 #统计类型总数 select count(*) from Article; #COUNT(column)对特定列中具有值的行进行计数...,忽略NULL值 #统计文章数 select count(articles) from Article; #MAX()函数返回某列的最大值 #查询阅读量最多的文章类型 select max(fans)

    4.8K40
    领券