Home 데이터베이스 언어 SQL
Post
Cancel

데이터베이스 언어 SQL

데이터베이스 언어 SQL

SQL (Structured Query Language) 은 관계 데이터베이스를 위한 표준 질의어로 사용되는 언어로 사용자가 원하는 데이터가 무엇인지만 알려주면 되기 때문에 비절차적 데이터 언어의 특성을 가진다.

SQL은 기능에 따라 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL) 로 나뉜다.

  • 데이터 정의어 : 테이블 생성, 수정, 제거
  • 데이터 조작어 : 데이터 삽입, 저장된 데이터 수정, 삭제, 검색
  • 데이터 제어어 : 보안을 위해 접근 및 사용권한 부여, 취소

SQL은 대부분 대문자로 작성하지만 이는 가독성을 위한 것이므로 소문자로 작성하여도 상관없다.

데이터 정의

테이블 생성

CREATE TABLE 이라는 명령을 사용하여 테이블을 정의한다. 생성할 때 속성의 이름과 타입, 키, 제약 조건을 포함하여 생성한다.

1
2
3
4
5
6
7
CREATE TABLE 테이블명(
        속성 데이터타입,	# 일반 속성
        PRIMARY KEY(속성리스트),	# 기본키 설정, 생략가능
        UNIQUE (속성리스트), # 대체키, 생략가능
        FOREIGN KEY (속성리스트) REFERENCES 참조하는테이블명(속성리스트),	# 외래키, 생략가능
        CONSTRAINT 제약조건명 CHECK (조건)	# 제약조건, 생략가능
        );

아래의 코드를 이용해 MySQL에서 자동으로 증가하는 기본키(id)를 가진 member 라는 테이블을 생성할 수 있다.

1
2
3
4
5
6
7
8
9
10
CREATE TABLE member (
        id bigint NOT NULL AUTO_INCREMENT,
        created_at VARCHAR(255) NOT NULL,
        modified_at VARCHAR(255),
        email VARCHAR(255),
        member_id VARCHAR(255),
        name VARCHAR(255),
        password VARCHAR(255),
        PRIMARY KEY (id)
    );

키의 정의

기본키

기본키는 PRIMARY KEY 키워드를 사용하여 정의하는데 모든 테이블에서 기본키는 하나만 존재해야하며 PRIMARY KEY (속성1, 속성2) 처럼 사용하여 여러 개의 속성으로 기본키를 구성할 수 있다. 기본키이기 때문에 널 값은 불가능하다.

대체키

대체키는 UNIQUE 키워드를 사용해 정의하고 기본키와 달리 널 값이 가능하다. 기본키와 달리 한 테이블에 여러 개의 대체키가 가능하다.

외래키

외래키는 FOREIGN KEY 키워드를 사용해 정의한다. 외래키를 정의할 때는 꼭 참조하는 테이블명과 참조하는 속성의 값이 필요하다. 또한 두 테이블이 연결되므로 참조되는 테이블에서 튜플을 삭제하거나 값 변동이 일어날 때 어떤 방법으로 처리할지 결정해야 한다.

  1. ON DELETE NO ACTION : 참조되는 테이블의 튜플삭제를 막는다. (기본값)
  2. ON DELETE CASCADE : 관련된 튜플을 함께 삭제한다. (연결된 두 테이블의 튜플을 삭제)
  3. ON DELETE SET NULL : 외래키의 값을 NULL 로 변경한다.
  4. ON DELETE SET DEFAULT : 외래키를 미리 지정한 기본값으로 변경한다.

제약조건 정의

제약조건은 CHECK 키워드를 사용해 정의하는데 CONSTRAINT 키워드를 함께 사용해 제약조건의 이름을 함께 정의할 수 있다.

테이블 수정

ALTER TABLE 키워드를 사용해 테이블을 수정할 수 있다.

속성 추가

1
ALTER TABLE 테이블명 ADD 속성명 데이터타입;

속성 삭제

1
ALTER TABLE 테이블명 DROP 속성명;

테이블 삭제

DROP TABLE 키워드를 사용해 테이블을 제거한다.

1
DROP TABLE 테이블명;

데이터 조작

데이터 검색

검색은 SELECT 키워드를 사용한다.

1
SELECT 속성명 FROM 테이블명;

검색은 각종 키워드와 결합하여 사용할 수 있다.

  • DISTINCT 속성명 : 중복 제거
  • 속성명 AS 변경할 속성명 : 속성명을 바꿔 출력
  • 각종 산술식 : 속성에 산술 계산하여 결과출력
  • 테이블명 WHERE : 조건 검색
  • 속성명 LIKE 검색할부분 : 부분 일치 검색
  • 속성명 IS NULL | IS NOT NULL : 널 값인지 아닌지
  • ORDER BY 속성명 ASC | DESC : 속성명을 기준으로 오름차순, 내림차순 정렬
  • COUNT(속성명) : 속성 값의 개수
  • MAX(속성명) : 속성 값의 최댓값
  • MIN(속성명) : 속성 값의 최솟값
  • SUM(속성명) : 속성 값의 합계
  • AVG(속성명) : 속성 값의 평균
  • GROUP BY : 그룹별 검색

조인 검색

조인 검색은 여러 테이블을 연결하여 검색하는 것으로 조인 검색을 위해선 테이블을 연결해주는 속성이 필요한데, 이 속성을 조인 속성이라 한다. 조인 속성은 이름은 달라도 괜찮지만 도메인은 반드시 같아야 검색할 수 있다. 일반적으로 외래키를 조인 속성으로 이용한다. 조인 검색을 하는 SQL은 FROM 키워드 뒤에 필요한 모든 테이블을 나열하고 WHERE 키워드 뒤엔 조인 속성이 같아야 하는 조건을 제시하면 된다.

joinSearch

위와 같은 두개의 테이블에서 hgd12가 작성한 글이 보고 싶다면

1
SELECT comment.content FROM member, comment WHERE comment.created_by = 'hgd12' AND member.member_id = 'hgd12';

위의 명령을 통해 아래의 결과를 찾을 수 있다.

result

데이터 삽입

데이터 삽입을 위해선 INSERT 키워드를 사용한다.

1
INSERT INTO 테이블명(속성리스트) VALUES (속성값리스트);

데이터 수정

데이터 수정을 위해선 UPDATE 키워드를 사용한다.

1
UPDATE 테이블명 SET 속성명1 = 1, 속성명2 = 2 WHERE 변경할데이터를찾을조건

WHERE 키워드 뒤에 제시된 조건에 맞는 튜플만 수정하고 만약 WHERE 키워드가 없다면 모든 튜플의 값을 SET 에서 지정한 값으로 변경한다.

데이터 삭제

데이터 삭제를 위해선 DELETE 키워드를 사용한다.

1
DELETE FROM 테이블명
This post is licensed under CC BY 4.0 by the author.

관계 데이터 연산

데이터베이스 설계