สุดยอด SQL Cheat Sheet เพื่อคั่นหน้าสำหรับภายหลัง [2022]

เผยแพร่แล้ว: 2022-06-17

SQL หรือ 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;
แผ่นโกงคำสั่ง SQL เพื่อการอ้างอิงอย่างรวดเร็ว

ฟังก์ชันรวม

ฟังก์ชันรวมคือคำสั่งจัดการข้อมูลที่ทำงานบนคอลัมน์ตัวเลข เช่น 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