해당 글은 MySQL 을 토대로 작성 하였습니다.

데이터 조작어 (DML : Data Manipulation Language)

- SELECT : 테이블의 내용을 검색한다.

SELECT [컬럼명1, 컬럼명2 ...]

FROM [테이블명]

WHERE [컬럼명 = 값]

  GROUP BY [그룹 할 컬럼명]

  HAVING [컬럼명 = 값]

ORDER BY [컬럼명] ASC | DESC 

LIMIT 10;

 

WHERE : 없을경우 해당테이블의 모든 데이터가 나옴.

GROUP BY : 그룹화 할 컬럼을 작성하여 해당 컬럼의 데이터를 그룹으로 묶어준다.

HAVING : GROUP BY에 따른 조건을 작성한다.

ORDER BY : 정렬, 기본 ASC(오름차순), DESC 내림차순   

LIMIT : 검색결과 데이터를 10개만 가져온다. 

 

- INSERT : 해당 테이블의 컬럼에 데이터를 삽입 한다.

방법 1.

INSERT [테이블명] ([컬럼명1, 컬럼명2... ])

INTO ( '값', 숫자는 값...) 

INTO (컬럼명에 따른 데이터들 작성)

 

방법 2. 모든 컬럼에 데이터를 삽입 할 경우 컬럼명을 명시 안해주어도 된다. 단지, 컬럼위치와 데이터는 맞춰주어야한다.

INSERT [테이블명] 

INTO ( '값', 숫자는 값...) 

 

- UPDATE : 컬럼의 결과를 수정한다.

UPDATE [테이블명]

SET [컬럼명1 = 값], [컬럼명2 = 값] 

WHERE [컬럼명 = 값]

WHERE 조건이 없을 경우 해당데이터의 모든 테이블의 데이터가 수정 되오니 조심! 

 

- DELETE : 데이터 삭제

DELETE FROM  [테이블명] 

WHERE [컬럼 = 값]

WHERE 조건이 없을 경우 해당데이터의 모든 테이블의 데이터가 삭제 되오니 조심! 

 

- MERGE : 단일 문에서 여러 DML(INSERT, UPDATE, DELETE) 작업을 수행

- CALL : 프로시저

- EXPLAIN PLAN  : DB가 테이터를 찾아가는 일련의 과정을 사람이 알아보기 쉽게 DB 결과 셋으로 보여주는 것이다.

이거는 튜닝에서 가장 중요한 것은 쿼리와 스키마 최적화이다. 튜닝할 때 다시 알아보자...

 

데이터 정의어 (DDL : Data Definition Language)

- CREATE : 테이블 생성

CREATE TABLE TEST ( 

  id NUMBER(10) PRIMARY KEY

  , username VARCHAR(30)

);

 

- ALTER : 이미 존재하는 테이블을 수정하고 싶을 때 사용. 테이블의 이름 및 열(column)을 추가, 변경 삭제할 수 있다.

ADD : ALTER TABLE TEST ADD COLUMN password VARCHAR(50); 

ALTER TABLE (테이블명) ADD COLUMN (컬럼명) VARCHAR(길이);

 

MODIFY : ALTER TABLE TEST MODIFY COLUMN password varchar(100);

 

CHANGE : ALTER TABLE TEST CHANGE COLUMN password password2 varchar(100);

 

DROP : ALTER TABLE TEST DROP COLUMN password2;

 

- RENAME : 테이블 이름 변경

ALTER TABLE TEST RENAME MEMBER;

 

- COMMENT 

테이블 코멘트 추가 : ALTER TALBE MEMBER COMMENT = '코멘트 달 내용' 

컬럼 코멘트 추가 : ALTER TABLE [테이블명] MODIFY [컬럼명] [데이터타입] [제약조건] COMMENT '컬럼코멘트';

컬럼 코멘트 삭제 : ALTER TABLE [테이블명] MODIFY [컬럼명] [데이터타입] [제약조건];

 

- TRUNCATE : 모든 데이터를 삭제

TRUNCATE TABLE [테이블명]

Auto COMMIT 이므로 ROLLBACK이 불가능하다.

DELETE 와 차이점 : DELETE는 DB에 바로 반영되지 않고 메모리에 적용 후 커밋이 되어야 적용이 되어 ROLLBACK이 가능하지만 TURNCATE 는 수행하는 순간 바로 COMMIT을 날려서 DB에 반영하므로 ROLLBACK 불가능

 

- CASCADE(연쇄삭제)  

  참조 관계(기본키와 외래키 관계)가 있을 경우 참조되는 데이터도 자동으로 삭제 가능

  자신이 참조하고 있는 테이블의 데이터가 삭제되면 자동으로 자신의 데이터도 삭제

  CASCADE 사용시 참조 무결성을 준수할 수 있음  

DROP TABLE [테이블명] CASCADE CONSTRAINTS;

 

데이터 제어어 (DCL : Data Control Language)

- GRANT : 사용자 권한설정 

mysql> grant all privileges on dbname.table to userid@host identified by 'password';

 

모든 db 및 테이블에 접근권한 설정

mysql> grant all privileges on *.* to userid@host identified by 'password';

 

모든 db 및 테이블에 권한을 주고 로컬 및 리모트에서도 접속가능하도록 설정

mysql> grant all privileges on *.* to userid@'%' identified by 'password';

 

설정한 권한 적용 (반드시 해야 적용이 된다.)

mysql> flush privileges;

 

- REVOKE : 사용자 권한 삭제

mysql> revoke all on dbname.table from userid@host

 

- show grant : 권한 조회

mysql> show grants for userid@ho

 

트랜잭션 제어어 (TCL : Transaction Control Language)

- COMMIT

하나의 트랜잭션을 물리적인 데이터베이스에 적용하는 작업

커밋 이후에는 롤백을 해도 커밋 전으로 돌아갈 수 없으니 신중하게 하여야 한다...

 

- ROLLBACK 

데이터의 저장, 삭제, 수정 등의 작업을 하고 난 후 원래의 상태로 되돌리는 작업

 

- SAVEPOINT

SAVEPOINT 를 지정하면 ROLLBACK시 해당 지정위치로 복원이 가능하다.

SAVEPOINT 명령어를 사용함으로써 지점을 지정하고 ROLLBACK 명령어로 복원한다.

이렇게 하면 ROLLACK이 COMMIT 시점이 아니라 SAVEPOINT를 선언한 시점이 된다.

 

- TRANSACTION(트랜잭션)

트랜잭션은 따로 다뤄보기로 한다. 

 

기타 

* : 아스타(all)

- count 

SELECT [count(컬럼명1)]

FROM [테이블명];

count 는 (*), ([컬럼명1, 컬럼명2...])

 

 

'수업정리 > SQL' 카테고리의 다른 글

SQL 실행순서  (0) 2023.03.30
SQL(Structured Query Language) 이란  (0) 2023.03.30

+ Recent posts