Latest web development tutorials

ผู้ประกอบการ SQLite

สิ่งที่ผู้ประกอบการ SQLite คืออะไร?

ผู้ประกอบการเป็นคำสงวนหรือตัวอักษร, คำสั่ง WHERE ในการดำเนินการส่วนใหญ่จะใช้งบ SQLite เช่นการเปรียบเทียบและการคำนวณ

ผู้ประกอบการจะใช้ในการระบุคำสั่ง SQLite สภาพและการเชื่อมต่อเสียงส่วนใหญ่ของเงื่อนไขในงบ

  • ดำเนินการทางคณิตศาสตร์

  • การเปรียบเทียบ

  • ดำเนินการทางตรรกะ

  • ผู้ประกอบการระดับบิต

SQLite ดำเนินการทางคณิตศาสตร์

สมมติว่าตัวแปร = 10 B = 20 ตัวแปรแล้ว:

运算符描述实例
+加法 - 把运算符两边的值相加 a + b 将得到 30
-减法 - 左操作数减去右操作数 a - b 将得到 -10
*乘法 - 把运算符两边的值相乘 a * b 将得到 200
/除法 - 左操作数除以右操作数 b / a 将得到 2
%取模 - 左操作数除以右操作数后得到的余数 b % a will give 0

ตัวอย่าง

นี่คือตัวอย่างง่ายๆของการดำเนินการทางคณิตศาสตร์ SQLite:

SQLite> สาย .mode
SQLite> เลือก 10 + 20;
10 + 20 = 30


SQLite> เลือก 10-20;
10--20 = -10


SQLite> เลือก 10 * 20;
10 * 20 = 200


SQLite> เลือก 10/5;
10/5 = 2


SQLite> เลือก 12% 5;
2 5 = 12%

เปรียบเทียบข้อมูล SQLite

สมมติว่าตัวแปร = 10 B = 20 ตัวแปรแล้ว:

运算符描述实例
==检查两个操作数的值是否相等,如果相等则条件为真。 (a == b) 不为真。
=检查两个操作数的值是否相等,如果相等则条件为真。 (a = b) 不为真。
!=检查两个操作数的值是否相等,如果不相等则条件为真。 (a != b) 为真。
<>检查两个操作数的值是否相等,如果不相等则条件为真。 (a <> b) 为真。
>检查左操作数的值是否大于右操作数的值,如果是则条件为真。 (a > b) 不为真。
<检查左操作数的值是否小于右操作数的值,如果是则条件为真。 (a < b) 为真。
>=检查左操作数的值是否大于等于右操作数的值,如果是则条件为真。 (a >= b) 不为真。
<=检查左操作数的值是否小于等于右操作数的值,如果是则条件为真。 (a <= b) 为真。
!<检查左操作数的值是否不小于右操作数的值,如果是则条件为真。 (a !< b) 为假。
!>检查左操作数的值是否不大于右操作数的值,如果是则条件为真。 (a !> b) 为真。

ตัวอย่าง

ตาราง บริษัท สมมติว่ามีการบันทึกต่อไปนี้:

ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
1 เปาโล 32 20,000.0 แคลิฟอร์เนีย
2 อัลเลน 25 15,000.0 เท็กซัส
เท็ดดี้ 3 23 นอร์เวย์ 20,000.0
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส
6 คิม 22 ใต้ 45,000.0 ฮอลล์
7 เจมส์ 24 ฮุสตัน 10,000.0

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้งานของการเปรียบเทียบข้อมูล SQLite ต่างๆ

ที่นี่เราใช้คำสั่งWHERE ซึ่งจะกล่าวถึงในบทที่แยกจากกันในด้านหลัง แต่ตอนนี้คุณต้องเข้าใจคำสั่ง WHERE ของคำสั่ง SELECT จะใช้ในการตั้งค่าคำสั่งเงื่อนไข

คำสั่ง SELECT ต่อไปนี้แสดงระเบียนเงินเดือนมากกว่า 50,000.00:

SQLite> * เลือกจาก บริษัท เงินเดือน> 50000;
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส

คำสั่ง SELECT ต่อไปนี้แสดงเงินเดือน 20,000.00 เท่ากับระเบียนทั้งหมด:

SQLite> * เลือกจาก บริษัท เงินเดือน = 20000;
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
1 เปาโล 32 20,000.0 แคลิฟอร์เนีย
เท็ดดี้ 3 23 นอร์เวย์ 20,000.0

คำสั่ง SELECT ต่อไปนี้แสดงเงินเดือนไม่เท่ากับระเบียนทั้งหมดของ 20,000.00:

! Sqlite> * เลือกจาก บริษัท เงินเดือน = 20000;
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
2 อัลเลน 25 15,000.0 เท็กซัส
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส
6 คิม 22 ใต้ 45,000.0 ฮอลล์
7 เจมส์ 24 ฮุสตัน 10,000.0

คำสั่ง SELECT ต่อไปนี้แสดงเงินเดือนไม่เท่ากับระเบียนทั้งหมดของ 20,000.00:

SQLite> SELECT * จาก บริษัท เงินเดือน <> 20000;
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
2 อัลเลน 25 15,000.0 เท็กซัส
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส
6 คิม 22 ใต้ 45,000.0 ฮอลล์
7 เจมส์ 24 ฮุสตัน 10,000.0

คำสั่ง SELECT ต่อไปนี้แสดงเงินเดือนมากกว่าผลรวมของระเบียนทั้งหมดของ 65,000.00 ไปนี้:

SQLite> SELECT * จาก บริษัท เงินเดือน> = 65000;
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส

SQLite ดำเนินการทางตรรกะ

นี่คือรายการของผู้ประกอบการตรรกะ SQLite ทั้งหมด

运算符描述
ANDAND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在。
BETWEENBETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值。
EXISTSEXISTS 运算符用于在满足一定条件的指定表中搜索行的存在。
ININ 运算符用于把某个值与一系列指定列表的值进行比较。
NOT ININ 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。
LIKELIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。
GLOBGLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。
NOTNOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。
OROR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件。
IS NULLNULL 运算符用于把某个值与 NULL 值进行比较。
ISIS 运算符与 = 相似。
IS NOTIS NOT 运算符与 != 相似。
||连接两个不同的字符串,得到一个新的字符串。
UNIQUEUNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)。

ตัวอย่าง

ตาราง บริษัท สมมติว่ามีการบันทึกต่อไปนี้:

ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
1 เปาโล 32 20,000.0 แคลิฟอร์เนีย
2 อัลเลน 25 15,000.0 เท็กซัส
เท็ดดี้ 3 23 นอร์เวย์ 20,000.0
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส
6 คิม 22 ใต้ 45,000.0 ฮอลล์
7 เจมส์ 24 ฮุสตัน 10,000.0

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้งานของผู้ประกอบการเชิงตรรกะของ SQLite

คำสั่ง SELECT ต่อไปนี้แสดงอายุ 25และมากกว่าหรือเท่ากับมากกว่าหรือค่าจ้างที่เท่าเทียมกันสำหรับระเบียนทั้งหมด 65,000.00:

SQLite> * เลือกจาก บริษัท อายุ> = 25 และเงินเดือน> = 65000;
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส

คำสั่ง SELECT ต่อไปนี้แสดงอายุ 25หรือมากกว่าหรือเท่ากับมากกว่าหรือค่าจ้างที่เท่าเทียมกันสำหรับระเบียนทั้งหมด 65,000.00:

SQLite> SELECT * จาก บริษัท อายุ> = 25 หรือเงินเดือน> = 65000;
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
1 เปาโล 32 20,000.0 แคลิฟอร์เนีย
2 อัลเลน 25 15,000.0 เท็กซัส
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส

คำสั่ง SELECT ต่อไปนี้แสดงอายุไม่ได้เป็นโมฆะสำหรับระเบียนทั้งหมดระเบียนทั้งหมดแสดงให้เห็นว่ามันหมายความว่ามีการบันทึกอายุไม่เป็นโมฆะเท่ากับ:

SQLite> SELECT * จาก บริษัท อายุไม่โมฆะ;
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
1 เปาโล 32 20,000.0 แคลิฟอร์เนีย
2 อัลเลน 25 15,000.0 เท็กซัส
เท็ดดี้ 3 23 นอร์เวย์ 20,000.0
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส
6 คิม 22 ใต้ 45,000.0 ฮอลล์
7 เจมส์ 24 ฮุสตัน 10,000.0

ตัวอักษรต่อไปนี้ SELECT รายการชื่อคำชี้แจงที่ 'คี' ระเบียนทั้งหมดเริ่ม 'คี' ไม่มีขีด จำกัด หลังจากที่:

SQLite> * เลือกจาก บริษัท ซึ่งจะมีชื่อเช่น "Ki% ';
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
6 คิม 22 ใต้ 45,000.0 ฮอลล์

ตัวอักษรต่อไปนี้ SELECT รายการชื่อคำชี้แจงที่ 'คี' ระเบียนทั้งหมดเริ่ม 'คี' ไม่มีขีด จำกัด หลังจากที่:

SQLite> * เลือกจาก บริษัท ชื่อ WHERE GLOB 'Ki *';
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
6 คิม 22 ใต้ 45,000.0 ฮอลล์

คำสั่ง SELECT ต่อไปนี้แสดงค่าอายุบันทึก 25 หรือ 27:

SQLite> SELECT * จาก บริษัท อายุความใน (25 27);
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
2 อัลเลน 25 15,000.0 เท็กซัส
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส

คำสั่ง SELECT ต่อไปนี้แสดงค่าที่อายุไม่เป็น 25 หรือ 27 ของระเบียนทั้งหมด:

SQLite> SELECT * จาก บริษัท ยังไม่ได้ใช้ (25, 27);
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
1 เปาโล 32 20,000.0 แคลิฟอร์เนีย
เท็ดดี้ 3 23 นอร์เวย์ 20,000.0
6 คิม 22 ใต้ 45,000.0 ฮอลล์
7 เจมส์ 24 ฮุสตัน 10,000.0

คำสั่ง SELECT ต่อไปนี้แสดงค่าอายุระเบียนทั้งหมดระหว่าง 25 และ 27:

SQLite> * เลือกจาก บริษัท อายุระหว่าง 25 และ 27;
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
2 อัลเลน 25 15,000.0 เท็กซัส
4 มาร์ครวย 25-Mond 65,000.0
5 ดาวิด 27 85,000.0 เท็กซัส

คำสั่ง SELECT ต่อไปนี้ใช้ subqueries SQL, แบบสอบถามย่อยหาเงินเดือน> ฟิลด์อายุระเบียนทั้งหมดที่มี 65,000 หลังคำสั่ง WHERE ถูกนำมาใช้ร่วมกับผู้ประกอบการที่มีอยู่แสดงรายการการแสดงตนแบบสอบถามอายุนอกในผลตอบแทนที่ย่อยแบบสอบถาม ผลของการบันทึกทั้งหมด:

SQLite> อายุ SELECT จาก บริษัท 
        WHERE EXISTS (SELECT อายุจาก บริษัท เงินเดือน> 65000);
อายุ
----------
32
25
23
25
27
22
24

คำสั่ง SELECT ต่อไปนี้ใช้ subqueries SQL, แบบสอบถามย่อยหาเงินเดือน> ฟิลด์อายุระเบียนทั้งหมดที่มี 65,000 หลังคำสั่ง WHERE และ> ผู้ประกอบการมีการใช้ร่วมกันผลลัพธ์ของแบบสอบถามที่ส่งกลับรายการของแบบสอบถามนอกมากกว่า Sub-Age ระเบียนทั้งหมดของอายุ:

SQLite> SELECT * จาก บริษัท 
        WHERE อายุ> (SELECT อายุจาก บริษัท เงินเดือน> 65000);
ID NAME เงินเดือนอายุที่อยู่
---------- ---------- ---------- ---------- ----------
1 เปาโล 32 20,000.0 แคลิฟอร์เนีย

ผู้ประกอบการ Bitwise SQLite

ผู้ประกอบการระดับบิตทำหน้าที่เกี่ยวกับบิตและบิตโดยการดำเนินการบิต ตารางความจริง & และ | ดังนี้

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 = 1100 0011

ตารางต่อไปนี้แสดงภาษาที่ได้รับการสนับสนุนโดยผู้ประกอบการ SQLite บิต สมมติว่าตัวแปร A = 60, ขตัวแปร = 13 แล้ว:

运算符描述实例
&如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 (A & B) 将得到 12,即为 0000 1100
|如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 (A | B) 将得到 61,即为 0011 1101
~二进制补码运算符是一元运算符,具有"翻转"位效应。 (~A ) 将得到 -61,即为 1100 0011,2 的补码形式,带符号的二进制数。
<<二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 A << 2 将得到 240,即为 1111 0000
>> 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 A >> 2 将得到 15,即为 0000 1111

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้งานบิต SQLite:

SQLite> สาย .mode
SQLite> เลือก 60 | 13;
60 | 13 = 61

SQLite> เลือก 60 และ 13;
60 และ 13 = 12

SQLite> เลือก 60 ^ 13;
10 * 20 = 200


SQLite> เลือก (~ 60);
(~ 60) = -61

SQLite> เลือก (60 << 2);
(2 << 60) = 240

SQLite> เลือก (60 >> 2);
(60 >> 2) = 15