나중에 책갈피에 추가할 궁극적인 SQL 치트 시트 [2022]
게시 됨: 2022-06-17SQL 또는 Structured Query Language 는 삭제, 생성, 업데이트, 읽기 등과 같은 관계형 데이터베이스 작업을 관리하기 위한 명령 집합입니다.
SQL은 1987년부터 관계형 데이터베이스에서 사용되는 국제 표준입니다. SQL 명령에는 네 가지 유형이 있습니다.
- 데이터 정의 언어(DDL) – 이 명령은 데이터베이스의 구조를 정의 합니다. 예를 들어 삭제, 이름 바꾸기, 변경 및 만들기가 있습니다. 데이터베이스 구조에 영향을 줍니다. 예를 들어, 데이터베이스를 생성하거나 테이블 이름을 변경합니다.
- 데이터 조작 언어(DML) – 이 명령은 데이터 작업에 사용됩니다. 예를 들어, 삽입, 선택, 업데이트, 삭제합니다. 이들은 테이블이나 데이터베이스 구조에 영향을 미치지 않지만 테이블에 있는 데이터에 영향을 줍니다. 예를 들어, 새 행을 삽입하거나 행의 값을 업데이트합니다.
- TCL(트랜잭션 제어 언어) – 이 명령은 데이터베이스의 트랜잭션 처리를 제어합니다. 예를 들어, 롤백, 저장, 커밋. 이러한 명령은 데이터베이스에 영구적인 영향을 미칩니다. 예를 들어, 한 프로세스가 실패하더라도 전체 트랜잭션을 이전 상태로 롤백합니다.
- 데이터 제어 언어(DCL) – 데이터 제어 명령은 사용자에게 권한을 부여하고 사용자 또는 그룹에 필요한 권한만 부여하는 데 사용됩니다. 예를 들어, 한 사용자는 읽기 전용 권한을 가질 수 있지만 다른 사용자는 읽기 및 쓰기 권한을 가질 수 있습니다. 액세스 제어는 부여, 거부 및 취소 명령을 사용하여 수행됩니다.
다음은 가장 유용한 명령이 포함된 SQL 치트 시트입니다. 치트 시트는 올바른 구문과 쿼리의 예상 결과로 필요한 명령을 빠르게 참조하는 데 도움이 됩니다. 이 치트 시트에서는 다른 두 가지 유형이 사용하기 매우 간단하므로 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과 함께 사용되는 논리 연산자로 모든 값이 하위 쿼리 조건을 만족하면 true를 반환합니다. | SELECT employee_name, joining_date from employee WHERE employee_id = ALL (select employee_id from department_details WHERE department = 'R&D'); |
그리고 | WHERE 절의 모든 조건이 충족되는 경우에만 true를 반환하는 논리 연산자입니다. | SELECT employee_name, salary from employee WHERE city = 'California' AND salary > 2000; |
어느 | 논리 연산자 하위 쿼리 값 중 하나라도 where 절의 조건을 만족하면 true를 반환합니다. | 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 | 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; |
사례 | 일련의 명령문으로 구성됩니다. true인 문의 값을 반환하고 조건이 충족되지 않으면 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; |
DESC | ORDER BY 절과 함께 사용되는 de sc 종료 순서로 데이터를 반환합니다. | SELECT employee_name, joining_date, salary from employee ORDER BY employee_name DESC; |
칼럼 삭제 | 지정된 테이블에서 지정된 열을 삭제합니다. | ALTER TABLE employee DROP COLUMN employee_name; |
데이터베이스 삭제 | 전체 데이터베이스를 삭제합니다. | DROP DATABASE movies_development; |
드롭 기본값 | 지정된 열의 기본값을 삭제합니다. | ALTER TABLE employee ALTER COLUMN is_available DROP DEFAULT; |
드롭 테이블 | 지정된 테이블을 삭제합니다. | DROP TABLE employee; |
존재 | 하위 쿼리에 레코드가 있는지 확인하고 하나 이상의 결과가 있으면 true를 반환합니다. | 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; |
에 | 여러 OR 조건을 사용하는 대신 WHERE 절에서 한 번에 여러 값을 선택하는 데 사용됩니다. | 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'); |
IS NULL | null 값 확인 | SELECT employee_id from employee where employee_name IS NULL; |
NULL이 아님 | 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'; |
또는 | where 절의 조건 중 하나가 충족되면 true를 반환합니다. | SELECT * from employee where country = 'India' OR country = 'Australia'; |
주문 | 결과를 오름차순(기본값) 또는 쿼리에 지정된 순서( 오름차순 또는 내림차순 )로 정렬합니다. | 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; |
약간 | 하위 쿼리의 조건 중 하나가 충족되면 true를 반환합니다. SOME은 ANY 명령과 유사합니다. | 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 명령과 함께 사용 | 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'; |
최대 | 지정된 열의 가장 큰 값을 반환합니다. | SELECT MAX(quantity), product_name from inventory; |
세다 | 쿼리를 만족하는 행의 수를 반환합니다. | 직원 테이블의 총 레코드 수를 표시합니다.SELECT COUNT(*) from employee; 급여가 20000보다 큰 직원의 수를 표시하십시오. SELECT COUNT(*) from employee where salary > 20000; |
합집합 | 지정된 숫자 열 값의 합계를 반환합니다. | SELECT SUM(marks) from students where subject = 'English'; |
SQL 조인
SQL 조인은 여러 테이블의 데이터를 연결하고 필터링하기 때문에 매우 중요합니다. 조인은 약간 까다로우며 제대로 실행되지 않으면 예기치 않은 결과를 초래할 수 있습니다. 아래 표는 4가지 유형의 SQL 조인을 빠르게 참조하는 데 도움이 됩니다.
조인 유형 | 설명 | 통사론 | 예시 |
내부 조인 | 조인된 테이블에서 일치하는 레코드를 반환합니다. 교차로와 비슷합니다. | SELECT column1, column2… from table1 INNER JOIN table2 on 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; |
전체(외부) 조인 | 왼쪽 또는 오른쪽에 일치하는 모든 레코드를 반환합니다. 노조와 비슷합니다. | SELECT column1, column2… from table1 FULL OUTER JOIN table2 on 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; |
왼쪽 조인 | 왼쪽 테이블의 모든 레코드와 오른쪽 테이블의 기준과 일치하는 레코드를 반환합니다. | SELECT column1, column2… from table1 LEFT JOIN table2 on 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; |
오른쪽 조인 | 오른쪽 테이블의 모든 레코드와 왼쪽 테이블의 기준과 일치하는 레코드를 반환합니다. | SELECT column1, column2… from table1 RIGHT JOIN table2 on 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 치트 시트
Intellipaat: SQL 명령 치트 시트
WebsiteSetup: SQL 치트 시트
ProgrammingWithMosh: SQL 치트 시트
PostgreSQL 치트 시트