pgsql比较操作

本文详细介绍了 PostgreSQL 8.1 版本中可用的比较操作符及其用法,包括基本的比较操作如小于、大于等,并解释了 BETWEEN 和 IS NULL 构造的使用方法。

9.2. 比较操作符

可用的比较操作符在 Table 9-1 显示。

Table 9-1. 比较操作符

操作符描述
<小于
>大于
<=小于或等于
>=大于或等于
=等于
<> 或 !=不等于

注意: != 操作符在分析器阶段被转换成 <>。把 != 和 <> 操作符实现为做不同的事是不可能的。

比较操作符可以用于所有可以比较的数据类型。 所有比较操作符都是双目操作符,返回 boolean 类型数值; 象1 < 2 < 3 这样的表达式是非法的 (因为没有什么 < 操作符用于 在布尔值和3之间做比较)。

除了比较操作符以外,我们还可以使用 BETWEEN 构造。

a BETWEEN x AND y

等效于

a >= x AND a <= y

类似的还有

a NOT BETWEEN x AND y

等效于

a < x OR a > y

这两种形式之间没有甚么区别,只不过第一种形式需要一些 CPU 周期在内部将它改写成第二种形式。 BETWEEN SYMMETRIC 和 BETWEEN 一样,只是没有要求 AND 左边的参数小于或等于右边的参数; 合适的范围是自动计算出来的。

要检查一个值是否为 NULL,使用下面构造

expression IS NULL
expression IS NOT NULL

或者等效,但并不标准的构造

expression ISNULL
expression NOTNULL

不要 写 expression = NULL 因为 NULL 是不"等于" NULL 的。(NULL 代表一个未知的数值,因此我们无法知道两个未知的数值是否相等。) 这个行为遵循 SQL 标准。

提示: 有些应用可能要求表达式 expression = NULL 在 expression 得出 NULL 值地时候返回真。 我们强烈建议这样的应用修改成遵循 SQL 标准。但是,如果这样修改是不可能的,那么我们可以使用配置变量 transform_null_equals。 如果打开它, PostgreSQL 将把 x = NULL 子句转换成 x IS NULL。 在 PostgreSQL 版本 6.5 到 7.1 之间,这是缺省的行为。

如果有任何一个输入是空,那么普通的比较操作符生成空(表示"未知")。 另外一个比较的方法是用 IS DISTINCT FROM 构造:

expression IS DISTINCT FROM expression

对于非空输入,这个与 <> 操作符相同。 但是,假如两个输入都是空,那么它将返回假,而如果只有一个输入是空,那么它将返回真。 这样就很有效地把空当作一个普通地数据值看待,而不是"未知"

布尔数值可以用下面的构造进行测试

expression IS TRUE
expression IS NOT TRUE
expression IS FALSE
expression IS NOT FALSE
expression IS UNKNOWN
expression IS NOT UNKNOWN

这些构造将总是返回真或假,从来不返回空值,即使操作数是空也如此。 空值输入被当做逻辑数值"未知"。 请注意实际上 IS UNKNOWN 和 IS NOT UNKNOWN 分别与 IS NULL 和 IS NOT NULL 相同, 只是输入表达式必须是布尔类型。

### PostgreSQL 基本操作教程 #### 创建数据库 创建一个新的数据库可以通过 `CREATE DATABASE` SQL 语句完成。以下是基本语法: ```sql CREATE DATABASE database_name; ``` 例如,要创建名为 `testdb` 的数据库,可以执行以下命令[^1]: ```sql CREATE DATABASE testdb; ``` #### 删除数据库 如果不再需要某个数据库,可以使用 `DROP DATABASE` 来删除它: ```sql DROP DATABASE database_name; ``` 注意:此操作不可逆,因此务必谨慎操作。 #### 查看现有数据库列表 为了查看当前服务器上的所有数据库,可以在 psql 提示符下运行 `\l` 或者 `SELECT datname FROM pg_database;`[^3]: ```bash \l ``` #### 使用特定数据库 切换到指定的数据库以便在其上下文中执行查询: ```bash \c database_name ``` 例如,连接到之前创建的 `testdb` 数据库: ```bash \c testdb ``` #### 表的操作 ##### 创建表 定义新表结构并设置字段属性: ```sql CREATE TABLE table_name ( column_1 data_type constraint, column_2 data_type constraint, ... ); ``` 实例化一张存储学生信息的表格: ```sql CREATE TABLE students ( id SERIAL PRIMARY KEY, name VARCHAR(50), age INT, grade FLOAT ); ``` ##### 插入数据 向已存在的表里添加记录: ```sql INSERT INTO table_name (column_1, column_2,...) VALUES(value_1,value_2,...); ``` 比如往 `students` 表中加入一条新的学籍资料: ```sql INSERT INTO students(name,age,grade) VALUES('Alice',18,97.5); ``` ##### 查询数据 检索符合条件的数据项: ```sql SELECT columns FROM table_name WHERE condition; ``` 展示全体学生的姓名及其成绩状况: ```sql SELECT name, grade FROM students; ``` ##### 更新已有条目 修改满足条件的部分或者全部行的内容: ```sql UPDATE table_name SET field=value [,field2=value2,...] WHERE condition; ``` 把名字叫“Alice”的同学年龄改为19岁: ```sql UPDATE students SET age=19 WHERE name='Alice'; ``` ##### 移除记录 依据设定的标准移走某些行: ```sql DELETE FROM table_name WHERE condition; ``` 清除掉年级低于60分的学生档案: ```sql DELETE FROM students WHERE grade<60; ``` #### 备份与恢复 备份整个数据库至文件: ```bash pg_dump dbname > outfile.sql ``` 从备份文件还原回原状: ```bash psql dbname < infile.sql ``` #### 用户管理 增加新用户账户以及赋予相应权限: ```sql CREATE USER username WITH PASSWORD 'password'; GRANT ALL PRIVILEGES ON DATABASE db_name TO username; ``` #### 安全退出会话 结束当前交互式终端对话框: ```bash \q ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值