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

SQL 실행순서

1. SQL (쿼리실행)

2. Syntax Check (문법체크) 

3. Semantic Check (객체 및 권한 유무 체크) 객체: Object

4. Library Cache Check Cache에서 쿼리 저장 유무 검사,

저장되어 있다면 Sofrt Parse로 Library Cache에 저장된 쿼리 바로 사용

만약에 저장되어 있지 않으면 Hard Parse로 다음단계로 넘어간다.

5. Optimization 최적화한 쿼리 실행 계획을 만드는 단계

6. Raw Source Generation 위 Optimization단계에서 생성된 실행 계획을 실제 수행 할 수 있게 Formatting 

7. Execution 실행 

 

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

MySQL : CRUD(Create, Read, Update, Delete)  (0) 2023.03.30
SQL(Structured Query Language) 이란  (0) 2023.03.30

Structured Query Language (구조적 질의 언어)

SQL은 1970년대에 관계형 데이터 모델을 기반으로 발명되었습니다. 처음에는 구조적 영어 쿼리 언어(SEQUEL) 라고 했다가, 나중에 SQL로 줄였습니다. Oracle(구 Relational Software)은 상용 SQL 관계형 데이터베이스 관리 시스템을 제공하는 최초의 공급업체가 되었습니다.

 

데이터 정의 언어

데이터 정의 언어(DDL)는 데이터베이스 구조를 설계하는 SQL 명령을 나타냅니다. 데이터베이스 엔지니어는 DDL을 사용하여 비즈니스 요구 사항에 따라 데이터베이스 객체를 만들고 수정합니다. 예를 들어, 데이터베이스 엔지니어는 CREATE 명령을 사용하여 테이블, 뷰 및 인덱스와 같은 데이터베이스 객체를 생성합니다.

데이터 쿼리 언어

데이터 쿼리 언어(DQL)는 관계형 데이터베이스에 저장된 데이터를 검색하기 위한 명령으로 구성됩니다. 소프트웨어 애플리케이션은 SELECT 명령을 사용하여 SQL 테이블의 특정 결과를 필터링하고 반환합니다. 

데이터 조작 언어

데이터 조작 언어(DML) 문은 새 정보를 쓰거나 관계형 데이터베이스의 기존 레코드를 수정합니다. 예를 들어, 애플리케이션은 INSERT 명령을 사용하여 데이터베이스에 새 레코드를 저장합니다.

데이터 제어 언어

데이터베이스 관리자는 데이터 제어 언어(DCL)를 사용하여 다른 사용자의 데이터베이스 액세스를 관리하거나 권한을 부여합니다. 예를 들어, GRANT 명령을 사용하여 특정 애플리케이션이 하나 이상의 테이블을 조작하도록 허용할 수 있습니다. 

트랜잭션 제어 언어

관계형 엔진은 트랜잭션 제어 언어(TCL)를 사용하여 데이터베이스를 자동으로 변경합니다. 예를 들어, 데이터베이스는 ROLLBACK 명령을 사용하여 잘못된 트랜잭션을 실행 취소합니다. 

 

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

MySQL : CRUD(Create, Read, Update, Delete)  (0) 2023.03.30
SQL 실행순서  (0) 2023.03.30

+ Recent posts