[SQL] SQL 예시 정리

2023. 8. 29. 14:00BE/DB

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


1. DML

 

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

 

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

 

  • UPDATE
UPDATE table_name SET column1 = value1 WHERE condition;

 

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

 


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
CREATE VIEW 사원뷰 AS SELECT 사번, 이름 FROM 사원 WHERE 성별 = 'M';
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는 테이블

 


4. JOIN

 

가. 내부 조인

SELECT a.책번호 as 책번호, a.책명 as 책명, b.가격 as 가격 FROM 도서 a join 도서가격 b ON a.책번호=b.책번호;

 

나. LEFT OUTER JOIN

SELECT a.자격증번호 as 자격증번호, a.자격증명 as 자격증명, b.응시로 as 응시료 from 자격증 
a LEFT OUTER JOIN 응시료 b ON a.자격증번호 = b.자격증번호;

 


5. 와일드카드

 

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

 


6. 집계함수

 

  • GROUP BY
SELECT 부서, SUM(급여) AS 급여합계 FROM 직원 GROUP BY 부서;

 

  • HAVING
SELECT SUM(급여) AS 급여합계 FROM 급여 GROUP BY 부서 HAVING 급여합계 >= 6000;
SELECT custid, COUNT(*) AS 도서수량 FROM orderTable WHERE saleprice >= 8000 GROUP BY custid HAVING COUNT(*) >= 2;
SELECT 부서, SUM(급여) AS 급여합계 FROM 직원 GROUP BY 부서 HAVING 급여합계 ≥ 500;

 

  • ROLLUP()
SELECT 학년, 반, AVG(점수) AS 점수 FROM 점수 GROUP BY ROLLUP(학년, 반);

 


7. 순위함수

 

  • DENSE_RANK()
SELECT 이름, 수학, DENSE_RANK() OVER(ORDER BY 수학 DESC) AS 등수 FROM 점수 ORDER BY 수학 DESC; 
// 2등 세명 : 1 2 2 2 3

 

  • RANK()
SELECT 이름, 수학, RANK() OVER(ORDER BY 수학 DESC) AS 등급 FROM 점수 ORDER BY 수학 DESC;
// 2등 세명 : 1 2 2 2 5

 

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

 


전치사 정리

 

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

 

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

 

더보기

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)

 


'BE > DB' 카테고리의 다른 글

[DB] 내장함수  (0) 2024.04.14
[DB] NULL, CASE, ESCAPE  (0) 2024.04.14
[mySQL] 사용자 추가, 권한 부여,삭제  (0) 2023.07.04
[DB] 정규화  (0) 2022.06.06
[DB] 모델링  (0) 2022.06.06