PRIMARY KEY, FOREIGN KEY, 제약조건, JOIN, 서브쿼리 등 SQL의 핵심 개념들을 체득하기 위해 다양한 상황에서 반복적인 작업을 통해 실력을 향상시키고 있습니다. 데이터베이스의 정확성과 일관성을 유지하는데 중점을 두는 PRIMARY KEY와 FOREIGN KEY의 활용, 데이터 무결성을 지키기 위한 제약조건의 적용, 다양한 테이블 간의 데이터 결합을 위한 JOIN, 그리고 복잡한 조건을 다루기 위한 서브쿼리 작성에 대한 경험을 쌓고 있습니다.
계속해서 SQL을 다양하게 활용해보며 데이터베이스 관리 및 쿼리 작성 능력을 향상시키고자 노력 중이며, 지속적인 학습을 통해 보다 능숙한 개발자로 성장하고자 합니다.🚀
SQL에서 PRIMARY KEY는 데이터베이스 테이블에서 각 행을 고유하게 식별하는 데 사용되는 열 또는 열의 조합입니다. PRIMARY KEY는 테이블의 기본 키로서, 해당 키의 값은 중복될 수 없으며 NULL일 수 없습니다. 이는 데이터베이스에서 행을 신속하게 찾고 관계를 설정하는 데 중요합니다.
CREATE TABLE 테이블명 (
column1 데이터_유형 PRIMARY KEY,
column2 데이터_유형,
...
);
SQL또는 여러 열을 결합하여 PRIMARY KEY를 만들 수 있습니다.
CREATE TABLE 테이블명 (
column1 데이터_유형,
column2 데이터_유형,
...
PRIMARY KEY (column1, column2)
);
SQL예를 들어, 다음은 사용자 정보를 저장하는 테이블을 만들고 그 중 사용자 ID를 PRIMARY KEY로 지정하는 예시입니다.
CREATE TABLE 사용자 (
사용자_ID INT PRIMARY KEY,
이름 VARCHAR(50),
이메일 VARCHAR(100)
);
SQL✔️이렇게 하면 각 사용자의 ID가 고유하게 식별되고, 다른 테이블에서 이 테이블을 참조할 때 사용자 ID를 FOREIGN KEY로 사용할 수 있습니다.
SQL에서 FOREIGN KEY(외래 키)는 한 테이블의 열 또는 열의 조합으로 다른 테이블의 PRIMARY KEY 또는 UNIQUE KEY와 관련된 제약 조건입니다. FOREIGN KEY를 사용하면 두 테이블 간에 관계를 설정하고 데이터 무결성을 유지할 수 있습니다.
CREATE TABLE 참조하는_테이블 (
...
외래키_열 데이터_유형,
FOREIGN KEY (외래키_열) REFERENCES 참조된_테이블(참조된_열)
...
);
SQL예를 들어, 주문 테이블에서 고객을 참조하는 FOREIGN KEY를 생성하는 SQL 문은 다음과 같습니다.
CREATE TABLE 주문 (
주문_ID INT PRIMARY KEY,
고객_ID INT,
주문_날짜 DATE,
FOREIGN KEY (고객_ID) REFERENCES 고객(고객_ID)
);
SQL✔️이렇게 하면 주문 테이블의 고객_ID 열이 고객 테이블의 고객_ID와 관련되어 데이터 무결성을 유지할 수 있습니다.
SQL에서 제약 조건(Constraint)은 테이블에 데이터의 무결성을 유지하기 위한 규칙 또는 규정입니다. 제약 조건은 테이블에 삽입, 업데이트, 삭제 작업이 수행될 때 데이터의 일관성과 유효성을 보장합니다. 여러 종류의 제약 조건이 있으며, 주요 유형은 다음과 같습니다.
제약 조건은 테이블을 생성할 때 또는 이미 존재하는 테이블을 변경할 때 정의됩니다. 다음은 각각의 제약 조건을 테이블 생성 시에 어떻게 정의하는지에 대한 예시입니다.
CREATE TABLE 예제 (
ID INT PRIMARY KEY,
이름 VARCHAR(50) NOT NULL,
이메일 VARCHAR(100) UNIQUE,
부서_ID INT,
FOREIGN KEY (부서_ID) REFERENCES 부서(부서_ID),
CHECK (나이 >= 0)
);
SQL✔️이 예시에서는 PRIMARY KEY, NOT NULL, UNIQUE, FOREIGN KEY, CHECK 제약 조건이 사용되었습니다. 이러한 제약 조건들은 데이터베이스 시스템이 테이블에 삽입되는 데이터에 대해 자동으로 검증하고 유지할 수 있도록 도와줍니다.
SQL에서 JOIN은 두 개 이상의 테이블을 결합하여 데이터를 가져오는 데 사용되는 연산자입니다. JOIN은 특정 조건에 따라 두 테이블 간의 행을 연결하여 새로운 결과 집합을 생성합니다. 주로 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN과 같은 다양한 JOIN 유형이 있습니다.
SELECT *
FROM 테이블A
INNER JOIN 테이블B ON 테이블A.공통열 = 테이블B.공통열;
SQLSELECT *
FROM 테이블A
LEFT JOIN 테이블B ON 테이블A.공통열 = 테이블B.공통열;
SQLSELECT *
FROM 테이블A
RIGHT JOIN 테이블B ON 테이블A.공통열 = 테이블B.공통열;
SQLSELECT *
FROM 테이블A
FULL JOIN 테이블B ON 테이블A.공통열 = 테이블B.공통열;
SQL✔️이렇게 다양한 JOIN 유형을 활용하여 데이터베이스에서 필요한 정보를 효과적으로 추출할 수 있습니다. JOIN은 데이터를 효과적으로 관리하고 복잡한 쿼리를 작성하는 데 도움이 되는 중요한 SQL 기능 중 하나입니다.
서브쿼리(subquery)란 SQL 쿼리 내에서 다른 쿼리를 포함하는 것을 의미합니다. 서브쿼리는 주로 메인 쿼리의 일부 또는 조건으로 사용되며, 데이터베이스로부터 원하는 정보를 추출하거나 조건을 검사하기 위해 활용됩니다.
단일행 서브쿼리는 서브쿼리가 하나의 행만 반환하는 유형의 서브쿼리를 의미합니다. 이 서브쿼리는 주로 단일 값을 계산하거나 단일 행을 비교하는데 사용됩니다. 주로 SELECT 절이나 WHERE 절에서 활용되며, 비교 연산자와 함께 자주 사용됩니다.
SELECT 열1, (SELECT 열2 FROM 다른테이블 WHERE 조건) AS 계산열
FROM 테이블;
SQLSELECT *
FROM 테이블1
WHERE 열1 = (SELECT 열1 FROM 테이블2 WHERE 조건);
SQLSELECT *
FROM 테이블1
WHERE 열1 IN (SELECT 열1 FROM 테이블2 WHERE 조건);
SQLSELECT *
FROM 테이블1
WHERE EXISTS (SELECT * FROM 테이블2 WHERE 조건);
SQL✔️단일행 서브쿼리는 데이터베이스에서 특정 행의 값을 추출하거나, 특정 조건을 만족하는 행을 찾는 데에 유용하게 활용됩니다.
다중행 서브쿼리(Multi-Row Subquery)는 서브쿼리가 여러 행을 반환하는 유형의 서브쿼리입니다. 이는 서브쿼리의 결과 집합이 하나 이상의 행을 포함할 수 있음을 의미합니다. 주로 비교 연산자나 IN, ANY, ALL과 같은 비교 조건과 함께 사용되며, 주로 SELECT 문의 WHERE, HAVING 절에서 활용됩니다.
SELECT *
FROM 테이블1
WHERE 열1 IN (SELECT 열1 FROM 테이블2 WHERE 조건);
SQLSELECT *
FROM 테이블1
WHERE 열1 < ANY (SELECT 열1 FROM 테이블2 WHERE 조건);
SQLSELECT *
FROM 테이블1
WHERE 열1 > ALL (SELECT 열1 FROM 테이블2 WHERE 조건);
SQLSELECT *
FROM 테이블1
WHERE EXISTS (SELECT * FROM 테이블2 WHERE 조건);
SQL✔️이러한 연산자들은 서브쿼리를 사용하여 복잡한 조건을 만족하는 데이터를 검색하는 데에 유용합니다. 각 연산자는 다양한 상황에서 활용될 수 있으며, 적절한 상황에 적용하여 데이터를 추출하거나 필터링할 수 있습니다.
이번 개발일지에서는 SQL의 중요한 개념들을 학습하고 익힌 내용에 대해 간략하게 기록해 보았습니다. PRIMARY KEY, FOREIGN KEY, 제약조건, JOIN, 서브쿼리 등 SQL의 핵심 개념을 반복적인 작업을 통해 익히고 있습니다.
데이터베이스 설계에서는 PRIMARY KEY의 고유성과 참조 무결성을 강조하여 관계를 설정하고, FOREIGN KEY를 활용하여 테이블 간의 연결을 구축하고 있습니다. 또한, 제약조건을 통해 데이터의 무결성을 보장하며, 다양한 JOIN 연산을 활용하여 테이블 간의 데이터를 효과적으로 결합하고 있습니다. 더불어, 서브쿼리를 사용하여 복잡한 조건을 다루고 필요한 정보를 추출하는 경험도 쌓고 있습니다.
앞으로도 계속해서 다양한 상황에 SQL을 활용하며 데이터베이스 관리 및 쿼리 작성 능력을 향상시키고자 노력할 것이며, 지속적인 학습을 통해 보다 능숙한 개발자로 성장하고자 합니다. 성장하는 과정을 기록하고, 미래의 프로젝트에서 높은 수준의 개발 역량을 발휘할 수 있도록 노력하겠습니다.🚀
소개 자바에서 Set은 중복을 허용하지 않는 데이터 집합을 의미합니다. List와 달리 동일한 요소를 여러 번…
해시(Hash)란 무엇인가? 해시(Hash)는 자바 프로그래밍에서 빠르고 효율적인 데이터 저장 및 검색을 위한 핵심적인 개념입니다. 이…
LinkedList란 무엇인가? LinkedList는 자바에서 유용하게 사용되는 자료구조 중 하나로, 연결 리스트 방식을 이용하여 데이터를 관리하는…
ArrayList란 무엇인가? ArrayList는 자바에서 가장 널리 사용되는 컬렉션 중 하나로, 가변 크기의 배열을 구현한 클래스입니다.…
제네릭(Generic)이란? 자바 제네릭은 코드의 재사용성을 높이고 타입 안전성을 보장하는 중요한 개념입니다. 이 블로그 글에서는 자바…