[SQL] SQL 예시 정리

 정처기 준비하면서 정리한 SQL문 예시다.


1. DML

  • SELECT
SELECT column1, column2 FROM table_name;
SELECT 학면, 이름 FROM 학생 WHERE 학년 IN (3, 4);
SELECT DISTINCT 학년 FROM R1; //출력의 중복 제거
Code language: JavaScript (javascript)
SELECT * FROM 성적 ORDER BY 수학 DESC 과학 DESC;

  • INSERT
INSERT INTO table_name (column1, column2) VALUES (value1, value2);
INSERT INTO 학생(학번, 성명, 과목명, 전화번호) VALUES('202101', '임꺽정', '프로그래밍', '010-3456-7890');
Code language: JavaScript (javascript)

  • UPDATE
UPDATE table_name SET column1 = value1 WHERE condition;

  • DELETE
DELETE FROM table_name WHERE condition;
DELETE FROM 위인 WHERE 이름 = “이광수”; 
//( * 필요없음)
Code language: JavaScript (javascript)

2. DDL

  • CREATE
CREATE TABLE table_name (column1 datatype, column2 datatype);
CREATE TABLE NewBook(bookid INT,bookname VARCHAR(20),publisher VARCHAR(20), price INT); //INT = INTEGER
Code language: JavaScript (javascript)
CREATE VIEW 사원뷰 AS SELECT 사번, 이름 FROM 사원 WHERE 성별 = 'M';
Code language: PHP (php)
CREATE INDEX 학번인덱스 ON 학생(학번);
  • ALTER
ALTER TABLE table_name ADD column_name datatype;
ALTER TABLE SOOJEBI MODIFY SOOJEBI_NUM NUMBER(6);
ALTER TABLE 부서 MODIFY 부서번호 INTEGER PRIMARY KEY;
  • DROP
DROP TABLE table_name;
DROP VIEW 학생;
  • TRUNCATE
TRUNCATE TABLE table_name;

3. DCL

  • GRANT
GRANT privilege_type ON object_name TO user_name;
GRANT ALL ON STUDENT TO SOOJEBI_SYS WITH GRANT OPTION;
  • REVOKE
REVOKE privilege_type ON object_name FROM user_name;
REVOKE INSERT ON DEPT FROM 신민아; //DEPT는 테이블
Code language: JavaScript (javascript)

4. JOIN

가. 내부 조인

SELECT a.책번호 as 책번호, a.책명 as 책명, b.가격 as 가격 FROM 도서 a join 도서가격 b ON a.책번호=b.책번호;
Code language: JavaScript (javascript)

나. LEFT OUTER JOIN

SELECT a.자격증번호 as 자격증번호, a.자격증명 as 자격증명, b.응시로 as 응시료 from 자격증 
a LEFT OUTER JOIN 응시료 b ON a.자격증번호 = b.자격증번호;
Code language: JavaScript (javascript)

5. 와일드카드

  • LIKE
SELECT * FROM 사전 WHERE 단어 LIKE '_symmetry';
//와일드카드 : % [] [^] _ 등
Code language: JavaScript (javascript)
SELECT 학번 FROM 학생 WHERE 이름 LIKE “유%” ORDER BY 학년 DESC;

6. 집계함수

  • GROUP BY
SELECT 부서, SUM(급여) AS 급여합계 FROM 직원 GROUP BY 부서;
Code language: PHP (php)
  • HAVING
SELECT SUM(급여) AS 급여합계 FROM 급여 GROUP BY 부서 HAVING 급여합계 >= 6000;
Code language: PHP (php)
SELECT custid, COUNT(*) AS 도서수량 FROM orderTable WHERE saleprice >= 8000 GROUP BY custid HAVING COUNT(*) >= 2;
Code language: PHP (php)
SELECT 부서, SUM(급여) AS 급여합계 FROM 직원 GROUP BY 부서 HAVING 급여합계 ≥ 500;
Code language: PHP (php)
  • ROLLUP()
SELECT 학년, 반, AVG(점수) AS 점수 FROM 점수 GROUP BY ROLLUP(학년, 반);
Code language: PHP (php)

7. 순위함수

  • DENSE_RANK()
SELECT 이름, 수학, DENSE_RANK() OVER(ORDER BY 수학 DESC) AS 등수 FROM 점수 ORDER BY 수학 DESC; 
// 2등 세명 : 1 2 2 2 3
Code language: PHP (php)
  • RANK()
SELECT 이름, 수학, RANK() OVER(ORDER BY 수학 DESC) AS 등급 FROM 점수 ORDER BY 수학 DESC;
// 2등 세명 : 1 2 2 2 5
Code language: PHP (php)
  • ROW_NUMBER()
SELECT 이름, 수학, ROW_NUMBER() OVER(ORDER BY 수학 DESC) AS 등급 FROM 점수 ORDER BY 수학 DESC;
// 2등 한명 : 1 2 3 4 5
Code language: PHP (php)

전치사 정리

쉽게 암기하기 위해서 정리한 부분입니다.

다소 부정확한 정보가 포함되어 있을 수 있습니다.

더보기

DML, DDL, DCL은 기본적으로 전치사를 공유하지 않는다.

단, FROM과 ON은 공유한다. (FROM – SELECT, DELETE, GRANT)(ON – JOIN, CREATE, GRANT, REVOKE)

ON과 FROM을 제외하면 공유되는 키워드는 없다.

  • INTO (INSERT) ↔ TO (GRANT)
  • INTO VALUES (INSERT)
  • SET (UPDATE)
  • TABLE (CREATE, ALTER, DROP)
  • FROM WHERE (SELECT, DELETE)
  • INDEX ON (CREATE)
  • ON TO (GRANT)
  • ON FROM (REVOKE)

댓글 남기기