Python SQLite - คู่มือฉบับย่อ
SQLite3 สามารถรวมเข้ากับ Python โดยใช้โมดูล sqlite3 ซึ่งเขียนโดย Gerhard Haring มีอินเทอร์เฟซ SQL ที่สอดคล้องกับข้อกำหนด DB-API 2.0 ที่อธิบายโดย PEP 249 คุณไม่จำเป็นต้องติดตั้งโมดูลนี้แยกต่างหากเนื่องจากมีการจัดส่งโดยค่าเริ่มต้นพร้อมกับ Python เวอร์ชัน 2.5.x เป็นต้นไป
ในการใช้โมดูล sqlite3 ก่อนอื่นคุณต้องสร้างวัตถุการเชื่อมต่อที่แสดงถึงฐานข้อมูลจากนั้นคุณสามารถสร้างวัตถุเคอร์เซอร์ซึ่งจะช่วยคุณในการเรียกใช้คำสั่ง SQL ทั้งหมด
Python SQLite3 Module APIs
ต่อไปนี้เป็นรูทีนโมดูล sqlite3 ที่สำคัญซึ่งสามารถเพียงพอต่อความต้องการของคุณในการทำงานกับฐานข้อมูล SQLite จากโปรแกรม Python ของคุณ หากคุณกำลังมองหาแอปพลิเคชันที่ซับซ้อนมากขึ้นคุณสามารถดูเอกสารอย่างเป็นทางการของโมดูล Python sqlite3
ซีเนียร์ | API และคำอธิบาย |
---|---|
1 | sqlite3.connect(database [,timeout ,other optional arguments]) API นี้เปิดการเชื่อมต่อกับไฟล์ฐานข้อมูล SQLite คุณสามารถใช้ ": memory:" เพื่อเปิดการเชื่อมต่อฐานข้อมูลกับฐานข้อมูลที่อยู่ใน RAM แทนบนดิสก์ หากเปิดฐานข้อมูลสำเร็จจะส่งคืนวัตถุการเชื่อมต่อ |
2 | connection.cursor([cursorClass]) รูทีนนี้จะสร้างเคอร์เซอร์ซึ่งจะใช้ตลอดการเขียนโปรแกรมฐานข้อมูลของคุณด้วย Python วิธีนี้ยอมรับ cursorClass พารามิเตอร์ทางเลือกเดียว หากให้มาต้องเป็นคลาสเคอร์เซอร์แบบกำหนดเองที่ขยาย sqlite3.Cursor |
3 | cursor.execute(sql [, optional parameters]) รูทีนนี้รันคำสั่ง SQL คำสั่ง SQL อาจถูกกำหนดพารามิเตอร์ (เช่นตัวยึดแทนตัวอักษร SQL) โมดูล sqlite3 รองรับตัวยึดตำแหน่งสองประเภท: เครื่องหมายคำถามและตัวยึดตำแหน่งที่ระบุชื่อ (สไตล์ที่ระบุชื่อ) For example - cursor.execute ("แทรกลงในค่าผู้คน (?,?)", (ใครอายุ)) |
4 | connection.execute(sql [, optional parameters]) รูทีนนี้เป็นทางลัดของวิธีการดำเนินการข้างต้นที่จัดเตรียมโดยวัตถุเคอร์เซอร์และจะสร้างวัตถุเคอร์เซอร์กลางโดยเรียกวิธีการเคอร์เซอร์จากนั้นเรียกวิธีการดำเนินการของเคอร์เซอร์ด้วยพารามิเตอร์ที่กำหนด |
5 | cursor.executemany(sql, seq_of_parameters) รูทีนนี้เรียกใช้คำสั่ง SQL กับลำดับพารามิเตอร์หรือการแม็พทั้งหมดที่พบในลำดับ sql |
6 | connection.executemany(sql[, parameters]) รูทีนนี้เป็นทางลัดที่สร้างวัตถุเคอร์เซอร์กลางโดยการเรียกใช้วิธีเคอร์เซอร์จากนั้นเรียกวิธีการดำเนินการเคอร์เซอร์หลายวิธีด้วยพารามิเตอร์ที่กำหนด |
7 | cursor.executescript(sql_script) รูทีนนี้เรียกใช้คำสั่ง SQL หลายคำสั่งพร้อมกันในรูปแบบของสคริปต์ มันออกคำสั่ง COMMIT ก่อนจากนั้นเรียกใช้สคริปต์ SQL ที่ได้รับเป็นพารามิเตอร์ คำสั่ง SQL ทั้งหมดควรคั่นด้วยเซมิโคลอน (;) |
8 | connection.executescript(sql_script) รูทีนนี้เป็นทางลัดที่สร้างวัตถุเคอร์เซอร์กลางโดยเรียกวิธีการเคอร์เซอร์จากนั้นเรียกเมธอด executescript ของเคอร์เซอร์ด้วยพารามิเตอร์ที่กำหนด |
9 | connection.total_changes() รูทีนนี้จะส่งคืนจำนวนแถวฐานข้อมูลทั้งหมดที่ถูกแก้ไขแทรกหรือลบไปตั้งแต่เปิดการเชื่อมต่อฐานข้อมูล |
10 | connection.commit() วิธีนี้ทำธุรกรรมปัจจุบัน หากคุณไม่เรียกวิธีนี้สิ่งที่คุณทำตั้งแต่การเรียกครั้งสุดท้ายเพื่อกระทำ () จะมองไม่เห็นจากการเชื่อมต่อฐานข้อมูลอื่น |
11 | connection.rollback() วิธีนี้ย้อนกลับการเปลี่ยนแปลงใด ๆ ในฐานข้อมูลตั้งแต่การเรียกครั้งสุดท้ายเพื่อกระทำ () |
12 | connection.close() วิธีนี้จะปิดการเชื่อมต่อฐานข้อมูล โปรดทราบว่าสิ่งนี้ไม่ได้เรียกใช้การกระทำ () โดยอัตโนมัติ หากคุณเพียงแค่ปิดการเชื่อมต่อฐานข้อมูลโดยไม่เรียกคอมมิต () ก่อนการเปลี่ยนแปลงของคุณจะหายไป! |
13 | cursor.fetchone() วิธีนี้จะดึงข้อมูลแถวถัดไปของชุดผลลัพธ์คิวรีส่งคืนลำดับเดียวหรือไม่มีเมื่อไม่มีข้อมูลเพิ่มเติม |
14 | cursor.fetchmany([size = cursor.arraysize]) รูทีนนี้ดึงข้อมูลชุดถัดไปของผลลัพธ์คิวรีโดยส่งคืนรายการ รายการว่างจะถูกส่งกลับเมื่อไม่มีแถวเพิ่มเติม วิธีนี้พยายามดึงข้อมูลหลายแถวตามที่ระบุโดยพารามิเตอร์ขนาด |
15 | cursor.fetchall() รูทีนนี้ดึงข้อมูลแถวทั้งหมด (ที่เหลือ) ของผลลัพธ์คิวรีโดยส่งคืนรายการ รายการว่างจะถูกส่งกลับเมื่อไม่มีแถว |
ในการสร้างการเชื่อมต่อกับพรอมต์คำสั่ง SQLite Open ให้เรียกดูตำแหน่งที่คุณติดตั้ง SQLite และดำเนินการคำสั่ง sqlite3 ดังแสดงด้านล่าง -
การสร้างการเชื่อมต่อโดยใช้ Python
คุณสามารถสื่อสารกับฐานข้อมูล SQLite2 โดยใช้โมดูล SQLite3 python ในการทำเช่นนั้นก่อนอื่นคุณต้องสร้างการเชื่อมต่อ (สร้างวัตถุการเชื่อมต่อ)
ในการสร้างการเชื่อมต่อกับฐานข้อมูล SQLite3 โดยใช้ python คุณต้อง -
นำเข้าโมดูล sqlite3 โดยใช้คำสั่งนำเข้า
เมธอด connect () ยอมรับชื่อของฐานข้อมูลที่คุณต้องการเชื่อมต่อเป็นพารามิเตอร์และส่งคืนอ็อบเจ็กต์ Connection
ตัวอย่าง
import sqlite3
conn = sqlite3.connect('example.db')
เอาต์พุต
print("Connection established ..........")
การใช้คำสั่ง SQLite CREATE TABLE คุณสามารถสร้างตารางในฐานข้อมูลได้
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์สำหรับสร้างตารางในฐานข้อมูล SQLite -
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype
);
ตัวอย่าง
คำสั่ง / คำสั่ง SQLite ต่อไปนี้จะสร้างตารางที่มีชื่อ CRICKETERS ในฐานข้อมูล SQLite -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
ให้เราสร้าง OdiStats อีกหนึ่งตารางที่อธิบายสถิติคริกเก็ตหนึ่งวันของผู้เล่นแต่ละคนในตาราง CRICKETERS
sqlite> CREATE TABLE ODIStats (
First_Name VARCHAR(255),
Matches INT,
Runs INT,
AVG FLOAT,
Centuries INT,
HalfCenturies INT
);
sqlite>
คุณสามารถรับรายการตารางในฐานข้อมูลในฐานข้อมูล SQLite โดยใช้ไฟล์ .tablesคำสั่ง หลังจากสร้างตารางแล้วหากคุณสามารถตรวจสอบรายชื่อตารางได้คุณสามารถสังเกตตารางที่สร้างขึ้นใหม่ในรูปแบบ -
sqlite> . tables
CRICKETERS ODIStats
sqlite>
การสร้างตารางโดยใช้ Python
วัตถุเคอร์เซอร์มีวิธีการทั้งหมดในการเรียกใช้งานและดึงข้อมูลเป็นต้นวิธีเคอร์เซอร์ของคลาสการเชื่อมต่อจะส่งคืนวัตถุเคอร์เซอร์
ดังนั้นในการสร้างตารางในฐานข้อมูล SQLite โดยใช้ python -
สร้างการเชื่อมต่อกับฐานข้อมูลโดยใช้เมธอด connect ()
สร้างวัตถุเคอร์เซอร์โดยเรียกใช้ cursor () วิธีการบนวัตถุการเชื่อมต่อที่สร้างไว้ด้านบน
ตอนนี้ดำเนินการคำสั่ง CREATE TABLE โดยใช้เมธอด execute () ของคลาส Cursor
ตัวอย่าง
ต่อไปนี้โปรแกรม Python สร้างตารางชื่อ Employee ใน SQLite3 -
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating table as per requirement
sql ='''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)'''
cursor.execute(sql)
print("Table created successfully........")
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
เอาต์พุต
Table created successfully........
คุณสามารถเพิ่มแถวใหม่ในตาราง SQLite ที่มีอยู่โดยใช้คำสั่ง INSERT INTO ในสิ่งนี้คุณต้องระบุชื่อของตารางชื่อคอลัมน์และค่า (ตามลำดับเดียวกันกับชื่อคอลัมน์)
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ที่แนะนำของคำสั่ง INSERT -
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
โดยที่ column1, column2, column3, .. คือชื่อของคอลัมน์ของตารางและ value1, value2, value3, ... คือค่าที่คุณต้องแทรกลงในตาราง
ตัวอย่าง
สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้คำสั่ง CREATE TABLE ดังที่แสดงด้านล่าง -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
ตามคำสั่ง PostgreSQL จะแทรกแถวในตารางที่สร้างไว้ด้านบน
sqlite> insert into CRICKETERS (First_Name, Last_Name, Age, Place_Of_Birth, Country)
values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite>
ขณะแทรกระเบียนโดยใช้คำสั่งINSERT INTOหากคุณข้ามชื่อคอลัมน์ใด ๆ บันทึกนี้จะถูกแทรกโดยเว้นช่องว่างไว้ที่คอลัมน์ที่คุณข้ามไป
sqlite> insert into CRICKETERS (First_Name, Last_Name, Country)
values ('Jonathan', 'Trott', 'SouthAfrica');
sqlite>
คุณยังสามารถแทรกระเบียนลงในตารางได้โดยไม่ต้องระบุชื่อคอลัมน์หากลำดับของค่าที่คุณส่งผ่านนั้นเหมือนกับชื่อคอลัมน์ตามลำดับในตาราง
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
หลังจากใส่ระเบียนลงในตารางแล้วคุณสามารถตรวจสอบเนื้อหาได้โดยใช้คำสั่ง SELECT ดังที่แสดงด้านล่าง -
sqlite> select * from cricketers;
Shikhar |Dhawan | 33 | Delhi | India
Jonathan |Trott | | | SouthAfrica
Kumara |Sangakkara | 41 | Matale| Srilanka
Virat |Kohli | 30 | Delhi | India
Rohit |Sharma | 32 | Nagpur| India
sqlite>
การแทรกข้อมูลโดยใช้ Python
ในการเพิ่มระเบียนลงในตารางที่มีอยู่ในฐานข้อมูล SQLite -
นำเข้าแพ็คเกจ sqlite3
สร้างอ็อบเจ็กต์การเชื่อมต่อโดยใช้เมธอด connect () โดยส่งชื่อของฐานข้อมูลเป็นพารามิเตอร์ไป
cursor()วิธีการส่งคืนวัตถุเคอร์เซอร์ที่คุณสามารถสื่อสารกับ SQLite3 สร้างวัตถุเคอร์เซอร์โดยเรียกใช้เคอร์เซอร์ () วัตถุบนวัตถุการเชื่อมต่อ (สร้างด้านบน)
จากนั้นเรียกใช้เมธอด execute () บนวัตถุเคอร์เซอร์โดยส่งคำสั่ง INSERT เป็นพารามิเตอร์ไป
ตัวอย่าง
ตัวอย่าง python ต่อไปนี้จะแทรกระเบียนลงในตารางชื่อ EMPLOYEE -
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Preparing SQL queries to INSERT a record into the database.
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama Priya', 27, 'F', 9000)'''
)
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Vinay', 'Battacharya', 20, 'M', 6000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Sharukh', 'Sheik', 25, 'M', 8300)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Sarmista', 'Sharma', 26, 'F', 10000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Tripthi', 'Mishra', 24, 'F', 6000)''')
# Commit your changes in the database
conn.commit()
print("Records inserted........")
# Closing the connection
conn.close()
เอาต์พุต
Records inserted........
คุณสามารถดึงข้อมูลจากตาราง SQLite โดยใช้แบบสอบถาม SELECT แบบสอบถาม / คำสั่งนี้ส่งคืนเนื้อหาของความสัมพันธ์ที่ระบุ (ตาราง) ในรูปแบบตารางและเรียกว่าเป็นชุดผลลัพธ์
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง SELECT ใน SQLite -
SELECT column1, column2, columnN FROM table_name;
ตัวอย่าง
สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
คำค้นหา SELECT ต่อไปนี้จะดึงค่าของคอลัมน์ FIRST_NAME, LAST_NAME และ, COUNTRY จากตาราง CRICKETERS
sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
Shikhar |Dhawan |India
Jonathan |Trott |SouthAfrica
Kumara |Sangakkara |Srilanka
Virat |Kohli |India
Rohit |Sharma |India
sqlite>
ตามที่คุณสังเกตคำสั่ง SELECT ของฐานข้อมูล SQLite จะส่งคืนระเบียนของตารางที่ระบุ ในการรับเอาต์พุตที่จัดรูปแบบคุณต้องตั้งค่าไฟล์header, และ mode โดยใช้คำสั่งที่เกี่ยวข้องก่อนคำสั่ง SELECT ดังที่แสดงด้านล่าง -
sqlite> .header on
sqlite> .mode column
sqlite> SELECT FIRST_NAME, LAST_NAME, COUNTRY FROM CRICKETERS;
First_Name Last_Name Country
---------- ---------- ----------
Shikhar Dhawan India
Jonathan Trott SouthAfric
Kumara Sangakkara rilanka
Virat Kohli India
Rohit Sharma India
หากคุณต้องการดึงข้อมูลคอลัมน์ทั้งหมดของแต่ละระเบียนคุณต้องแทนที่ชื่อของคอลัมน์ด้วย "*" ดังที่แสดงด้านล่าง -
sqlite> .header on
sqlite> .mode column
sqlite> SELECT * FROM CRICKETERS;
First_Name Last_Name Age Place_Of_Birth Country
---------- ---------- ------- -------------- ----------
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfric
Kumara Sangakkara 41 Matale Srilanka
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
sqlite>
ในSQLiteโดยค่าเริ่มต้นความกว้างของคอลัมน์คือ 10 ค่าความกว้างเกินกว่านี้จะสับ (สังเกตคอลัมน์ของประเทศ 2 ครั้งแถวในตารางข้างต้น) คุณสามารถตั้งค่าความกว้างของแต่ละคอลัมน์เป็นค่าที่ต้องการโดยใช้.width คำสั่งก่อนดึงเนื้อหาของตารางตามที่แสดงด้านล่าง -
sqlite> .width 10, 10, 4, 10, 13
sqlite> SELECT * FROM CRICKETERS;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- --------
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
sqlite>
การดึงข้อมูลโดยใช้ Python
READ Operation บนฐานข้อมูลใด ๆ หมายถึงการดึงข้อมูลที่เป็นประโยชน์จากฐานข้อมูล คุณสามารถดึงข้อมูลจาก MYSQL โดยใช้วิธีการดึงข้อมูล () ที่จัดเตรียมโดยโมดูล sqlite python
คลาส sqlite3.Cursor มีสามวิธี ได้แก่ fetchall (), fetchmany () และ, fetchone () โดยที่
วิธี fetchall () ดึงข้อมูลแถวทั้งหมดในชุดผลลัพธ์ของแบบสอบถามและส่งกลับเป็นรายการสิ่งที่เพิ่มขึ้น (หากเราดำเนินการสิ่งนี้หลังจากดึงข้อมูลไม่กี่แถวมันจะส่งคืนแถวที่เหลือ)
วิธีการ fetchone () ดึงข้อมูลแถวถัดไปจากผลลัพธ์ของคิวรีและส่งกลับเป็นทูเพิล
วิธีการ fetchmany () คล้ายกับ fetchone () แต่จะดึงข้อมูลชุดถัดไปของแถวในชุดผลลัพธ์ของแบบสอบถามแทนที่จะเป็นแถวเดียว
Note - ชุดผลลัพธ์คือวัตถุที่ส่งคืนเมื่อวัตถุเคอร์เซอร์ถูกใช้เพื่อสืบค้นตาราง
ตัวอย่าง
ตัวอย่างต่อไปนี้ดึงข้อมูลแถวทั้งหมดของตารางพนักงานโดยใช้แบบสอบถาม SELECT และจากชุดผลลัพธ์ที่ได้รับในตอนแรกเรากำลังดึงข้อมูลแถวแรกโดยใช้วิธี fetchone () จากนั้นดึงข้อมูลแถวที่เหลือโดยใช้วิธี fetchall ()
โปรแกรม Python ต่อไปนี้จะแสดงวิธีการดึงข้อมูลและแสดงบันทึกจากตาราง COMPANY ที่สร้างขึ้นในตัวอย่างข้างต้น
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving data
cursor.execute('''SELECT * from EMPLOYEE''')
#Fetching 1st row from the table
result = cursor.fetchone();
print(result)
#Fetching 1st row from the table
result = cursor.fetchall();
print(result)
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
เอาต์พุต
('Ramya', 'Rama priya', 27, 'F', 9000.0)
[
('Vinay', 'Battacharya', 20, 'M', 6000.0),
('Sharukh', 'Sheik', 25, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
หากคุณต้องการดึงข้อมูลลบหรืออัปเดตแถวเฉพาะของตารางใน SQLite คุณต้องใช้ where clause เพื่อระบุเงื่อนไขเพื่อกรองแถวของตารางสำหรับการดำเนินการ
ตัวอย่างเช่นหากคุณมีคำสั่ง SELECT พร้อมด้วย where clause ระบบจะเรียกเฉพาะแถวที่ตรงตามเงื่อนไขที่ระบุเท่านั้น
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของ WHERE clause ใน SQLite -
SELECT column1, column2, columnN
FROM table_name
WHERE [search_condition]
คุณสามารถระบุ search_condition โดยใช้ตัวดำเนินการเปรียบเทียบหรือตรรกะ เช่น>, <, =, LIKE, NOT ฯลฯ ตัวอย่างต่อไปนี้จะทำให้แนวคิดนี้ชัดเจน
ตัวอย่าง
สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
คำสั่ง SELECT ต่อไปนี้จะดึงข้อมูลที่มีอายุมากกว่า 35 -
sqlite> SELECT * FROM CRICKETERS WHERE AGE > 35;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -----------
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
sqlite>
โดยใช้คำสั่ง Python
วัตถุ / คลาสของเคอร์เซอร์มีวิธีการทั้งหมดในการดำเนินการสืบค้นและดึงข้อมูล ฯลฯ วิธีการเคอร์เซอร์ของคลาสการเชื่อมต่อจะส่งคืนวัตถุเคอร์เซอร์
ดังนั้นในการสร้างตารางในฐานข้อมูล SQLite โดยใช้ python -
สร้างการเชื่อมต่อกับฐานข้อมูลโดยใช้เมธอด connect ()
สร้างวัตถุเคอร์เซอร์โดยเรียกใช้ cursor () วิธีการบนวัตถุการเชื่อมต่อที่สร้างไว้ด้านบน
ตอนนี้ดำเนินการคำสั่ง CREATE TABLE โดยใช้เมธอด execute () ของคลาส Cursor
ตัวอย่าง
ตัวอย่างต่อไปนี้สร้างตารางชื่อพนักงานและเติมข้อมูล จากนั้นใช้คำสั่ง where จะดึงข้อมูลที่มีค่าอายุน้อยกว่า 23
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
sql = '''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)'''
cursor.execute(sql)
#Populating the table
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama priya', 27, 'F', 9000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Vinay', 'Battacharya', 20, 'M', 6000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Sharukh', 'Sheik', 25, 'M', 8300)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Sarmista', 'Sharma', 26, 'F', 10000)''')
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Tripthi', 'Mishra', 24, 'F', 6000)''')
#Retrieving specific records using the where clause
cursor.execute("SELECT * from EMPLOYEE WHERE AGE <23")
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
เอาต์พุต
[('Vinay', 'Battacharya', 20, 'M', 6000.0)]
ในขณะที่ดึงข้อมูลโดยใช้แบบสอบถาม SELECT คุณจะได้รับระเบียนในลำดับเดียวกับที่คุณแทรกไว้
คุณสามารถจัดเรียงผลลัพธ์ตามลำดับที่ต้องการ (จากน้อยไปมากหรือมากไปหาน้อย) โดยใช้ไฟล์ Order Byอนุประโยค ตามค่าเริ่มต้นอนุประโยคนี้จะเรียงลำดับผลลัพธ์จากน้อยไปหามากหากคุณต้องการจัดเรียงจากมากไปหาน้อยคุณต้องใช้ "DESC" อย่างชัดเจน
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง ORDER BY ใน SQLite
SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];
ตัวอย่าง
สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
คำสั่ง SELECT ต่อไปนี้จะดึงข้อมูลแถวของตาราง CRICKETERS ตามลำดับจากน้อยไปหามาก -
sqlite> SELECT * FROM CRICKETERS ORDER BY AGE;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -----------
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
sqlite>
คุณสามารถใช้คอลัมน์มากกว่าหนึ่งคอลัมน์เพื่อจัดเรียงระเบียนของตาราง ต่อไปนี้งบเลือกเรียงลำดับระเบียนของตารางไส่ตามคอลัมน์อายุและFIRST_NAME
sqlite> SELECT * FROM CRICKETERS ORDER BY AGE, FIRST_NAME;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
sqlite>
โดยค่าเริ่มต้นไฟล์ ORDER BY อนุประโยคจัดเรียงระเบียนของตารางจากน้อยไปมากคุณสามารถจัดเรียงผลลัพธ์จากมากไปหาน้อยโดยใช้ DESC เป็น -
sqlite> SELECT * FROM CRICKETERS ORDER BY AGE DESC;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Kumara Sangakkara 41 Matale Srilanka
Jonathan Trott 38 CapeTown SouthAfrica
Shikhar Dhawan 33 Delhi India
Rohit Sharma 32 Nagpur India
Virat Kohli 30 Delhi India
sqlite>
ORDER BY Clause โดยใช้ Python
ในการดึงเนื้อหาของตารางตามลำดับที่ระบุให้เรียกใช้เมธอด execute () บนวัตถุเคอร์เซอร์และส่งคำสั่ง SELECT พร้อมกับคำสั่ง ORDER BY เป็นพารามิเตอร์ไป
ตัวอย่าง
ในตัวอย่างต่อไปนี้เรากำลังสร้างตารางที่มีชื่อและพนักงานเติมข้อมูลและดึงข้อมูลกลับมาตามลำดับอายุ (จากน้อยไปมาก) โดยใช้คำสั่ง ORDER BY
import psycopg2
#establishing the connection
conn = psycopg2.connect(
database="mydb", user='postgres', password='password', host='127.0.0.1', port= '5432'
)
#Setting auto commit false
conn.autocommit = True
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating a table
sql = '''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT, SEX CHAR(1),
INCOME INT,
CONTACT INT
)'''
cursor.execute(sql)
#Populating the table
#Populating the table
cursor.execute(
'''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama priya', 27, 'F', 9000),
('Vinay', 'Battacharya', 20, 'M', 6000),
('Sharukh', 'Sheik', 25, 'M', 8300),
('Sarmista', 'Sharma', 26, 'F', 10000),
('Tripthi', 'Mishra', 24, 'F', 6000)''')
conn.commit()
#Retrieving specific records using the ORDER BY clause
cursor.execute("SELECT * from EMPLOYEE ORDER BY AGE")
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
เอาต์พุต
[
('Vinay', 'Battacharya', 20, 'M', 6000, None),
('Tripthi', 'Mishra', 24, 'F', 6000, None),
('Sharukh', 'Sheik', 25, 'M', 8300, None),
('Sarmista', 'Sharma', 26, 'F', 10000, None),
('Ramya', 'Rama priya', 27, 'F', 9000, None)
]
การดำเนินการ UPDATE บนฐานข้อมูลใด ๆ หมายถึงการปรับเปลี่ยนค่าของระเบียนหนึ่งรายการหรือมากกว่าของตารางซึ่งมีอยู่แล้วในฐานข้อมูล คุณสามารถอัปเดตค่าของระเบียนที่มีอยู่ใน SQLite โดยใช้คำสั่ง UPDATE
ในการอัปเดตแถวเฉพาะคุณต้องใช้คำสั่ง WHERE ควบคู่ไปด้วย
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง UPDATE ใน SQLite -
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
ตัวอย่าง
สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
คำชี้แจงต่อไปนี้แก้ไขอายุของนักคริกเก็ตซึ่งมีชื่อจริงคือ Shikhar -
sqlite> UPDATE CRICKETERS SET AGE = 45 WHERE FIRST_NAME = 'Shikhar' ;
sqlite>
หากคุณเรียกดูบันทึกที่ FIRST_NAME เป็น Shikhar คุณสังเกตว่าค่าอายุเปลี่ยนเป็น 45 -
sqlite> SELECT * FROM CRICKETERS WHERE FIRST_NAME = 'Shikhar';
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- --------
Shikhar Dhawan 45 Delhi India
sqlite>
หากคุณไม่ได้ใช้ค่าคำสั่ง WHERE ของระเบียนทั้งหมดจะได้รับการอัปเดต คำสั่ง UPDATE ต่อไปนี้จะเพิ่มอายุของระเบียนทั้งหมดในตาราง CRICKETERS ขึ้น 1 -
sqlite> UPDATE CRICKETERS SET AGE = AGE+1;
sqlite>
หากคุณดึงเนื้อหาของตารางโดยใช้คำสั่ง SELECT คุณจะเห็นค่าที่อัพเดตเป็น -
sqlite> SELECT * FROM CRICKETERS;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Shikhar Dhawan 46 Delhi India
Jonathan Trott 39 CapeTown SouthAfrica
Kumara Sangakkara 42 Matale Srilanka
Virat Kohli 31 Delhi India
Rohit Sharma 33 Nagpur India
sqlite>
การอัปเดตระเบียนที่มีอยู่โดยใช้ Python
ในการเพิ่มระเบียนลงในตารางที่มีอยู่ในฐานข้อมูล SQLite -
นำเข้าแพ็คเกจ sqlite3
สร้างอ็อบเจ็กต์การเชื่อมต่อโดยใช้เมธอด connect () โดยส่งชื่อของฐานข้อมูลเป็นพารามิเตอร์ไป
cursor()วิธีการส่งคืนวัตถุเคอร์เซอร์ที่คุณสามารถสื่อสารกับ SQLite3 สร้างวัตถุเคอร์เซอร์โดยเรียกใช้เคอร์เซอร์ () วัตถุบนวัตถุการเชื่อมต่อ (สร้างด้านบน)
จากนั้นเรียกใช้เมธอด execute () บนวัตถุเคอร์เซอร์โดยส่งคำสั่ง UPDATE เป็นพารามิเตอร์ไป
ตัวอย่าง
ทำตามตัวอย่าง Python สร้างตารางที่มีชื่อ EMPLOYEE แทรก 5 ระเบียนเข้าไปและเพิ่มอายุของพนักงานชายทั้งหมด 1 -
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
#Creating table as per requirement
sql ='''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)'''
cursor.execute(sql)
#Inserting data
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama priya', 27, 'F', 9000),
('Vinay', 'Battacharya', 20, 'M', 6000),
('Sharukh', 'Sheik', 25, 'M', 8300),
('Sarmista', 'Sharma', 26, 'F', 10000),
('Tripthi', 'Mishra', 24, 'F', 6000)''')
conn.commit()
#Fetching all the rows before the update
print("Contents of the Employee table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())
#Updating the records
sql = '''UPDATE EMPLOYEE SET AGE=AGE+1 WHERE SEX = 'M' '''
cursor.execute(sql)
print("Table updated...... ")
#Fetching all the rows after the update
print("Contents of the Employee table after the update operation: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
เอาต์พุต
Contents of the Employee table:
[
('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 20, 'M', 6000.0),
('Sharukh', 'Sheik', 25, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Table updated......
Contents of the Employee table after the update operation:
[
('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 21, 'M', 6000.0),
('Sharukh', 'Sheik', 26, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
ในการลบระเบียนจากตาราง SQLite คุณต้องใช้คำสั่ง DELETE FROM ในการลบระเบียนเฉพาะคุณต้องใช้ WHERE clause ควบคู่ไปด้วย
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของแบบสอบถาม DELETE ใน SQLite -
DELETE FROM table_name [WHERE Clause]
ตัวอย่าง
สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
คำสั่งต่อไปนี้จะลบบันทึกของนักคริกเก็ตที่มีนามสกุล 'Sangakkara'
sqlite> DELETE FROM CRICKETERS WHERE LAST_NAME = 'Sangakkara';
sqlite>
หากคุณดึงเนื้อหาของตารางโดยใช้คำสั่ง SELECT คุณจะเห็นเพียง 4 ระเบียนเนื่องจากเราได้ลบไปแล้ว
sqlite> SELECT * FROM CRICKETERS;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- --------
Shikhar Dhawan 46 Delhi India
Jonathan Trott 39 CapeTown SouthAfrica
Virat Kohli 31 Delhi India
Rohit Sharma 33 Nagpur India
sqlite>
หากคุณดำเนินการคำสั่ง DELETE FROM โดยไม่มีคำสั่ง WHERE ระเบียนทั้งหมดจากตารางที่ระบุจะถูกลบ
sqlite> DELETE FROM CRICKETERS;
sqlite>
เนื่องจากคุณได้ลบบันทึกทั้งหมดแล้วหากคุณพยายามดึงเนื้อหาของตาราง CRICKETERS โดยใช้คำสั่ง SELECT คุณจะได้ผลลัพธ์ที่ว่างเปล่าตามที่แสดงด้านล่าง -
sqlite> SELECT * FROM CRICKETERS;
sqlite>
การลบข้อมูลโดยใช้ Python
ในการเพิ่มระเบียนลงในตารางที่มีอยู่ในฐานข้อมูล SQLite -
นำเข้าแพ็คเกจ sqlite3
สร้างอ็อบเจ็กต์การเชื่อมต่อโดยใช้เมธอดconnect ()โดยส่งชื่อของฐานข้อมูลเป็นพารามิเตอร์ไป
cursor()วิธีการส่งคืนวัตถุเคอร์เซอร์ที่คุณสามารถสื่อสารกับ SQLite3 สร้างวัตถุเคอร์เซอร์โดยเรียกใช้เคอร์เซอร์ () วัตถุบนวัตถุการเชื่อมต่อ (สร้างด้านบน)
จากนั้นเรียกใช้เมธอด execute () บนวัตถุเคอร์เซอร์โดยส่งไฟล์ DELETE คำสั่งเป็นพารามิเตอร์ของมัน
ตัวอย่าง
ตัวอย่าง python ต่อไปนี้จะลบบันทึกจากตาราง EMPLOYEE ที่มีค่าอายุมากกว่า 25
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving contents of the table
print("Contents of the table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())
#Deleting records
cursor.execute('''DELETE FROM EMPLOYEE WHERE AGE > 25''')
#Retrieving data after delete
print("Contents of the table after delete operation ")
cursor.execute("SELECT * from EMPLOYEE")
print(cursor.fetchall())
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
เอาต์พุต
Contents of the table:
[
('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 21, 'M', 6000.0),
('Sharukh', 'Sheik', 26, 'M', 8300.0),
('Sarmista', 'Sharma', 26, 'F', 10000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Contents of the table after delete operation
[
('Vinay', 'Battacharya', 21, 'M', 6000.0),
('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
คุณสามารถลบทั้งตารางโดยใช้คำสั่ง DROP TABLE คุณต้องระบุชื่อของตารางที่คุณต้องการลบ
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง DROP TABLE ใน PostgreSQL -
DROP TABLE table_name;
ตัวอย่าง
สมมติว่าเราได้สร้างตารางสองตารางโดยใช้ชื่อ CRICKETERS และ EMPLOYEES โดยใช้คำค้นหาต่อไปนี้ -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255), Last_Name VARCHAR(255), Age int,
Place_Of_Birth VARCHAR(255), Country VARCHAR(255)
);
sqlite> CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT,
SEX CHAR(1), INCOME FLOAT
);
sqlite>
ตอนนี้ถ้าคุณตรวจสอบรายการตารางโดยใช้ไฟล์ .tables คำสั่งคุณสามารถดูตารางที่สร้างไว้ด้านบน (รายการ) เป็น -
sqlite> .tables
CRICKETERS EMPLOYEE
sqlite>
คำสั่งต่อไปนี้จะลบตารางชื่อพนักงานออกจากฐานข้อมูล -
sqlite> DROP table employee;
sqlite>
เนื่องจากคุณได้ลบตารางพนักงานไปแล้วหากคุณเรียกดูรายการตารางอีกครั้งคุณสามารถสังเกตได้เพียงตารางเดียวในตารางนั้น
sqlite> .tables
CRICKETERS
sqlite>
หากคุณพยายามลบตารางพนักงานอีกครั้งเนื่องจากคุณได้ลบไปแล้วคุณจะได้รับข้อผิดพลาดว่า“ ไม่มีตารางดังกล่าว” ดังที่แสดงด้านล่าง -
sqlite> DROP table employee;
Error: no such table: employee
sqlite>
ในการแก้ไขปัญหานี้คุณสามารถใช้คำสั่ง IF EXISTS ร่วมกับคำสั่ง DELETE สิ่งนี้จะลบตารางหากมีอยู่มิฉะนั้นจะข้ามการดำเนินการ DELETE
sqlite> DROP table IF EXISTS employee;
sqlite>
การวางตารางโดยใช้ Python
คุณสามารถวางตารางได้ทุกเมื่อที่ต้องการโดยใช้คำสั่ง DROP ของ MYSQL แต่คุณต้องระมัดระวังให้มากในขณะที่ลบตารางที่มีอยู่เนื่องจากข้อมูลที่สูญหายจะไม่สามารถกู้คืนได้หลังจากลบตาราง
ตัวอย่าง
ในการวางตารางจากฐานข้อมูล SQLite3 โดยใช้ python ให้เรียกใช้ไฟล์ execute() วิธีการบนวัตถุเคอร์เซอร์และส่งผ่านคำสั่ง drop เป็นพารามิเตอร์ไป
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Doping EMPLOYEE table if already exists
cursor.execute("DROP TABLE emp")
print("Table dropped... ")
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
เอาต์พุต
Table dropped...
ในขณะที่เรียกระเบียนหากคุณต้องการ จำกัด ด้วยจำนวนเฉพาะคุณสามารถทำได้โดยใช้ประโยค LIMIT ของ SQLite
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของประโยค LIMIT ใน SQLite -
SELECT column1, column2, columnN
FROM table_name
LIMIT [no of rows]
ตัวอย่าง
สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
และถ้าเราใส่ 5 ระเบียนเข้าไปโดยใช้คำสั่ง INSERT เป็น -
sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>
คำสั่งต่อไปนี้ดึงข้อมูล 3 ระเบียนแรกของตาราง Cricketers โดยใช้ประโยค LIMIT -
sqlite> SELECT * FROM CRICKETERS LIMIT 3;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- -------------
Shikhar Dhawan 33 Delhi India
Jonathan Trott 38 CapeTown SouthAfrica
Kumara Sangakkara 41 Matale Srilanka
sqlite>
หากคุณต้องการ จำกัด ระเบียนโดยเริ่มจากระเบียนที่ n (ไม่ใช่ 1 st ) คุณสามารถทำได้โดยใช้ OFFSET ร่วมกับ LIMIT
sqlite> SELECT * FROM CRICKETERS LIMIT 3 OFFSET 2;
First_Name Last_Name Age Place_Of_B Country
---------- ---------- ---- ---------- --------
Kumara Sangakkara 41 Matale Srilanka
Virat Kohli 30 Delhi India
Rohit Sharma 32 Nagpur India
sqlite>
LIMIT Clause โดยใช้ Python
หากคุณเรียกใช้เมธอด execute () บนวัตถุเคอร์เซอร์โดยส่งแบบสอบถาม SELECT พร้อมกับประโยค LIMIT คุณสามารถดึงข้อมูลตามจำนวนที่ต้องการได้
ตัวอย่าง
ตัวอย่าง python ต่อไปนี้จะดึงข้อมูลสองระเบียนแรกของตาราง EMPLOYEE โดยใช้ประโยค LIMIT
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving single row
sql = '''SELECT * from EMPLOYEE LIMIT 3'''
#Executing the query
cursor.execute(sql)
#Fetching the data
result = cursor.fetchall();
print(result)
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
เอาต์พุต
[
('Ramya', 'Rama priya', 27, 'F', 9000.0),
('Vinay', 'Battacharya', 20, 'M', 6000.0),
('Sharukh', 'Sheik', 25, 'M', 8300.0)
]
เมื่อคุณแบ่งข้อมูลออกเป็นสองตารางคุณสามารถดึงเรกคอร์ดที่รวมกันจากสองตารางนี้โดยใช้ Joins
ตัวอย่าง
สมมติว่าเราได้สร้างตารางที่มีชื่อ CRICKETERS โดยใช้แบบสอบถามต่อไปนี้ -
sqlite> CREATE TABLE CRICKETERS (
First_Name VARCHAR(255),
Last_Name VARCHAR(255),
Age int,
Place_Of_Birth VARCHAR(255),
Country VARCHAR(255)
);
sqlite>
ให้เราสร้าง OdiStats อีกหนึ่งตารางที่อธิบายสถิติคริกเก็ตหนึ่งวันของผู้เล่นแต่ละคนในตาราง CRICKETERS
sqlite> CREATE TABLE ODIStats (
First_Name VARCHAR(255),
Matches INT,
Runs INT,
AVG FLOAT,
Centuries INT,
HalfCenturies INT
);
sqlite>
คำสั่งต่อไปนี้ดึงข้อมูลที่รวมค่าในสองตารางนี้ -
sqlite> SELECT
Cricketers.First_Name, Cricketers.Last_Name, Cricketers.Country,
OdiStats.matches, OdiStats.runs, OdiStats.centuries, OdiStats.halfcenturies
from Cricketers INNER JOIN OdiStats ON Cricketers.First_Name = OdiStats.First_Name;
First_Name Last_Name Country Matches Runs Centuries HalfCenturies
---------- ---------- ------- ------- ---- --------- --------------
Shikhar Dhawan Indi 133 5518 17 27
Jonathan Trott Sout 68 2819 4 22
Kumara Sangakkara Sril 404 14234 25 93
Virat Kohli Indi 239 11520 43 54
Rohit Sharma Indi 218 8686 24 42
sqlite>
เข้าร่วม Clause โดยใช้ Python
ต่อไปนี้ตัวอย่าง SQLite แสดงส่วนคำสั่ง JOIN โดยใช้ python -
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
#Retrieving data
sql = '''SELECT * from EMP INNER JOIN CONTACT ON EMP.CONTACT = CONTACT.ID'''
#Executing the query
cursor.execute(sql)
#Fetching 1st row from the table
result = cursor.fetchall();
print(result)
#Commit your changes in the database
conn.commit()
#Closing the connection
conn.close()
เอาต์พุต
[
('Ramya', 'Rama priya', 27, 'F', 9000.0, 101, 101, '[email protected]', 'Hyderabad'),
('Vinay', 'Battacharya', 20, 'M', 6000.0, 102, 102,'[email protected]', 'Vishakhapatnam'),
('Sharukh', 'Sheik', 25, 'M', 8300.0, 103, 103, '[email protected]', 'Pune'),
('Sarmista', 'Sharma', 26, 'F', 10000.0, 104, 104, '[email protected]', 'Mumbai')
]
คลาส sqlite3.Cursor เป็นอินสแตนซ์ที่คุณสามารถเรียกใช้เมธอดที่รันคำสั่ง SQLite ดึงข้อมูลจากชุดผลลัพธ์ของคิวรี คุณสามารถสร้างวัตถุเคอร์เซอร์โดยใช้เคอร์เซอร์ () วิธีการของวัตถุ / คลาสการเชื่อมต่อ
ตัวอย่าง
import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')
#Creating a cursor object using the cursor() method
cursor = conn.cursor()
วิธีการ
ต่อไปนี้เป็นวิธีการต่างๆที่จัดเตรียมโดยคลาส / อ็อบเจ็กต์ Cursor
วิธี | คำอธิบาย |
---|---|
ดำเนินการ () | รูทีนนี้รันคำสั่ง SQL คำสั่ง SQL อาจถูกกำหนดพารามิเตอร์ (เช่นตัวยึดแทนตัวอักษร SQL) โมดูล psycopg2 รองรับตัวยึดตำแหน่งโดยใช้เครื่องหมาย% s ตัวอย่างเช่น cursor.execute ("insert into people values (% s,% s)", (who, age)) |
ประหารชีวิต () | รูทีนนี้เรียกใช้คำสั่ง SQL กับลำดับพารามิเตอร์หรือการแม็พทั้งหมดที่พบในลำดับ sql |
fetchone () | วิธีนี้จะดึงข้อมูลแถวถัดไปของชุดผลลัพธ์คิวรีส่งคืนลำดับเดียวหรือไม่มีเมื่อไม่มีข้อมูลเพิ่มเติม |
fetchmany () | รูทีนนี้ดึงข้อมูลชุดถัดไปของผลลัพธ์คิวรีโดยส่งคืนรายการ รายการว่างจะถูกส่งกลับเมื่อไม่มีแถวเพิ่มเติม วิธีนี้พยายามดึงข้อมูลหลายแถวตามที่ระบุโดยพารามิเตอร์ขนาด |
fetchall () | รูทีนนี้ดึงข้อมูลแถวทั้งหมด (ที่เหลือ) ของผลลัพธ์คิวรีโดยส่งคืนรายการ รายการว่างจะถูกส่งกลับเมื่อไม่มีแถว |
คุณสมบัติ
ต่อไปนี้เป็นคุณสมบัติของคลาส Cursor -
วิธี | คำอธิบาย |
---|---|
arraySize | นี่คือคุณสมบัติอ่าน / เขียนที่คุณสามารถกำหนดจำนวนแถวที่ส่งคืนโดยวิธีการ fetchmany () |
คำอธิบาย | นี่เป็นคุณสมบัติแบบอ่านอย่างเดียวซึ่งส่งคืนรายการที่มีคำอธิบายของคอลัมน์ในชุดผลลัพธ์ |
lastrowid | นี่เป็นคุณสมบัติแบบอ่านอย่างเดียวหากมีคอลัมน์ที่เพิ่มขึ้นโดยอัตโนมัติในตารางค่านี้จะส่งคืนค่าที่สร้างขึ้นสำหรับคอลัมน์นั้นในการดำเนินการ INSERT หรือ UPDATE ล่าสุด |
rowcount | สิ่งนี้ส่งคืนจำนวนแถวที่ส่งคืน / อัปเดตในกรณีของการดำเนินการ SELECT และ UPDATE |
การเชื่อมต่อ | แอตทริบิวต์แบบอ่านอย่างเดียวนี้จัดเตรียมการเชื่อมต่อฐานข้อมูล SQLite ที่ใช้โดยวัตถุเคอร์เซอร์ |