SQL 스터디 노트 - 기초

김세하·2024년 6월 22일
post-thumbnail

스터디에 사용한 데이터 Table


SQL 관련 용어 정리

Database

여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합체

DMBS

Database Management System의 약자로,
사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보르 생성해 주고 데이터베이스를 관리해주는 소프트웨어

RDB

관계형 데이터베이스, Relational Database의 약자로 서로간에 관계가 있는 데이터 테이블들을 모아둔 데이터 저장공간

SQL

Structured Query Language의 약자로 ,데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어

SQL의 구성

데이터 정의 언어 (DDL)

DDL : Data Defintion Language의 약자로,
데이터를 생성하고, 수정하고, 삭제하는 기능들을 칭함

  • CREATE, ALTER, DROP 등의 명령어

데이터 조작 언어 (DML)

DML : Data Manipulation Language의 약자로,
테이블에 데이터를 삽입하거나 수정하는 등의 기능들을 칭함

  • INSERT, UPDATE, DELETE, SELECT 등의 명령어

데이터 제어 언어 (DCL)

DCL : Data Control Language의 약자로,
데이터베이스에 접근하는 유저 정보를 생성하거나 해당 유저에게 권한을 부여/삭제하는 등의 기능들을 칭함

  • GRANT, REVOKE, COMMIT, ROLLBACK 등의 명령어

유저 프로필 생성 및 권한 설정

CREATE USER

유저 프로필 생성 함수
내부 접근(localhost)와 외부 접근(%)을 구분하여 생성하며, 이 둘은 별개의 프로필로 취급

[사용 예시]
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'
CREATE USER 'username'@'%' IDENTIFIED BY 'password'

DROP USER

유저 프로필 삭제 함수

[사용 예시]
DROP USER 'username'@'localhost'
DROP USER 'username'@'%'

GRANT

유저에게 데이터베이스 접근 권한 부여

[사용 예시]
GRANT ALL ON database.* TO 'username'@'localhost'

REVOKE

유저의 데이터베이스 접근 권한 삭제

[사용 예시]
REVOKE ALL ON database.* FROM 'username'@'localhost'

Data 생성

Table 생성

현재 사용 중인 데이터베이스 내에 신규 데이터 테이블을 생성
생성 시 테이블의 컬럼 명칭과 타입을 지정

[사용 예시]
CREATE TABLE tablename(column1, column1_type, column2, column2_type, ...)

Table 수정

테이블 명칭, 테이블 내 컬럼의 수정, 삭제 등 테이블에 변경 사항을 적용하는 기능으로 ALTER를 사용

RENAME

테이블 이름 변경

[사용 예시]
ALTER TABLE table
RENAME newtablename

ADD COLUMN

테이블에 새로운 컬럼 추가

[사용 예시]
ALTER TABLE table
ADD COLUMN column_name column_type

MODIFY COLUMN

테이블 내 존재하는 컬럼의 데이터타입 수정

[사용 예시]
ALTER TABLE table
MODIFY COLUMN column_name new_column_type

CHANGE COLUMN

테이블 내 존재하는 컬럼의 명칭과 데이터타입을 모두 수정

[사용 예시]
ALTER TABLE table
CHANGE COLUMN old_column_name new_column_name new_column_type

DROP COLUMN

테이블 내 존재하는 컬럼을 삭제

[사용 예시]
ALTER TABLE table
DROP COLUMN column_name

Table 삭제

테이블 삭제 시와 동일하게 DROP 명령어를 사용

[사용 예시]
DROP TABLE table

JOIN

두 개 이상의 테이블을 결합하여 보여주는 기능
SELECT 시 해당 테이블들의 컬럼을 모두 지정 가능하며, 컬럼명이 중복일 경우 {테이블명.컬럼명} 형태로 명시 필요

[사용 예시]
SELECT tableA.column1, tableB.column1, ...
FROM tableA JOIN tableB
ON tableA.column1=tableB.column1
WHERE condition

INNER JOIN

결합하는 테이블의 내용 중 공통된 부분만 가져와 결합하는 방식 (교집합)

LEFT/RIGHT JOIN

왼쪽 혹은 오른쪽 테이블을 기준으로 결합하는 방식
교집합과 왼쪽 혹은 오른쪽 테이블의 내용을 전부 가져와 합침


FULL OUTER JOIN

결합하는 테이블의 모든 내용을 가지와 결합하는 방식 (합집합)
단, MySQL에서는 지원하지 않는 기능이므로 LEFT JOIN과 RIGHT JOIN을 UNION하여 동일한 결과값을 추출 가능

SELF JOIN

INNER JOIN과 동일한 결과를 내며, 결합하는 테이블에서 공통된 데이터를 가지고 오는 방식

[사용 예시]
SELECT tableA.column1, tableB.column1, ...
FROM tableA, tableB
WHERE tableA.column1=tableB.column1

CONCAT

여러 문자열을 하나로 연결해주는 함수

[사용 예시]
SELECT CONCAT (string, string, ...)

ALIAS

컬럼이나 테이블 이름에 별칭을 생성하는 함수, 테이블 명을 반복해서 작성해야하는 경우
짧은 별칭을 지정하여 사용하는 것으로 번거로움을 줄일 수 있음

[사용 예시 - 컬럼명]
SELECT column AS alias FROM table

[사용 예시 - 테이블명]
SELECT column1, column2, ...
FROM table AS alias
※ AS는 띄어쓰기로 생략도 가능

DISTINCT

검색한 결과의 중복을 제거하는 함수
Pandas DataFrame의 고유값을 확인하는 unique() 함수와 유사한 기능

[사용 예시]
SELECT DISTINCT column1, column2, ...
FROM table

LIMIT

검색 결과를 정렬된 순으로 주어진 숫자만큼만 조회해주는 함수, 쿼리문 가장 마지막에 추가하여 사용
Pandas DataFrame의 상단 n개의 데이터를 조회하는 head() 함수와 유사한 기능

[사용 예시]
SELECT column1, column2, ...
FROM table
WHERE condition
LIMIT number
※ number 만큼의 데이터만 조회

0개의 댓글