译者:anxin
日期:2017-10-16
PostgreSQL中使用SELECT
SQL语句查询数据库数据时,可以条件性的查询表记录;要条件性的查询表记录需要使用WHERE
关键词。
SQL语法
PostgreSQL中SQL语句中使用WHERE关键词条件性的查询表数据的语法如下:
SELECT column1, ... columnN
FROM table_name1, ... table_nameN
[WHERE condition1 [AND | OR conditionN ]]
- WHERE 子句可以使用在SELECT,DELETE 或者 UPDATE 中。
- 可以使用 AND 或者 OR 指定多个条件。
SQL创建表实例
SELECT name FROM author WHERE name='与知';
WHERE关键词中可用的运算符
逻辑运算符
运算符 | 描述 |
---|---|
AND | 当两个条件都为真时,为真;否则为假 |
OR | 当两个条件都为假时,为假;否则为真 |
NOT | 当条件为假时,为真;当条件为真时,为假 |
比较运算符
假设两个条件a=1,b=2
运算符 | 描述 | 实例 |
---|---|---|
< | 判断运算符左侧是否小于右侧,如果小于,则为真,否则为假 | a<b 真 |
> | 判断运算符左侧是否大于右侧,如果大于,则为真,否则为假 | a>b 假 |
<= | 判断运算符左侧是否小于等于右侧,如果小于等于,则为真,否则为假 | a<=b 真 |
>= | 判断运算符左侧是否大于等于右侧,如果大于等于,则为真,否则为假 | a>=b 假 |
= | 判断运算符左侧是否等于右侧,如果等于,则为真,否则为假 | a=b 假 |
<> 或 != | 判断运算符左侧是否等于右侧,如果不等于,则为真,否则为假 | a!=b 真 |
比较谓词
谓词 | 描述 |
---|---|
a BETWEEN x AND y | a的值在x与y之间 |
a NOT BETWEEN x AND y | a的值不在x与y之间 |
a IS DISTINCT FROM b | a不等于b,把null当一个普通值对待 |
a IS NOT DISTINCT FROM b | a等于b,把null当一个普通值对待 |
expression IS NULL | 为空 |
expression IS NOT NULL | 不为空 |
boolean_expression IS TRUE | 为真 |
boolean_expression IS NOT TRUE | 为假或者未知 |
boolean_expression IS FALSE | 为假 |
boolean_expression IS NOT FALSE | 为真或者未知 |
boolean_expression IS UNKNOWN | 为未知 |
boolean_expression IS NOT UNKNOWN | 为真或者为假 |
psql使用where查询PostgreSQL表数据
1)首先以Linux系统用户postgres
用户登陆Shell
su - postgres
2)使用psql登陆PostgreSQL,指定要连接的数据库yuzhi100
,要使用的用户yuzhi
psql yuzhi100 yuzhi
3)使用如下语句查询所有字段的值
yuzhi100=# select title from article where author='与知作者';
art_id | title
--------+----------------
1 | PostgreSQL教程
PHP脚本where子句查询PostgreSQL表数据
PHP使用 pg_query()
函数来查询 PostgreSQL 表数据。
pg_query()语法形式
该函数有两个参数,在执行成功时返回数据,否则返回 FALSE。
pg_query ([ $connection ], string $query )
参数描述
- connection:到数据库的连接,如果没有提供则使用默认的connection,默认connection是使用pg_connect()最后的一次连接。
- query:必须的参数,要执行的SQL语句。
PHP脚本where子句查询PostgreSQL表数据实例
以下PHP代码演示了使用where子句来查询PostgreSQL表数据:
<?php
//其中参数的含义是
//host=localhost,本地计算机,默认就是本地计算机
//port=5432,默认端口号
//dbname=mydb,指定要连接的数据库
//user=dbuser,连接数据库的用户
//password=dbpassword,连接数据库用户的密码
$connection_string = "host=localhost port=5432 dbname=mydb user=dbuser password=dbpassword";
$conn = pg_connect( $connection_string );
$result = pg_query($conn, "SELECT title FROM article WHERE author='与知作者';");
if(! $result )
{
echo('查询表数据失败!');
}
else {
echo '查询表数据成功!';
}
pg_close($conn);
查询结果如下:
art_id | title
--------+----------------
1 | PostgreSQL教程
Python脚本where子句查询PostgreSQL表数据
Python使用Psycopg2模块的cursor
类的execute()
方法来查询 PostgreSQL 表数据。
cursor.execute()语法形式
该函数有两个参数,在执行成功时返回数据,否则返回 FALSE。
execute(query, vars=None)
参数描述
- query:必须的参数,要执行的SQL语句。
- vars:要替换的SQL语句中的变量值。
Python脚本where子句查询PostgreSQL表数据实例
以下Python代码使用wsgi程序演示了使用where子句来查询PostgreSQL表数据
PostgreSQL的SQL语句包含在一个事务中,在执行完SQL后,需要提交事务,才能把写操作写进数据库:
# -*- coding: utf-8 -*-
import psycopg2
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
def application(environ, start_response):
try:
conn = psycopg2.connect("host=localhost port=5432 dbname=mydb user=dbuser password=dbpassword")
try:
cur = conn.cursor()
cur.execute("SELECT title FROM article WHERE author='与知作者';")
conn.commit()
except psycopg2.OperationalError:
output = bytes('查询表数据失败!', 'utf-8')
except psycopg2.OperationalError:
output = bytes('数据库连接失败!', 'utf-8')
else:
output = bytes('查询表数据成功!', 'utf-8')
finally:
cur.close()
conn.close()
status = '200 OK'
response_headers = [('Content-type', 'text/html; charset=utf-8'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
查询结果如下:
art_id | title
--------+----------------
1 | PostgreSQL教程
本文链接:/tutorial/postgresql/postgresql-where-ziju
本文版权归知站所有,未经站长同意不得转载,谢谢尊重作者劳动成果!
- 浏览量:117