SQLite - เลือกแบบสอบถาม

SQLite SELECTคำสั่งใช้เพื่อดึงข้อมูลจากตารางฐานข้อมูล SQLite ซึ่งส่งคืนข้อมูลในรูปแบบของตารางผลลัพธ์ เรียกอีกอย่างว่าตารางผลลัพธ์เหล่านี้result sets.

ไวยากรณ์

ต่อไปนี้เป็นไวยากรณ์พื้นฐานของคำสั่ง SQLite SELECT

SELECT column1, column2, columnN FROM table_name;

ที่นี่ column1, column2 ... คือฟิลด์ของตารางซึ่งมีค่าที่คุณต้องการดึงข้อมูล หากคุณต้องการดึงฟิลด์ทั้งหมดที่มีอยู่ในฟิลด์คุณสามารถใช้ไวยากรณ์ต่อไปนี้ -

SELECT * FROM table_name;

ตัวอย่าง

พิจารณาตาราง COMPANY ที่มีบันทึกต่อไปนี้ -

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

ต่อไปนี้เป็นตัวอย่างในการดึงข้อมูลและแสดงระเบียนเหล่านี้ทั้งหมดโดยใช้คำสั่ง SELECT ที่นี่คำสั่งสามคำแรกถูกใช้เพื่อตั้งค่าเอาต์พุตที่จัดรูปแบบอย่างถูกต้อง

sqlite>.header on
sqlite>.mode column
sqlite> SELECT * FROM COMPANY;

สุดท้ายคุณจะได้รับผลลัพธ์ดังต่อไปนี้

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

หากคุณต้องการดึงเฉพาะฟิลด์ที่เลือกของตาราง COMPANY ให้ใช้แบบสอบถามต่อไปนี้ -

sqlite> SELECT ID, NAME, SALARY FROM COMPANY;

แบบสอบถามข้างต้นจะให้ผลลัพธ์ดังต่อไปนี้

ID          NAME        SALARY
----------  ----------  ----------
1           Paul        20000.0
2           Allen       15000.0
3           Teddy       20000.0
4           Mark        65000.0
5           David       85000.0
6           Kim         45000.0
7           James       10000.0

การตั้งค่าความกว้างของคอลัมน์เอาต์พุต

บางครั้งคุณจะประสบปัญหาที่เกี่ยวข้องกับผลลัพธ์ที่ถูกตัดทอนในกรณีของ .mode columnซึ่งเกิดขึ้นเนื่องจากความกว้างเริ่มต้นของคอลัมน์ที่จะแสดง สิ่งที่คุณสามารถทำได้คือคุณสามารถตั้งค่าความกว้างของคอลัมน์ที่แสดงได้โดยใช้.width num, num.... คำสั่งดังนี้ -

sqlite>.width 10, 20, 10
sqlite>SELECT * FROM COMPANY;

ข้างบน .width คำสั่งตั้งค่าความกว้างของคอลัมน์แรกเป็น 10 ความกว้างของคอลัมน์ที่สองเป็น 20 และความกว้างของคอลัมน์ที่สามเป็น 10 สุดท้ายคำสั่ง SELECT ด้านบนจะให้ผลลัพธ์ดังต่อไปนี้

ID          NAME                  AGE         ADDRESS     SALARY
----------  --------------------  ----------  ----------  ----------
1           Paul                  32          California  20000.0
2           Allen                 25          Texas       15000.0
3           Teddy                 23          Norway      20000.0
4           Mark                  25          Rich-Mond   65000.0
5           David                 27          Texas       85000.0
6           Kim                   22          South-Hall  45000.0
7           James                 24          Houston     10000.0

ข้อมูลสคีมา

เช่นเดียวกับ dot commands มีอยู่ที่พรอมต์ SQLite ดังนั้นในขณะที่เขียนโปรแกรมด้วย SQLite คุณจะใช้คำสั่ง SELECT ต่อไปนี้กับ sqlite_master ตารางเพื่อแสดงรายการตารางทั้งหมดที่สร้างในฐานข้อมูลของคุณ

sqlite> SELECT tbl_name FROM sqlite_master WHERE type = 'table';

สมมติว่าคุณมีตาราง COMPANY เพียงตารางเดียวใน testDB.db ของคุณสิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้

tbl_name
----------
COMPANY

คุณสามารถลงรายการข้อมูลทั้งหมดเกี่ยวกับตาราง COMPANY ได้ดังนี้ -

sqlite> SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'COMPANY';

สมมติว่าคุณมีตาราง COMPANY เพียงตารางเดียวใน testDB.db ของคุณสิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
)