반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 연습
- 설치
- database
- mysql
- 지스타 통역
- 이미지 태그
- VirtualBox
- sql
- 클라우드기반파이썬네트워크정보시스템과정
- 블로그
- OSSU
- eclipse
- 웹 개발
- 테이블 태그
- 정답
- javascript
- 국비지원
- 자바
- MIT 챌린지
- 하루노트
- JSP
- 일기
- 부산아이티윌교육센터
- 태그
- 후기
- 데이터베이스
- Tomcat 9.0
- HTML
- 오류
- 가상머신
Archives
- Today
- Total
민둥 개발자의 계발 블로그
Database SQL 문법 총 정리#3 - 데이터 조작어 DML 본문
데이터 조작어(DML)
- Data Manipulation Language의 약자
- 데이터베이스 내의 데이터를 관리하는 데 사용
- DML명령은 자동 커밋되지 않기에 롤백 가능
- 데이터 조작어 모음
SELECT 데이터를 검색/조회(Retrieve) INSERT 테이블에 데이터를 삽입(추가) UPDATE 테이블 내의 기존 데이터를 수정/변경 DELETE 테이블에서 데이터를 삭제 MERGE 데이터가 테이블에 존재하면 UPDATE, 존재하지 않으면 INSERT를 수행 (INSERT + UPDATE) CALL PL/SQL 또는 JAVA 서브 프로그램 호출 EXPLAIN PLAN 데이터 접근 경로를 해석 LOCK TABLE 동시성 제어
SELECT 구문
- 특정 테이블의 데이터를 조회하는 문법
- SELECT 구문에 사용되는 절은 아래의 순서대로 사용됨
SELECT 절
- 기본적인 테이블의 데이터를 조회하는 문법
- 테이블의 전체 조회 시 *(Asterisk)를 사용
기본 문법
--특정 컬럼의 데이터 조회
SELECT 컬럼명1[, 컬럼명2, ...]
FROM 테이블명;
--전체 데이터 조회
SELECT *
FROM 테이블명;
WHERE절
- 데이터 조회에 특정 조건을 추가하는 문법
- 특정 컬럼 또는 서브 쿼리를 비교 연산자를 이용하여 조건을 걸어줌
- ※ 조건을 걸어 줄 때 데이터 타입을 고려해야 함
기본 문법
--컬럼1이 숫자 10인 열의 값을 출력
SELECT 컬럼명1[, 컬럼명2, ...]
FROM 테이블명
WHERE 컬럼명1 = 10;
ORDER BY 절
- 출력하는 데이터를 특정 컬럼 기준으로 정렬해주는 문법
- 여러 번 정의 시 1순위, 2순위로 정렬이 적용됨
기본 문법
-- 컬럼 1 기준으로 내림차순 적용 후 중복 시 컬럼 2기준으로 오름차순 정렬
SELECT 컬럼명1, 컬럼명 2
FROM 테이블명
WHERE 컬럼명1 < 10
ORDER BY 컬럼명1 DESC, 컬럼명 2;
GROUP BY 절
- 그룹을 묶는 데 사용하는 기준을 설정하는 절
- GROUP BY절의 컬럼의 값들 중 동일한 값을 가진 행들은 하나의 그룹으로 묶이게 됨
- SELECT절에 들어갈 수 있는 값은 GROUP BY에 쓴 컬럼과 그룹 함수뿐임
사용 예제
--두개의 그룹을 동시에 묶어준 예시
SELECT department_id, job_id, SUM(salary), COUNT(*)
FROM EMPLOYEES
WHERE DEPARTMENT_ID >40
GROUP BY DEPARTMENT_ID , JOB_ID
ORDER BY DEPARTMENT_ID ;
SELECT JOB_ID, MAX(SALARY) AS Maximum ,MIN(SALARY) AS Minimum ,SUM(SALARY) AS SUM ,AVG(SALARY) AS AVERAGE, COUNT(*) num
FROM EMPLOYEES
GROUP BY JOB_ID ;
SELECT department_id,AVG(SALARY), COUNT(*)
FROM EMPLOYEES
GROUP BY DEPARTMENT_ID;
HAVING 절
- 그룹에 대한 조건절, 그룹 함수의 WHERE절
- 일반 컬럼이 아닌 그룹 함수를 활용한 조건으로 조건절을 작성할 수 있다.
사용 예제
SELECT MANAGER_ID ,MIN(SALARY)
FROM EMPLOYEES
WHERE MANAGER_ID IS NOT NULL
GROUP BY MANAGER_ID
HAVING MIN(SALARY)>=6000
ORDER BY MIN(SALARY) DESC;
SELECT job_id,SUM(salary) PAYROLL
FROM EMPLOYEES
WHERE JOB_ID NOT LIKE '%REP%'
GROUP BY JOB_ID
HAVING SUM(SALARY)>13000
ORDER BY SUM(SALARY);
JOIN 구문
- 여러 테이블의 데이터의 행을 연결하여 한번에 출력할 수 있게 해주는 문법
ON 절을 사용한 JOIN
- 필요 요소 : 연결할 테이블, 연결 조건
사용 예제
--테이블 엘리어스 사용
SELECT emp.employee_id, emp.last_name, dept.department_id,dept.department_name
FROM employees emp JOIN departments dept
ON emp.department_id = dept.department_id;
SELECT employees.employee_id, employees.last_name, employees.salary, employees.department_id, departments.department_id, departments.department_name --필요 테이블
FROM employees JOIN departments --연결 조건
ON employees.department_id = departments.department_id;
ON 절을 사용한 SELF JOIN
- 같은 테이블 내에 서로 참조할 만한 컬럼이 있을 경우 같은 테이블을 연결 가능
사용 예제
--상사의 사원번호와 부하직원의 매니저 번호를 연결
SELECT e.employee_id, e.last_name, m.EMPLOYEE_ID, m.LAST_NAME
FROM employees m JOIN employees e
ON m.EMPLOYEE_ID = e.MANAGER_ID
INSERT 구문
- 테이블에 값을 입력하는 구문
- 입력하기 전 테이블의 구조를 잘 이해할 필요가 있음. (DESC 명령어로 테이블 구조 확인 추천)
기본 문법
--특정 컬럼에만 값을 넣고 싶을 때
INSERT INTO 테이블명(컬럼1, 컬럼3)
VALUES( 값1, 값2);
INSERT INTO 테이블명
VALUES( 값1, 값2, 값3,...);
UPDATE 구문
- 특정 컬럼의 값을 수정하는 문법
- ※주의! WHERE 절을 적용시키지 않을 경우 SET 절에 쓰인 컬럼의 모든 레코드가 수정됨
기본 문법
UPDATE 테이블명
SET 바꿀컬럼 = '새로운값'
WHERE 컬럼2 = '옛날 값'
DELETE 구문
- 특정 데이터(로우)를 삭제하는 구문
- 전체 삭제를 해도 테이블의 구조는 남아있기에 다시 데이터 입력 가능
- ※주의! WHERE 절을 적용시키지 않을 경우 모든 데이터가 삭제됨
기본 문법
DELETE FROM 테이블명
WHERE 컬럼1 = 12;
SUBQUERY (서브 쿼리)
- 쿼리 구문을 보조하는 역할의 쿼리구문
- 주로 WHERE 절의 조건문으로 사용
- 서브 쿼리는 메인 쿼리보다 우선 실행됨
사용 예제
SELECT employee_id,last_name,salary
FROM employees
WHERE salary > (SELECT SALARY FROM employees WHERE last_name='Abel');
반응형
'Study > Database' 카테고리의 다른 글
Database SQL 문법 총 정리#2 - 데이터 정의어 DDL (1) | 2022.06.30 |
---|---|
Database SQL 문법 총 정리 (Oracle, mysql) 목차 (0) | 2022.06.30 |
[mysql] ORDER BY 절 (0) | 2022.05.23 |
[mysql] 데이터베이스 WHERE 절 (0) | 2022.05.16 |
[mysql] 데이터베이스의 기본 제약조건! (0) | 2022.05.15 |
Comments