[SQL] SQL 예시 정리
2023. 8. 29. 14:00ㆍBE/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 |