해당 글은 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 |