일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Git이해하기
- java기초
- java입문
- 오버라이딩
- 기본코드
- 파일이동버튼
- js
- form
- 버튼페이지이동
- list
- jdbc
- 점프 투 파이썬
- cmd
- html
- 배열
- MySQL
- 맨땅에 해딩
- Eclipse
- emmet
- 필드
- CSS
- 컬렉션프레임워크
- 데이터베이스연동
- javascript
- java
- Collection
- 이클립스
- object
- Git알아보기
- arraylist
- Today
- Total
단단히
DataBase_ DDL,DML,DCL 정리 본문
SQL 구문 유형 : DDL, DML, DCL
1. DDL : Data Definition Language, 데이터 정의
CREATE, ALTER, DROP, TRUNCATE (CADT)
데이터를 정의하는 언어로 스키마의 구조를 생성, 수정, 삭제하여 스키마를 정의할 수 있다.
2. DML : Data Manipulation Language/데이터 조작어
INSERT, SELECT, UPDATE, DELETE (ISUD)
스키마에 있는 데이터를 입력, 조회, 수정, 삭제할 수 있다.
3. DCL : Data Control Language/ 데이터 제어어
GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT
스키마에 있는 데이터를 제어하는 명령어로 권한의 부여/ 회수 또는 실행 여부를 결정할 수 있다.
MySQL에서는 사용자에 따라서 DCL을 DCL과 TCL(COMMIT, ROLLBACK, SACEPOINT)로 구분하여 사용하기도 한다.
DDL : 스키마 구조를 생성, 수정, 삭제하여 스키마를 정의할 수 있다.
1) Database 관련 쿼리
- DB 생성
create database D/N;
- DB 삭제
drop database D/N;
- DB 사용
use D/N;
2) Table 관련 쿼리
- Table 생성
create table T/N (
);
- Table 삭제
drop table T/N;
- Table 이름 변경
alter table 기존 T/N rename 변경 T/N;
** 테이블 생성 시 형식 **
이 외에도 다양한 자료형이 있다. 참고로 UTC(세계 협정 시)는 영국 그리니치 천문대 기준 시간이다.
한국 시간은 9 시간 빠르므로 UTC+9를 써야 한다.
3) Table column 관리 ( 구조 ; alter table T/N... column... )
- 칼럼명 변경
alter table T/N change column 기존 C/N 변경 C/ND/T [C];
- 자료형 변경
alter table T/N change column 기존 C/NC/N 변경 D/T [C];
- 자료형 변경( modify 사용 )
alter table T/N modify C/N 변경 D/T;
- 칼럼 추가
alter table T/N add column 추가 C/ND/T [C];
- 칼럼 삭제
alter table T/N drop column 삭제 C/N;
DML : 스키마 데이터를 CRUD(Create(생성), Read(읽기), Update(변경), Delete(제거)) 할 수 있다.
1) 종류
-입력
insert into T/N (C/N1, C/N2,..) values (Data1, Data2,..);
-조회
select C/N1, C/N2,.. from T/N;
-수정
update T/N set C/N1=Data1, C/N2=Data2,.. ;
-삭제
delete from T/N;
2) insert (데이터 입력)
- 기본 쿼리
insert into T/N (C/N1, C/N2,..) values (Data1, Data2,..);
* C/N의 개수와 Data의 개수가 동일해야 한다.
* ' ' 홀 따옴표를 사용하여 데이터를 입력한다. 단, int자료형이므로 홀따옴표 없이 숫자만 입력한다.
- 어려 데이터 입력 시
insert into T/N (C/N1, C/N2,..) values (Data1, Data2,..),
(Data1, Data2,..),
(Data1, Data2,..);
- 서브 쿼리를 사용하여 입력할 수 있다.
insert into T/N (C/N1, C/N2,..) select C/N1, C/N2, C/N3, C/N4 from T/N [부속 절];
3) select (데이터 조회)
# 조건 조회 - 부분 문자열 (like)
select * from T/N where C/N like ' % 부분 문자 % ' ;
-참고) % 기호를 '대표 문자' 또는 와일드카드(wild Card)라고 한다.
이때 앞쪽에 있는 글자를 찾을 때는 '부분 문자%'로 표현하면 된다.
#조건 조회 - 숫자 범위 : 비교 연산자 또는 between A and B
select * from T/N where C/N >= 숫자 ;
이때, and는 연속 구간, or은 분산 구간에 사용한다.
ex) select * from memberList where age >= 10 and age <=30;
ex) select * from memberList where between 10 and 30;
#그룹 조회(Group)
select * from T/N group by C/N ;
참고) distinct와 group by는 결과가 동일할 수 있다. 그러나 중복 출력 제거 기능을 하는 distinct는 출력으로 끝나지만 group by는 그룹으로 저장된 데이터가 남아있는 상태이다.
그래서 group by를 사용하면 데이터 처리 관련 함수를 사용할 수 있다.
#그룹 조건 지정(Having)
select * from T/N group by C/N having 조건;
having은 group by에 대한 조건 설정이다. group by를 사용해야만 적용할 수 있다. group by를 사용하지 않은 상태로 조건을 지정하려면 where을 사용해야 한다.
DCL : 스키마에 있는 데이터를 제어하는 명령어로 권한의 부여/회수 또는 실행 여부를 결정할 수 있다.
1) 수정 및 삭제 안전 모드 해제
set sql_safe_updates = 0;
2) 수정, 삭제 실행 최소 맟 실행 적용
set autocommit = 0; # 실행
savepoint L/N;
# L/N => Label Name 레이블명, 임의 명칭
...
원하는 쿼리 실행
...
점검 후 정상적으로 처리하기를 원할 경우 => commit; 쿼리 실행
점검 후 savepoint 시점까지 원래대로 복원 => rollback to L/N;
commit을 실행하고 나서는 rollback이 되지 않는다.
'DataBase > 개념 정리' 카테고리의 다른 글
DB(MySQL) 실행창에서 바로가기 만들기 + Driver.class 파일 위치 (0) | 2022.09.30 |
---|---|
DB 기본 쿼리 _ insert (0) | 2022.09.28 |
DB(MySQL) 기본쿼리_ DB생성/ Table생성 / Table명세 (0) | 2022.09.26 |
Mysql) .jar 파일 설치 ( sql과 이클립스 연동 시_ JDBC ) (0) | 2022.09.19 |
MySQL 설치,삭제,설정 (0) | 2022.06.17 |