English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في PostgreSQL، عندما نحتاج إلى استعلام بيانات من جدول واحد أو أكثر بناءً على شرط معين، يمكننا إضافة جملة WHERE إلى جملة SELECT لفرز البيانات غير المطلوبة.
يمكن استخدام جملة WHERE ليس فقط في جملة SELECT، بل أيضًا في جمل مثل UPDATE،DELETE،وما إلى ذلك.
التالي هو بناء جملة SELECT باستخدام جملة WHERE لقراءة البيانات من قاعدة البيانات بشكل عام:
SELECT column1, column2, columnN FROM table_name WHERE [condition1]
نستطيع استخدام عمليات مقارنة أو عمليات منطقية في جملة WHERE، مثل >، <، =، LIKE، NOT، وما إلى ذلك.
COMPANY.SQL文件内容如下:
-- This is the file to create COMPANY table and to populate it with 7 records. -- Just copy and past them on psql prompt. DROP TABLE COMPANY; CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY | REAL ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'David', 27, 'Texas', 85000.00); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Kim', 22, 'South-Hall', 45000.00); INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00);
إنشاء جدول COMPANY، محتواه كما يلي:
w3codeboxdb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 (7 rows)
في هذه الأمثلة، نستخدم عمليات الحساب المنطقية لقراءة البيانات من الجدول.
找出 AGE(العمر) الحقول أكبر أو تساوي 25، وأيضاً SALARY(الراتب) 字段大于等于 65000 的数据:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000; id | name | age | address | salary ----+-------+-----+------------+-------- 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | تكساس | 85000 (2 rows)
找出 AGE(العمر) 字段大于等于 25,或者 SALARY(الراتب) 字段大于等于 65000 的数据:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000; id | name | age | address | salary ----+-------+-----+-------------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (4 rows)
在公司表中找出 AGE(العمر) 字段不为空的记录:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE IS NOT NULL; id | name | age | address | salary ----+-------+-----+------------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | تكساس | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | تكساس | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | هيوستن | 10000 (7 rows)
在 COMPANY 表中找出 NAME(名字) 字段中以 Pa 开头的的数据:
w3codeboxdb=# SELECT * FROM COMPANY WHERE NAME LIKE 'Pa%'; id | name | age | address | salary ----+------+-----+-----------+-------- 1 | Paul | 32 | California | 20000
استخدام الجملة SELECT التالية، يعرض AGE(العمر) 字段为 25 或 27 的数据:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE IN (25, 27); id | name | age | address | salary ----+-------+-----+------------+-------- 2 | Allen | 25 | تكساس | 15000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | تكساس | 85000 (3 rows)
استخدام الجملة SELECT التالية، يعرض AGE(العمر) 字段不为 25 或 27 的数据:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE NOT IN (25, 27); id | name | age | address | salary ----+-------+-----+------------+-------- 1 | Paul | 32 | California | 20000 3 | Teddy | 23 | Norway | 20000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | هيوستن | 10000 (4 rows)
استخدام الجملة SELECT التالية، يعرض AGE(العمر) بيانات الحقل في 25 إلى 27:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27; id | name | age | address | salary ----+-------+-----+------------+-------- 2 | Allen | 25 | تكساس | 15000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | تكساس | 85000 (3 rows)
استخدام الجملة SELECT التالية، الجملة الفرعية لـ SQL، يقرأ SALARY(الراتب) بيانات الحقل أكبر من 65000، ثم من خلال EXISTS استخدام عمليات الحساب لتحديد ما إذا كان يعود النص أو لا، إذا كان يعود النص، فاقرأ جميع AGE(العمر) الحقل.
w3codeboxdb=# SELECT AGE FROM COMPANY; WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000); age ----- 32 25 23 25 27 22 24 (7 rows)
استخدام الجملة SELECT التالية، الجملة الفرعية لـ SQL، يقرأ SALARY(الراتب) الحقل أكبر من 65000 AGE(العمر) بيانات الحقل، ثم باستخدام > استعلام عمليات الحساب أكبر من هذا AGE(العمر) بيانات الحقل:
w3codeboxdb=# SELECT * FROM COMPANY; WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000); id | name | age | address | salary ----+------+-----+------------+-------- 1 | Paul | 32 | كاليفورنيا | 20000