SQL(2) SQL 기본 문법

hyeeun·2025년 8월 3일

bootcamp

목록 보기
19/22
post-thumbnail

1. 기본

SELECT column_name FROM table_name;
  • SQL 키워드는 대소문자를 구분하지 않음

    • 대문자로 작성하는 것을 권장(명시적 구분)
  • 각 SQL Statements의 끝에는 세미콜론(;)이 필요

    • 세미콜론은 각 SQL Statements을 구분하는 방법(명령어의 마침표)

2. SQL Statements(SQL문)

  • SQL을 구성하는 가장 기본적인 코드 블록

  • 예시 코드는 SELECT문이라고 부르며, SELECT/FROM 2개의 keyword로 구성됨

  • Query : 데이터베이스로부터 정보를 요청하는 것으로 일반적으로 SQL로 작성하는 코드를 쿼리문이라고도 함

(1) SQL 표준

  • SQL은 미국 국립표준협회(ANSI)와 국제 표준화 기구(ISO)에 의해 표준이 채택됨

  • 모든 RDBMS에서 SQL 표준을 지원

  • 각 RDBMS마다 독자적인 기능에 따라 표준을 벗어나는 추가 문법이 존재

(2) SQL문의 종류

  • DML(Data Manipulation Language) : 데이터베이스 테이블에 새로운 행을 입력하고, 기존의 행을 변경하고 제거

  • DDL(Data De nition Language) : 테이블로부터 데이터 구조를 생성, 변경, 제거

  • DCL(Data Control Language) : 데이터베이스와 그 구조에 대한 접근 권한을 제공하거나 제거

문장설명
INSERT
UPDATE
DELETE
SELECT
DML(Data Manipulation Language)이라 부르며, 개별적으로 Database 테이블에서 새로운 행을 입력하고, 기존의 행을 변경하고 제거한다.
Database로부터 Data를 검색합니다. SELECT 역시 DML로 분류된다.
CREATE
ALTER
DROP
RENAME
DDL(Data Definition Language)이라 부르며, 테이블로부터 데이터 구조를 생성, 변경, 제거한다.
COMMIT
ROLLBACK
DCL 명령문으로 수행한 변경을 관리한다.
GRANT
REVOKE
DCL(Data Control Language)이라 부르며, Database와 그 구조에 대한 접근권한을 제공하거나 제거한다.

(3) DDL (Data De nition Language) : 데이터 정의어

  • 데이터베이스 객체(table, view, index,…)의 구조를 정의

  • 테이블 생성, 컬럼추가, 타입변경, 제약조건 지정, 수정 등

    • create : 데이터베이스, 테이블 등을 생성
    • drop : 데이터베이스, 테이블을 삭제
    • alter : 테이블을 수정truncate : 테이블을 초기화

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

  • 데이터 조작기능

  • 테이블의 레코드를 CRUD (Create, Retrieve, Update, Delete)

    • insert : 데이터를 입력
    • select : 데이터를 조회
    • update : 데이터를 수정
    • delete : 데이터를 삭제

(5) DCL(Data De nition Language) : 데이터 제어

  • DB, Table의 접근권한이나 CRUD 권한을 정의

  • 특정 사용자에게 테이블의 검색권한 부여/금지 등

    • grant : 데이터베이스 객체에 권한을 부여
    • revoke : 데이터베이스 객체 권한 취소
    • commit : 실행한 Query를 최종적으로 적용
    • rollback : 실행한 Query를 마지막 commit 전으로 취소시켜 데이터를 복구

3. 새로운 DB 생성

  • 새로운 데이터베이스 생성

  • 하나의 서버에 여러개의 DB를 생성하여 사용 가능

CREATE SCHEMA db_name;

  • 해당 DB를 사용하기 위한 USE 키워드 사용하거나 테이블 이름을 사용할때 DB를 명시
# USE 키워드
USE db_name; 
# 테이블명의 DB명시
db_name.table_name

(1) SCHEMA (스키마)

  • 계획이나 도식을 나타내는 말로 요약정보, 개요

  • 데이터베이스에서 스키마는 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조


4. DDL (Data Denition Language)

(1) CREATE

  • 테이블 생성
    • 각 필드에 적용할 데이터 타입 작성
    • 테이블 및 필드에 대한 제약조건(constraints) 작성
CREATE TABLE table_name (column_1 data_type constraints,
						 column_2 data_type constraints, 
						 ..., );

(2) 데이터 타입

  1. NULL
    • 아무런 값도 포함하지 않음
  2. 문자열 타입
    • CHAR : 고정된 길이
    • VARCHAR : 가변길이
    • TEXT : 긴 텍스트
  3. 숫자 타입
    • 정수 : INT, BIGINT
    • 실수
      - 부동소수점 : FLOAT, DOUBLE
      • 고정소수점 : DECIMAL (예: DECIAML(10,2))
  4. 날짜와 시간 타입
    • DATE, DATETIME
    • TIMESTAMP : 자동으로 현재시간 설정
  5. 기타
    • BOOL : 논리데이터
    • ENUM(v1, v2, v3,...) : 정의된 값 중에 하나를 선택 (예: ENUM('manager', 'part_time', 'full_time'))
    • BLOB : 대용량 바이너리 데이터

(3) Constraints (제약조건)

  • 테이블의 필드에 적용되는 규칙 또는 제한 사항

  • 데이터의 무결성을 유지하고 데이터베이스의 일관성을 보장

  • 주요 제약 조건
    1. PRIMARY KEY : 해당 필드를 기본키로 지정
    PRIMARY KEY (col_name);
    2. FOREIGN KEY : 다른 테이블과의 외래관계를 정의, REFERENCES할 테이블과 컬럼명 명시 필요 (참고무결성)
    FOREIGN KEY (col_name) REFERENCES refer_table_name(refer_col_name);
    3. NOT NULL : 해당 필드에 NULL값을 허용하지 않도록 지정
    4. CHECK : 저장되는 값이 특정조건을 만족하는지 확인
    CHECK (condition);
    5. UNIQUE : 저장되는 값이 다른 값과 중복되지 않도록 지정

  • 한줄에 길게 작성되는 경우 뒷부분에 제약조건 작성 가능

  • CONSTRAINT Keyword : 제약조건에 이름 부여

    • 제약조건에 이름을 부여하여 정의할 때 사용하는 키워드
CONSTRAINT constraints_name UNIQUE (col_name) CONSTRAINT constraints_name CHECK (col_name IS NOT NULL)
  • AUTO_INCREMENT 키워드 : 자동으로 고유한 정수값을 생성하고 할당하는 필드 속성
    • 필드의 자동 증가를 나타내는 특수한 키워드
    • 주로 primary key 필드에 적용
    • INT PRIMARY KEY AUTO_INCREMENT가 작성된 필드는 항상 새로운 레코드에 대해 이전 최대값보다 큰 값을 할당
    • 삭제된 값은 무시되며 재사용하지 않음

(4) ERD를 기준으로 테이블 생성

  • 직원 그룹 관리
CREATE TABLE group (group_id INT PRIMARY KEY AUTO_INCREMENT,
					group_name ENUM('manager', 'full_time', 'part_time') NOT NULL);
  • 매장 관리
CREATE TABLE store (store_id INT PRIMARY KEY AUTO_INCREMENT,
					store_name VARCHAR(100) NOT NULL,
                    store_time DATETIME,    
                    seat INT NOT NULL DEFAULT 0 );
  • 직원 관리
CREATE TABLE employee (emp_id INT PRIMARY KEY AUTO_INCREMENT,
					   name VARCHAR(50) NOT NULL,
					   time DATETIME,
					   pay INT NOT NULL CHECK (pay > 1000),
					   group_id INT NOT NULL,
					   store_id INT NOT NULL,
					   FOREIGN KEY (group_id) REFERENCES emp_group(group_id));
  • 메뉴 관리
CREATE TABLE menu (food_id INT PRIMARY KEY AUTO_INCREMENT,
				   beverage VARCHAR(100) NOT NULL,
				   season ENUM('spring', 'summer', 'fall', 'winter') NOT NULL,
				   store_id INT NOT NULL,
				   FOREIGN KEY (store_id) REFERENCES store(store_id)    );  
  • 매출 관리
CREATE TABLE sales (store_id INT PRIMARY KEY,
					total INT NOT NULL,
                    profit INT NOT NULL,
                    price INT NOT NULL );
profile
hyeeun-techlog

0개의 댓글