English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
علامة الحساب هي رمز يخبر المترجم بتنفيذ عملية رياضية أو منطقية معينة.
علامات 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)
PostgreSQL has the following logical operators:
Serial Number | Operator & 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'.
a | b | a AND b | a OR b |
---|---|---|---|
TRUE | TRUE | TRUE | TRUE |
TRUE | FALSE | FALSE | TRUE |
TRUE | NULL | NULL | TRUE |
FALSE | FALSE | FALSE | FALSE |
FALSE | NULL | FALSE | NULL |
NULL | NULL | NULL | NULL |
a | NOT a |
---|---|
TRUE | FALSE |
FALSE | TRUE |
NULL | NULL |
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 السطور)
تتأثر عمليات الحساب على المستوى النقطي، وتتم العمليات بشكل فردي. جدول الحقائق لعمليات الحساب على المستوى النقطي (&، | و ^) كما يلي:
p | q | p & q | p | q |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
إذاً إذا كان 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 الصف)