English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل PostgreSQL الأساسي

دليل PostgreSQL المتقدم

واجهة PostgreSQL

عناصر الحساب PostgreSQL

علامة الحساب هي رمز يخبر المترجم بتنفيذ عملية رياضية أو منطقية معينة.

علامات PostgreSQL هي كلمات مفتاحية محفوظة أو رموز، وتستخدم عادةً في جمل WHERE كمعايير تصفية.

العلامات الشائعة تشمل:

  • علامات الحساب الرياضية

  • علامات الحساب

  • Logical Operator

  • علامات الحساب الثنائي

علامات الحساب الرياضية

إذا كانت المتغير a تساوي 2، والمتغير b تساوي 3، فإنه:

العمودالوصفمثال
+ الجمعa + b النتيجة هي 5
-الطرحa - b النتيجة هي -1
*الضربa * b النتيجة هي 6
/القسمةb / a النتيجة هي 1
%البقية (الفرق)b % a النتيجة هي 1
^الطاقةa ^ b النتيجة هي 8
|/جذر المربع|/ 25.0 النتيجة هي 5
||/جذر الكثافه||/ 27.0 النتيجة هي 3
!الحساب بالعامل5 ! النتيجة هي 120
!!الحساب بالعامل (العمودي)!! 5 النتيجة هي 120

مثال عبر الإنترنت

w3codeboxdb=# select 2+3;
 ?عمود?
----------
        5
(1 الصف)
w3codeboxdb=# select 2*3;
 ?عمود?
----------
        6
(1 الصف)
w3codeboxdb=# select 10/5;
 ?عمود?
----------
        2
(1 الصف)
w3codeboxdb=# select 12%5;
 ?عمود?
----------
        2
(1 الصف)
w3codeboxdb=# select 2^3;
 ?عمود?
----------
        8
(1 الصف)
w3codeboxdb=# select |/ 25.0;
 ?عمود?
----------
        5
(1 الصف)
w3codeboxdb=# select ||/ 27.0;
 ?عمود?
----------
        3
(1 الصف)
w3codeboxdb=# select 5 !!;
 ?عمود?
----------
      120
(1 الصف)
w3codeboxdb=# select !!5;
 ?عمود?
----------
      120
(1 الصف)

علامات الحساب

إذا كانت المتغير a تساوي 10، والمتغير b تساوي 20، فإنه:

العمودالوصفمثال
=يساوي(a = b) هو false.
!=غير متساوي(a != b) هو true.
<>غير متساوي(a <> b) هو true.
>أكبر(a > b) هو false.
<أقل(a < b) هو true.
>= أكبر أو يساوي(a >= b) هو false.
<=أقل أو يساوي(a <= b) هو true.

مثال عبر الإنترنت

محتوى ملف 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)

قراءة بيانات الحقل SALARY أكبر من 50000:

w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY > 50000;
 id | name  | age |address    | salary
----+-------+-----+-----------+--------
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
(2 rows)

قراءة بيانات الحقل SALARY تساوي 20000:

w3codeboxdb=#  SELECT * FROM COMPANY WHERE SALARY = 20000;
 id | name  | age |  address    | salary
 ----+-------+-----+-------------+--------
   1 | Paul  |  32 | California  |  20000
   3 | Teddy |  23 | Norway      |  20000
(2 rows)

قراءة بيانات الحقل SALARY غير متساوية مع 20000:

w3codeboxdb=#  SELECT * FROM COMPANY WHERE SALARY != 20000;
 id | name  | age |  address    | salary
----+-------+-----+-------------+--------
  2 | Allen |  25 | Texas       |  15000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | Texas       |  85000
  6 | Kim   |  22 | South-Hall  |  45000
  7 | James |  24 | Houston     |  10000
(5 rows)
w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY <> 20000;
 id | name  | age | address    | salary
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000
(5 rows)

قراءة بيانات الحقل SALARY أكبر من أو يساوي 65000:

w3codeboxdb=# SELECT * FROM COMPANY WHERE SALARY >= 65000;
 id | name  | age |  address  | salary
----+-------+-----+-----------+--------
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
(2 rows)

Logical Operator

PostgreSQL has the following logical operators:

Serial NumberOperator & Description
1

AND

Logical AND operator. If both operands are non-zero, the condition is true.

The WHERE clause in PostgresSQL can include multiple filtering conditions with AND.



2

NOT

Logical NOT operator. It reverses the logical state of the operand. If the condition is true, the logical NOT operator makes it false.

PostgresSQL has NOT EXISTS, NOT BETWEEN, NOT IN, etc. operators.
3

OR

Logical OR operator. If either of the operands is non-zero, the condition is true.

The WHERE clause in PostgresSQL can include multiple filtering conditions with OR.

SQL uses a three-valued logic system, including true, false, and null, where null represents 'unknown'.

aba AND ba OR b
TRUETRUETRUETRUE
TRUEFALSEFALSETRUE
TRUENULLNULLTRUE
FALSEFALSEFALSEFALSE
FALSENULLFALSENULL
NULLNULLNULLNULL
aNOT a
TRUEFALSE
FALSETRUE
NULLNULL

مثال عبر الإنترنت

COMPANY.SQL file content as follows:

-- 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 字段大于等于 6500 的数据:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 6500;
 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  字段大于等于  25 或 SALARY 字段大于 6500 的数据:

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 6500;
 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
  8 | Paul  |  24 | Houston     |  20000
  9 | James |  44 | Norway      |   5000
 10 | James |  45 | Texas       |   5000
(10 السطور)

读取 SALARY 字段不为 NULL 的数据:

w3codeboxdb=#  SELECT * FROM COMPANY WHERE SALARY IS NOT NULL;
 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
  8 | Paul  |  24 | Houston     |  20000
  9 | James |  44 | Norway      |   5000
 10 | James |  45 | Texas       |   5000
(10 السطور)

عمليات الحساب على المستوى النقطي

تتأثر عمليات الحساب على المستوى النقطي، وتتم العمليات بشكل فردي. جدول الحقائق لعمليات الحساب على المستوى النقطي (&، | و ^) كما يلي:

pqp & qp | q
0000
0101
1111
1001

إذاً إذا كان A = 60، و B = 13، فإنهما يتم تمثيلهما في شكل ثنائي كما يلي:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

الجدول أدناه يوضح عمودي الحركة الحسابية المدعومة من PostgreSQL.بشرط أن تكون المعلمة A القيمة هي 60،المعلمة B القيمة هو 13،فإنه:

العمودالوصفمثال
&

عمودي الحركة الحسابية.تُجرى عمليات "الإضافة" على كل عمود ثنائي.قواعد الحساب:

0&0=0;   
0&1=0;    
1&0=0;     
1&1=1;
(A & B) سيحصل على 12،وهذا هو 0000 1100
|

عمودي الحركة الحسابية.تُجرى عمليات "الإضافة" على كل عمود ثنائي.قواعد الحساب:

0|0=0;   
0|1=1;   
1|0=1;    
1|1=1;
(A | B) سيحصل على 61،وهذا هو 0011 1101
#

عمودي الحركة الحسابية الثنائية.تُجرى عمليات "الاستنساخ" على كل عمود ثنائي.قواعد الحساب:

0#0=0;   
0#1=1;   
1#0=1;  
1#1=0;
(A # B) سيحصل على 49،وهذا هو 0011 0001
~

عمودي الحركة الحسابية.تُجرى عمليات "الاستنساخ" على كل عمود ثنائي.قواعد الحساب:

~1=0;   
~0=1;
(-A) سيحصل على -61،وهذا هو 1100 0011،شكل العداد الثنائي المميز للعدد المميز.
<<عمودي الحركة الحسابية الثنائية.تحرك جميع الأعمدة الثنائية لعدد معين من المواضع (تُتخلص من الأعمدة اليسرى، وتُملأ الأعمدة اليمنى ب0).A << 2 سيحصل على 240،وهذا هو 1111 0000
>>عمودي الحركة الحسابية الثنائية.تحرك جميع الأعمدة الثنائية لعدد معين من المواضع،العدد الإيجابي يساعد على ملء 0،العدد السلبي يساعد على ملء 1،ويتم التخلص من الأعمدة اليمنى.A >> 2 سيحصل على 15،وهذا هو 0000 1111

مثال عبر الإنترنت

w3codeboxdb=# select 60 | 13;
 ?عمود?
----------
       61
(1 الصف)
w3codeboxdb=# select 60 & 13;
 ?عمود?
----------
       12
(1 الصف)
w3codeboxdb=# select (~60);
 ?عمود?
----------
      -61
(1 الصف)
w3codeboxdb=# select (60 << 2);
 ?عمود?
----------
      240
(1 الصف)
w3codeboxdb=# select (60 >> 2);
 ?عمود?
----------
       15
(1 الصف)
w3codeboxdb=# select 60 # 13;
 ?عمود?
----------
       49
(1 الصف)