สุดยอด SQL Cheat Sheet เพื่อคั่นหน้าสำหรับภายหลัง [2022]
เผยแพร่แล้ว: 2022-06-17SQL หรือ S tructured Q uery L anguage เป็นชุดคำสั่งสำหรับจัดการการดำเนินการฐานข้อมูลเชิงสัมพันธ์ เช่น ลบ สร้าง อัปเดต อ่าน และอื่นๆ
SQL เป็นมาตรฐานสากลที่ใช้โดยฐานข้อมูลเชิงสัมพันธ์ตั้งแต่ปี 1987 คำสั่ง SQL มีสี่ประเภท:
- Data Definition Language (DDL) – คำสั่งเหล่านี้ กำหนด โครงสร้างของฐานข้อมูล เช่น ดรอป เปลี่ยนชื่อ เปลี่ยนแปลง และสร้าง ส่งผลต่อโครงสร้างฐานข้อมูล ตัวอย่างเช่น การสร้างฐานข้อมูลหรือเปลี่ยนชื่อตาราง
- ภาษาการจัดการข้อมูล (DML) – คำสั่งเหล่านี้ใช้เพื่อทำงานกับข้อมูล เช่น แทรก เลือก ปรับปรุง ลบ สิ่งเหล่านี้ไม่ส่งผลต่อตารางหรือโครงสร้างฐานข้อมูล แต่ข้อมูลที่มีอยู่ในตาราง ตัวอย่างเช่น การแทรกแถวใหม่ หรือการอัปเดตค่าในแถว
- ภาษาควบคุมธุรกรรม (TCL) – คำสั่งเหล่านี้ควบคุมการประมวลผลธุรกรรมในฐานข้อมูล เช่น ย้อนกลับ บันทึก คอมมิต คำสั่งเหล่านี้มีผลถาวรกับฐานข้อมูล ตัวอย่างเช่น การย้อนกลับธุรกรรมทั้งหมดเป็นสถานะก่อนหน้า แม้ว่ากระบวนการหนึ่งจะล้มเหลว
- ภาษาควบคุมข้อมูล (DCL) – คำสั่งควบคุมข้อมูลใช้เพื่ออนุญาตผู้ใช้และให้สิทธิ์ที่จำเป็นแก่ผู้ใช้หรือกลุ่มเท่านั้น ตัวอย่างเช่น ผู้ใช้รายหนึ่งมีสิทธิ์อ่านอย่างเดียว ในขณะที่ผู้ใช้รายอื่นสามารถอ่านและเขียนได้ การควบคุมการเข้าถึงทำได้โดยใช้คำสั่งอนุญาต ปฏิเสธ และเพิกถอน
ด้านล่างนี้คือชีต SQL Cheat ที่มีคำสั่งที่มีประโยชน์ที่สุด แผ่นโกงจะช่วยให้คุณอ้างอิงคำสั่งที่จำเป็นได้อย่างรวดเร็วด้วยไวยากรณ์ที่ถูกต้องและผลลัพธ์ที่คาดหวังของแบบสอบถาม ในเอกสารสรุปนี้ เราเน้นที่คำสั่ง DDL และ DML เนื่องจากอีกสองประเภทนั้นใช้งานได้ค่อนข้างตรงไปตรงมา
คำจำกัดความของข้อมูลและแบบสอบถามการจัดการ
สั่งการ | คำอธิบาย | ตัวอย่าง |
เพิ่ม | เพิ่มคอลัมน์หรือข้อจำกัด (ตามที่ระบุ) ให้กับตารางที่มีอยู่ | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee ADD CONSTRAINT emp_det PRIMARY KEY (id, last_name); |
เปลี่ยนตาราง | เปลี่ยนตารางที่ระบุเพื่อเพิ่ม อัปเดต หรือลบคอลัมน์ของตาราง | ALTER TABLE employee ADD last_name varchar2(255); ALTER TABLE employee DROP COLUMN last_name; |
แก้ไขคอลัมน์ | เปลี่ยนชนิดข้อมูลของคอลัมน์ ตัวอย่างเช่น หากต้องการเปลี่ยนประเภทคอลัมน์ join_date ของตารางพนักงานจาก varchar2 เป็น datetime | ALTER TABLE employee ALTER COLUMN joining_date datetime; |
ทั้งหมด | ตัวดำเนินการเชิงตรรกะที่ใช้กับ SELECT, WHERE และ HAVING และคืนค่า จริง หากค่าทั้งหมดเป็นไปตามเงื่อนไขการสืบค้นย่อย | SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D'); |
และ | ตัวดำเนินการเชิงตรรกะซึ่งคืนค่า จริง ต่อเมื่อเงื่อนไขทั้งหมดในส่วนคำสั่ง WHERE เป็นที่พอใจเท่านั้น | SELECT employee_name, salary from employee WHERE city = 'California' AND salary > 2000; |
ใดๆ | ตัวดำเนินการเชิงตรรกะ คืนค่า จริง หากค่าแบบสอบถามย่อยแม้แต่ค่าใดค่าหนึ่งตรงตามเงื่อนไขโดยที่ clause | SELECT employee_id, employee_name from employee WHERE employee_id = ANY (select employee_id from department_details WHERE department = 'HR' OR department = 'R&D'); |
เช่น | สร้างนามแฝงสำหรับตารางหรือคอลัมน์จนถึงเวลาดำเนินการค้นหา ซึ่งมีประโยชน์เมื่อใช้ชื่อหลายครั้ง โดยเฉพาะในระหว่างการรวมตาราง | SELECT count(employee_id) AS employees_from_houston from employee WHERE city = 'Houston'; |
ASC | ส่งกลับข้อมูลในลำดับสิ้นสุดของ asc ใช้กับคำสั่งย่อย ORDER BY ORDER BY เองจะเรียงลำดับผลลัพธ์จากน้อยไปมากตามค่าเริ่มต้น | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name ASC; |
ระหว่าง | เพื่อเลือกค่าภายในช่วง | SELECT employee_name, joining_date, department_id from employee WHERE salary BETWEEN 40000 AND 100000; |
กรณี | ประกอบด้วยชุดคำสั่ง; ส่งคืนค่าของคำสั่งที่เป็นจริง หากไม่มีเงื่อนไขใดๆ ตรงตามเงื่อนไข เงื่อนไขในส่วน ELSE จะถูกดำเนินการ หากไม่มีอย่างอื่น ให้คืนค่า NULL | SELECT order_amount, customer_id, contact_email CASE WHEN order_amount > 3000 THEN "Eligible for 40% discount" WHEN order_amount between 2000 and 3000 THEN "Eligible for 25% discount" ELSE "Eligible for 5% discount" END FROM order_details; |
สร้างฐานข้อมูล | สร้างฐานข้อมูลใหม่ด้วยชื่อที่ระบุ | CREATE DATABASE movies_development; |
สร้างตาราง | สร้างตารางใหม่ด้วยชื่อตารางและชื่อคอลัมน์และประเภท | CREATE TABLE movie_info (movie_name varchar2(255), release_date datetime, lead_actor varchar2(255), music_director varchar2(255)); |
ค่าเริ่มต้น | ตั้งค่าเริ่มต้นสำหรับคอลัมน์ที่ระบุ ใช้กับคำสั่ง CREATE หรือ ALTER TABLE | CREATE TABLE employee (joining_date SET DEFAULT CURRENT_DATE); ALTER TABLE product ALTER is_available SET DEFAULT true; |
ลบ | ลบข้อมูลออกจากตารางที่ระบุ | DELETE from employee where employee_id = 345; |
รายละเอียด | ส่งกลับข้อมูลในลำดับสิ้นสุด de sc ที่ใช้กับคำสั่งย่อย ORDER BY | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC; |
DROP COLUMN | ลบคอลัมน์ที่ระบุออกจากตารางที่ระบุ | ALTER TABLE employee DROP COLUMN employee_name; |
วางฐานข้อมูล | ลบฐานข้อมูลทั้งหมด | DROP DATABASE movies_development; |
วางค่าเริ่มต้น | ลบค่าเริ่มต้นของคอลัมน์ที่ระบุ | ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT; |
วางตาราง | ลบตารางที่ระบุ | DROP TABLE employee; |
มีอยู่ | ตรวจสอบว่ามีเร็กคอร์ดหรือไม่ในแบบสอบถามย่อย และส่งกลับค่าจริงหากพบผลลัพธ์อย่างน้อยหนึ่งรายการ | SELECT employee_id, contact_number FROM employee WHERE EXISTS (SELECT employee_id, department FROM department WHERE employee_id = 345 AND department = 'HR'); |
จาก | ระบุตารางที่ควรเลือกหรือลบข้อมูล | SELECT * FROM employee; DELETE FROM employee where employee_id = 345; |
จัดกลุ่มโดย | จัดกลุ่มข้อมูลตามคอลัมน์ที่ระบุ ใช้สำหรับฟังก์ชันรวม | แสดงจำนวนพนักงานในแต่ละประเทศSELECT COUNT(employee_id), country from employee GROUP BY country; แสดงคะแนนเฉลี่ยของพนักงานในแต่ละแผนก SELECT AVG(rating), department from employee GROUP BY department; |
ใน | ใช้เพื่อเลือกหลายค่าพร้อมกันในส่วนคำสั่ง WHERE แทนที่จะใช้หลายเงื่อนไข OR | SELECT employee_name FROM employee WHERE country IN ('India', 'United Kingdom', 'Singapore', 'Australia'); |
ดัชนี | ดัชนีทำให้การสืบค้นข้อมูลมีประสิทธิภาพและรวดเร็วยิ่งขึ้น ดัชนีมักจะสร้างในคอลัมน์ที่มีการค้นหามากที่สุด | สร้างดัชนี:CREATE INDEX idx_employee ON employee (first_name, last_name); สร้างดัชนีเฉพาะที่ไม่สามารถทำซ้ำค่าได้: CREATE UNIQUE INDEX idx_employee ON employee (first_name, last_name); ลบดัชนี: ALTER TABLE employee DROP INDEX idx_employee; |
ใส่ลงใน | เพิ่มแถวใหม่ในตาราง | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
เป็นโมฆะ | ตรวจสอบค่าว่าง | SELECT employee_id from employee where employee_name IS NULL; |
ไม่เป็นโมฆะ | ตรวจสอบค่าที่ไม่ใช่ค่าว่าง | SELECT employee_id, core_skill from employee where core_skill IS NOT NULL; |
ชอบ | ส่งกลับค่าทั้งหมดที่ตรงกับรูปแบบที่กำหนด | SELECT employee_id, first_name, last_name where first_name LIKE '%tony'; |
ไม่ชอบ | ส่งกลับค่าทั้งหมดที่ไม่ตรงกับรูปแบบที่กำหนด | SELECT employee_id, first_name, last_name where first_name NOT LIKE '%tony'; |
หรือ | คืนค่า จริง หากเงื่อนไขใดเงื่อนไขหนึ่งในส่วนที่เป็นไปตามเงื่อนไข | SELECT * from employee where country = 'India' OR country = 'Australia'; |
สั่งโดย | เรียงลำดับผลลัพธ์จากน้อยไปหามาก (โดยค่าเริ่มต้น) หรือลำดับที่ระบุในแบบสอบถาม ( asc ending หรือ desc ending) | SELECT employee_name, salary from employee ORDER BY salary DESC; |
ROWNUM | ส่งกลับจำนวนแถวที่ระบุที่กล่าวถึงในส่วนคำสั่ง WHERE ของแบบสอบถาม | SELECT * from employee where ROWNUM <= 5; This will return the first five rows in the resultset. |
เลือก | เลือกคอลัมน์ที่กล่าวถึงของตารางตามเงื่อนไขที่กำหนด หากระบุ * ค่าคอลัมน์ทั้งหมดจะถูกส่งคืน | SELECT employee_id from employee; SELECT * from employee; |
เลือกเข้า | คัดลอกข้อมูลจากตารางต้นทางไปยังตารางปลายทางอื่น คุณสามารถเลือกคอลัมน์ทั้งหมด (*) หรือคอลัมน์เฉพาะ | SELECT * INTO new_employee_info FROM employee; SELECT employee_name, joining_date, core_skill INTO new_employee_info FROM employee; |
เลือกด้านบน | เลือกจำนวนระเบียนที่ระบุจากตาราง | SELECT TOP 5 employee_id from employee where employee_rating = 5; |
ชุด | ตั้งค่าของคอลัมน์เป็นค่าที่ระบุใหม่ระหว่างการดำเนินการ UPDATE | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
บาง | คืนค่า จริง หากเงื่อนไขข้อใดข้อหนึ่งในแบบสอบถามย่อยเป็นไปตามเงื่อนไข SOME คล้ายกับคำสั่งใด ๆ | SELECT employee_id, employee_name from employee WHERE salary > SOME (select salary from employee WHERE department = 'HR'); |
ตัดตาราง | ลบข้อมูลออกจากตาราง – จำไว้ว่าตารางจะไม่ถูกลบ | TRUNCATE TABLE log_info; |
ยูเนี่ยน | ส่งกลับค่าที่แตกต่างจาก 2 ตารางขึ้นไปที่เข้าร่วม หากต้องการรับค่าที่ซ้ำกัน ให้ใช้ UNION ALL | SELECT city from employee UNION SELECT city from office_locations; |
มีเอกลักษณ์ | เพิ่มข้อจำกัดเฉพาะให้กับคอลัมน์ที่ระบุ หมายความว่าคอลัมน์ต้องไม่มีค่าที่ซ้ำกัน สามารถใช้ระหว่างการสร้างตารางหรือแก้ไขคำสั่ง | CREATE TABLE employee (employee_id int NOT NULL, UNIQUE(employee_id)); ALTER TABLE employee ADD UNIQUE(employee_id); |
อัปเดต | อัปเดตค่าของคอลัมน์ที่ระบุด้วยค่าใหม่ | UPDATE employee SET first_name = 'Tony' WHERE employee_id = 345; |
ค่า | ใช้กับคำสั่ง INSERT เพื่อเพิ่มแถวใหม่ของค่าลงใน table | INSERT INTO employee (employee_id, employee_name, salary, core_skill) VALUES (451, 'Lee Cooper', 40000, 'Java'); |
ที่ไหน | เพิ่มเงื่อนไขเพื่อกรองชุดผลลัพธ์ของคำสั่ง select | SELECT * from employee WHERE salary > 20000; |
ฟังก์ชันรวม
ฟังก์ชันรวมคือคำสั่งจัดการข้อมูลที่ทำงานบนคอลัมน์ตัวเลข เช่น int และ float สิ่งเหล่านี้มีประโยชน์ในการกรองและเรียงลำดับข้อมูลที่ระดับฐานข้อมูลเอง ฟังก์ชันการรวมที่ใช้กันทั่วไป ได้แก่:

การทำงาน | คำอธิบาย | ตัวอย่าง |
AVG | ส่งกลับค่าเฉลี่ยของคอลัมน์ที่ระบุ | SELECT AVG(marks) from students where subject = 'English'; |
นาที | ส่งกลับค่าที่น้อยที่สุดของคอลัมน์ที่ระบุ | SELECT MIN(price) from product WHERE product_category = 'shoes'; |
MAX | ส่งกลับค่าสูงสุดของคอลัมน์ที่ระบุ | SELECT MAX(quantity), product_name from inventory; |
นับ | ส่งกลับจำนวนแถวที่ตรงกับแบบสอบถาม | แสดงจำนวนระเบียนทั้งหมดในตารางพนักงานSELECT COUNT(*) from employee; แสดงจำนวนพนักงานที่มีเงินเดือนมากกว่า 20000 SELECT COUNT(*) from employee where salary > 20000; |
SUM | ส่งกลับผลรวมของค่าของคอลัมน์ตัวเลขที่ระบุ | SELECT SUM(marks) from students where subject = 'English'; |
การรวม SQL
การรวม SQL มีความสำคัญมากเนื่องจากเชื่อมต่อและกรองข้อมูลจากหลายตาราง การรวมค่อนข้างยุ่งยากและอาจให้ผลลัพธ์ที่ไม่คาดคิด หากดำเนินการไม่ถูกต้อง ตารางด้านล่างจะช่วยให้คุณอ้างถึงการรวม SQL 4 ประเภทได้อย่างรวดเร็ว:
เข้าร่วมประเภท | คำอธิบาย | SYNTAX | ตัวอย่าง |
เข้าร่วมภายใน | ส่งกลับระเบียนที่ตรงกันในตารางที่เข้าร่วม มันคล้ายกับสี่แยก | เลือก column1, column2… จาก table1 INNER JOIN table2 บน table1.columnN = table2.columnN; | select c.customer_id, o.order_id, c.customer_phone from customer c INNER JOIN order o on c.customer_id = o.customer_id; |
เต็ม (นอก) เข้าร่วม | ส่งกลับระเบียนทั้งหมดที่มีการแข่งขันด้านใดด้านหนึ่ง – ซ้ายหรือขวา มันคล้ายกับสหภาพ | เลือก column1, column2… จาก table1 FULL OUTER JOIN table2 บน table1.columnN = table2.columnN; | select c.customer_id, o.order_id, c.customer_phone from customer c FULL OUTER JOIN order o on c.customer_id = o.customer_id; |
เข้าร่วมทางซ้าย | ส่งกลับระเบียนทั้งหมดจากตารางด้านซ้ายและระเบียนที่ตรงกับเกณฑ์ในตารางด้านขวา | เลือก column1, column2... จาก table1 LEFT JOIN table2 บน table1.columnN = table2.columnN; | select c.country_id, c.country_name, l.location_name from country c LEFT JOIN locations l on c.country_id = l.country_id; |
เข้าร่วมขวา | ส่งกลับระเบียนทั้งหมดจากตารางด้านขวาและระเบียนที่ตรงกับเกณฑ์ในตารางด้านซ้าย | เลือก column1, column2… จาก table1 RIGHT JOIN table2 บน table1.columnN = table2.columnN; | select c.country_id, c.country_name, l.location_name from country c RIGHT JOIN locations l on c.country_id = l.country_id; |
แหล่งข้อมูลเพิ่มเติม
SQL เป็นเครื่องมือที่สำคัญสำหรับนักพัฒนาซอฟต์แวร์ นักวิทยาศาสตร์ข้อมูล และนักวิเคราะห์ การอ้างอิงคำสั่ง SQL ที่มีประโยชน์ในรูปแบบของชีตชีตสามารถช่วยคุณประหยัดเวลาได้มาก และช่วยให้คุณเข้าใจผลลัพธ์ที่คาดหวังของคีย์เวิร์ดแต่ละคำ
สำหรับข้อมูลเพิ่มเติม โปรดดูแหล่งข้อมูลต่อไปนี้:
บทช่วยสอน SQL: SQL Cheat Sheet
Intellipaat: สูตรโกงคำสั่ง SQL
การตั้งค่าเว็บไซต์: SQL Cheat Sheet
ProgrammingWithMosh: SQL Cheat Sheet
PostgreSQL Cheat Sheet