6/18 SQL 시험 범위 요약표

 

https://docs.google.com/spreadsheets/d/1zuS7ug240I0ZX0kwQQ4IzcLR-jVoB4SrAVa12blNS48/edit?gid=261459684#gid=261459684

 

데이터 베이스 명령어 구조

테이터 타입제약조건CREATE TABLE buy ( num INT AUTO_INCREMENT PRIMARY KEY, mem_id CHAR(8) NOT NULL, prod_name CHAR(6) NOT NULL, group_name CHAR(4) NULL UNIQUE, price INT NOT NULL check(price > 1000), amount INT NULL default 1 , FOREIGN KEY(mem_id)

docs.google.com

 

 

 

 

DDL (데이터 정의어)

데이터베이스의 구조(스키마)를 정의, 변경, 삭제하는 데 사용되는 명령어들입니다.

명령어 설명  내용 (예시 SQL) 일반 형식 / 핵심 구조
CREATE DATABASE 새로운 데이터베이스 생성 CREATE DATABASE market_db; CREATE DATABASE [데이터베이스명];
DROP DATABASE 기존 데이터베이스 삭제 (내부 데이터 포함) DROP DATABASE market_db; DROP DATABASE [데이터베이스명];
USE 작업할 데이터베이스 선택 USE market_db; USE [데이터베이스명];
CREATE TABLE 새로운 테이블 생성 (컬럼, 타입, 제약조건 정의) CREATE TABLE member ( member_id CHAR(8) NOT NULL PRIMARY KEY, member_name VARCHAR(10) ); CREATE TABLE [테이블명] ( [컬럼명1] [타입] [제약조건], [컬럼명2] [타입] [제약조건], ...);
DROP TABLE 기존 테이블 삭제 (내부 데이터 포함) DROP TABLE member; DROP TABLE [테이블명];
ALTER TABLE ...
ADD COLUMN
기존 테이블에 새로운 컬럼(열) 추가 ALTER TABLE member ADD email CHAR(30) NULL UNIQUE; ALTER TABLE [테이블명] ADD [새컬럼명] [타입] [제약조건];
ALTER TABLE ...
ADD CONSTRAINT
PRIMARY KEY
기존 테이블에 기본 키(Primary Key) 제약조건 추가 ALTER TABLE member ADD CONSTRAINT PK_member PRIMARY KEY(mem_id); ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건이름] PRIMARY KEY([컬럼명]);
ALTER TABLE ...
ADD CONSTRAINT
FOREIGN KEY
기존 테이블에 외래 키(Foreign Key) 제약조건 추가 ALTER TABLE buy ADD CONSTRAINT FK_buy_member FOREIGN KEY(mem_id) REFERENCES member(mem_id); ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건이름] FOREIGN KEY([컬럼명]) REFERENCES [참조테이블명]([참조컬럼명]);
ALTER TABLE ...
ADD CONSTRAINT
CHECK
기존 테이블에 체크(Check) 제약조건 추가 ALTER TABLE member ADD CONSTRAINT CK_member_phone CHECK(phone1 IN('02','055')); ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건이름] CHECK([조건식]);
ALTER TABLE ...
ALTER COLUMN ...
SET DEFAULT
기존 테이블 컬럼의 기본값 설정 또는 변경 ALTER TABLE member ALTER COLUMN phone1 SET DEFAULT '02'; ALTER TABLE [테이블명] ALTER COLUMN [컬럼명] SET DEFAULT [기본값];

테이블 생성시 참고

 

데이터 타입 (설명) SQL 데이터 타입 예시 주로 함께 사용되는 제약조건 (예시)
정수형 (소수점 없는 숫자) INT, BIGINT PRIMARY KEY, AUTO_INCREMENT (또는 IDENTITY), NOT NULL, UNIQUE
실수형 (소수점 있는 숫자) FLOAT, DOUBLE NOT NULL, CHECK, DEFAULT
정적 문자형 (고정 길이 문자열) CHAR(n) NOT NULL, UNIQUE, DEFAULT, PRIMARY KEY (ID로 사용 시)
동적 문자형 (가변 길이 문자열) VARCHAR(n) NOT NULL, UNIQUE, DEFAULT
날짜 (년, 월, 일) DATE NOT NULL, DEFAULT, CHECK
시간 (시, 분, 초) TIME NOT NULL, DEFAULT, CHECK
날짜시간 (년, 월, 일, 시, 분, 초) DATETIME NOT NULL, DEFAULT CURRENT_TIMESTAMP

 

 

일반적인 SQL 제약조건 종류 (어떤 데이터 타입에도 적용 가능성 있음):

  • PRIMARY KEY: 테이블의 각 행을 고유하게 식별. (주로 INT + AUTO_INCREMENT 조합으로 많이 사용)
  • FOREIGN KEY: 다른 테이블의 기본 키를 참조하여 테이블 간의 관계를 설정.
  • UNIQUE: 해당 컬럼의 모든 값이 고유해야 함 (NULL 값은 DBMS에 따라 여러 개 허용될 수 있음).
  • NOT NULL: 해당 컬럼에 반드시 값이 있어야 함 (NULL 허용 안 함).
  • CHECK: 컬럼에 저장될 수 있는 값의 조건을 정의.
  • DEFAULT: 값을 명시적으로 지정하지 않았을 때 자동으로 입력될 기본값을 설정.

 

AUTO_INCREMENT에 대한 부연 설명:
AUTO_INCREMENT CREATE TABLE 예시에서 보셨듯이 INT 타입의 num 컬럼에 PRIMARY KEY와 함께 사용되어 자동으로 번호가 매겨지도록 하는 역할

 

CREATE TABLE buy (
   num           INT            AUTO_INCREMENT PRIMARY KEY, -- 이 부분!
   -- ... 나머지 컬럼들
);

 

 

CREATE TABLE [만들고_싶은_테이블의_이름] ( -- 예: CREATE TABLE orders (

    /* 첫 번째 컬럼 정의 */
    [첫_번째_컬럼의_이름]  [데이터_타입]  [이_컬럼만의_특별한_규칙1] [규칙2] ... ,
    -- 예시 SQL: order_id INT AUTO_INCREMENT PRIMARY KEY,
    -- 설명: 'order_id'라는 이름의 컬럼.
    --       데이터 타입은 정수(INT).
    --       새로운 주문이 추가될 때마다 자동으로 번호가 증가 (AUTO_INCREMENT).
    --       이 테이블의 각 주문을 고유하게 식별하는 기본 키 (PRIMARY KEY).

    /* 두 번째 컬럼 정의 */
    [두_번째_컬럼의_이름]  [데이터_타입]  [이_컬럼만의_특별한_규칙1] [규칙2] ... ,
    -- 예시 SQL: customer_id CHAR(8) NOT NULL,
    -- 설명: 'customer_id'라는 이름의 컬럼.
    --       데이터 타입은 고정 길이 8자리의 문자열(CHAR(8)).
    --       주문한 고객의 ID이며, 반드시 값이 있어야 함 (NOT NULL).

    /* 세 번째 컬럼 정의 */
    [세_번째_컬럼의_이름]  [데이터_타입]  [이_컬럼만의_특별한_규칙1] [규칙2] ... ,
    -- 예시 SQL: product_name VARCHAR(100) NOT NULL,
    -- 설명: 'product_name'이라는 이름의 컬럼.
    --       데이터 타입은 최대 100글자까지 저장 가능한 가변 길이 문자열(VARCHAR(100)).
    --       주문된 상품의 이름이며, 반드시 값이 있어야 함 (NOT NULL).

    /* 네 번째 컬럼 정의 */
    [네_번째_컬럼의_이름]  [데이터_타입]  [이_컬럼만의_특별한_규칙1] [규칙2] ... ,
    -- 예시 SQL: shipping_address VARCHAR(255) NULL,
    -- 설명: 'shipping_address'라는 이름의 컬럼.
    --       데이터 타입은 최대 255글자까지 저장 가능한 가변 길이 문자열(VARCHAR(255)).
    --       배송지 주소이며, 값이 없어도 됨 (NULL) - 예를 들어 매장 직접 수령의 경우.

    /* 다섯 번째 컬럼 정의 */
    [다섯_번째_컬럼의_이름] [데이터_타입]  [이_컬럼만의_특별한_규칙1] [규칙2] ... ,
    -- 예시 SQL: order_date DATE NOT NULL DEFAULT (CURRENT_DATE),
    -- 설명: 'order_date'라는 이름의 컬럼.
    --       데이터 타입은 날짜(DATE).
    --       주문 날짜이며, 반드시 값이 있어야 함 (NOT NULL).
    --       만약 주문 날짜를 명시하지 않으면, 현재 날짜가 자동으로 입력됨 (DEFAULT (CURRENT_DATE)).
    --       (참고: DBMS에 따라 CURRENT_DATE 또는 다른 함수를 사용)

    /* 여섯 번째 컬럼 정의 */
    [여섯_번째_컬럼의_이름] [데이터_타입]  [이_컬럼만의_특별한_규칙1] [규칙2] ... ,
    -- 예시 SQL: quantity INT NOT NULL CHECK (quantity > 0),
    -- 설명: 'quantity'라는 이름의 컬럼.
    --       데이터 타입은 정수(INT).
    --       주문 수량이며, 반드시 값이 있어야 함 (NOT NULL).
    --       수량은 항상 0보다 커야 한다는 조건 (CHECK (quantity > 0)).

    /* 테이블 전체에 적용되는 규칙 (외래 키 설정) */
    FOREIGN KEY ([이_테이블의_어떤_컬럼]) REFERENCES [다른_테이블_이름]([다른_테이블의_대표키_컬럼])
    -- 예시 SQL: FOREIGN KEY (customer_id) REFERENCES customer(customer_id)
    -- 설명: 이 테이블('orders')의 'customer_id' 컬럼은 'customer' 테이블의 'customer_id' 컬럼 값을 참조.
    --       즉, 'customer' 테이블에 실제로 존재하는 고객의 ID만 'orders' 테이블에 입력 가능.
    --       (데이터의 일관성과 무결성을 보장)

);
  • CREATE TABLE [만들고_싶은_테이블의_이름]:
    • 새로운 테이블을 만들겠다고 선언하고, 그 테이블의 이름을 지정합니다.
  • ( ... ):
    • 괄호 안에는 테이블을 구성하는 컬럼들의 정의와 테이블 전체에 적용될 제약 조건들이 들어갑니다. 각 컬럼 정의는 쉼표(,)로 구분합니다.
  • [컬럼의_이름]:
    • 테이블의 각 열(세로줄)에 붙이는 이름입니다. 데이터를 구분하는 기준이 됩니다. (예: product_id, member_id, product_name)
  • [데이터_타입]:
    • 해당 컬럼에 어떤 종류의 데이터(숫자, 문자, 날짜 등)를 저장할지 지정합니다. (예: INT, CHAR(8), VARCHAR(50), DATE)
  • [이_컬럼만의_특별한_규칙들] (컬럼 레벨 제약 조건):
    • 각 컬럼에 개별적으로 적용할 수 있는 규칙들입니다. 여러 개를 함께 쓸 수 있습니다.
      • AUTO_INCREMENT: (주로 숫자 타입에 사용) 새로운 데이터가 추가될 때마다 자동으로 숫자가 1씩 증가합니다. 기본 키(PRIMARY KEY)에 많이 사용됩니다.
      • PRIMARY KEY: 이 컬럼이 테이블의 대표 키(기본 키)임을 나타냅니다. 이 컬럼의 값은 각 행을 고유하게 식별하며, NULL이거나 중복될 수 없습니다.
      • NOT NULL: 이 컬럼에는 반드시 값이 있어야 합니다. 비워둘 수 없습니다.
      • NULL: 이 컬럼은 값을 비워둬도 괜찮습니다. (명시하지 않으면 기본적으로 NULL 허용인 경우가 많음)
      • UNIQUE: 이 컬럼의 값은 테이블 내에서 중복될 수 없습니다. (단, NULL 값은 DBMS에 따라 여러 개 허용될 수 있음)
      • CHECK(조건식): 이 컬럼에 들어갈 수 있는 값의 조건을 지정합니다. (예: CHECK(price > 0)는 가격이 0보다 커야 한다는 의미)
      • DEFAULT 기본값: 데이터를 입력할 때 이 컬럼에 값을 명시적으로 주지 않으면, 여기에 지정된 기본값이 자동으로 들어갑니다. (예: DEFAULT 0는 값을 안 넣으면 0이 들어감)
  • FOREIGN KEY([이_테이블의_어떤_컬럼]) REFERENCES [다른_테이블_이름]([다른_테이블의_대표키_컬럼]) (테이블 레벨 제약 조건):
    • 테이블의 특정 컬럼이 다른 테이블의 기본 키를 참조하도록 설정하여 테이블 간의 관계를 맺어줍니다. 데이터의 일관성과 무결성을 유지하는 데 중요합니다.

 

DML (데이터 조작어)

테이블의 데이터를 삽입, 조회, 수정, 삭제하는 데 사용되는 명령어들입니다.

구분 명령어 설명 (무엇을 하는가?) 내용 (예시 SQL) 일반 형식 / 핵심 구조
입력 INSERT INTO ... VALUES 테이블에 새로운 행(데이터)을 직접 값으로 입력 member VALUES("TWC","트와이스",9,"서울","02","11111111",167,"2015.10.19"); INSERT INTO [테이블명] ([컬럼1],...) VALUES ([값1],...); (컬럼명 생략 시 모든 컬럼 순서대로)
  INSERT INTO ... SELECT 다른 테이블에서 조회(SELECT)한 결과를 새로운 행으로 입력 city_popul SELECT Name, population FROM world.city; INSERT INTO [테이블명] ([대상컬럼1],...) SELECT [소스컬럼1],... FROM [소스테이블명] WHERE [조건];
출력 SELECT * 테이블의 모든 컬럼(*) 데이터를 조회 FROM member; SELECT * FROM [테이블명];
  SELECT [column(s)] 테이블에서 지정한 컬럼(들)의 데이터를 조회 mem_name FROM member; SELECT [컬럼명1], [컬럼명2],... FROM [테이블명];
    (여러 컬럼 조회 예시) addr, debut_date, mem_name FROM member; SELECT [컬럼명1], [컬럼명2],... FROM [테이블명];
  SELECT * FROM ... WHERE WHERE 절의 조건을 만족하는 행의 모든 컬럼 데이터를 조회 member WHERE mem_name="블랙핑크"; SELECT * FROM [테이블명] WHERE [조건식]; (아래 WHERE 구문 조건식 표 참고)
    (숫자 조건 예시) member WHERE mem_number=4; SELECT * FROM [테이블명] WHERE [컬럼명] = [숫자값];
    (비교 연산자 예시) member WHERE height<=162; SELECT * FROM [테이블명] WHERE [컬럼명] <= [값];
    (AND 연산자 예시) member WHERE height>=165 AND mem_number>6; SELECT * FROM [테이블명] WHERE [컬럼1] >= [값1] AND [컬럼2] > [값2];
    (OR 연산자 예시) member WHERE height>=165 OR mem_number>6; SELECT * FROM [테이블명] WHERE [컬럼1] >= [값1] OR [컬럼2] > [값2];
    (AND를 이용한 범위 조건 예시) member WHERE height>= 163 AND height<=165; SELECT * FROM [테이블명] WHERE [컬럼명] >= [값1] AND [컬럼명] <= [값2];
    (BETWEEN을 이용한 범위 조건 예시) member WHERE height BETWEEN 163 AND 165; SELECT * FROM [테이블명] WHERE [컬럼명] BETWEEN [값1] AND [값2];
    (OR를 이용한 다중 조건 예시) member WHERE addr="경기" OR addr="경남" OR addr="전남"; SELECT * FROM [테이블명] WHERE [컬럼명]=[값1] OR [컬럼명]=[값2] OR [컬럼명]=[값3];
    (IN을 이용한 다중 조건 예시) member WHERE addr IN("경기","경남","전남"); SELECT * FROM [테이블명] WHERE [컬럼명] IN ([값1], [값2], [값3]);
    (LIKE를 이용한 패턴 매칭 예시 - 시작 문자) member WHERE mem_name LIKE "우%"; SELECT * FROM [테이블명] WHERE [컬럼명] LIKE '[시작문자]%';
    (LIKE를 이용한 패턴 매칭 예시 - 특정 위치 문자) member WHERE mem_name LIKE "__핑크"; SELECT * FROM [테이블명] WHERE [컬럼명] LIKE '__[끝문자패턴]'; (_는 한 글자 와일드카드)
  SELECT ...
ORDER BY
조회된 결과를 특정 컬럼 기준으로 정렬 (ASC: 오름차순, DESC: 내림차순) mem_id, mem_name, debut_date, height FROM member ORDER BY height DESC; `SELECT [컬럼리스트] FROM [테이블명] ORDER BY [정렬기준컬럼] [ASC
    (다중 컬럼 정렬 예시) mem_id, mem_name, debut_date, height FROM member ORDER BY height DESC, debut_date ASC; `SELECT [컬럼리스트] FROM [테이블명] ORDER BY [컬럼1] [DESC
  SELECT ... LIMIT 조회된 결과 중 상위 N개의 행만 반환 mem_id, mem_name, debut_date, height FROM member LIMIT 3; SELECT [컬럼리스트] FROM [테이블명] LIMIT [개수];
    (ORDER BY 와 함께 사용, 특정 순서의 상위 N개) mem_id, mem_name, debut_date, height FROM member ORDER BY debut_date LIMIT 3; SELECT [컬럼리스트] FROM [테이블명] ORDER BY [정렬기준컬럼] LIMIT [개수];
    (특정 시작점부터 N개의 행만 반환 - 페이징 시 사용) mem_name, height FROM member ORDER BY height DESC LIMIT 3,2; SELECT [컬럼리스트] FROM [테이블명] ORDER BY [정렬기준컬럼] DESC LIMIT [시작행(0부터)],[개수]; (또는 OFFSET)
  SELECT
DISTINCT
조회된 결과에서 지정한 컬럼의 중복된 값을 제거하고 표시 addr FROM member; SELECT DISTINCT [컬럼명] FROM [테이블명];
  SELECT ...
GROUP BY
지정한 컬럼을 기준으로 데이터를 그룹화하고, 각 그룹에 대해 집계 함수 적용 mem_id, SUM(amount) FROM buy GROUP BY mem_id; SELECT [그룹화컬럼], [집계함수]([집계대상컬럼]) FROM [테이블명] GROUP BY [그룹화컬럼];
    (계산된 값을 집계하는 예시) mem_id, SUM(price*amount) FROM buy GROUP BY mem_id; SELECT [그룹화컬럼], SUM([컬럼1]*[컬럼2]) FROM [테이블명] GROUP BY [그룹화컬럼];
  SELECT AVG(...) 지정한 컬럼의 평균값을 계산 (GROUP BY 없이 전체 평균) AVG(amount) FROM buy; SELECT AVG([컬럼명]) FROM [테이블명];
  SELECT COUNT(*) 테이블의 전체 행의 개수를 반환 COUNT(*) FROM buy; SELECT COUNT(*) FROM [테이블명];
  SELECT COUNT(column) 지정한 컬럼에서 NULL이 아닌 값의 개수를 반환 COUNT(phone1) FROM buy; SELECT COUNT([컬럼명]) FROM [테이블명];
  SELECT ...
GROUP BY ...
HAVING
GROUP BY로 그룹화된 결과에 대해 조건을 적용하여 필터링 mem_id, SUM(price*amount) FROM buy GROUP BY mem_id HAVING SUM(price*amount) > 1000; SELECT [그룹화컬럼], [집계함수]([컬럼]) FROM [테이블명] GROUP BY [그룹화컬럼] HAVING [그룹에대한조건];
    (HAVING ORDER BY 함께 사용 예시) mem_id, SUM(price*amount) FROM buy GROUP BY mem_id HAVING SUM(price*amount) > 1000 ORDER BY SUM(price*amount) DESC; ... HAVING [그룹조건] ORDER BY [정렬기준];
  SELECT CAST(...) 표현식의 데이터 타입을 명시적으로 변환 (ANSI 표준) CAST(AVG(price) AS DECIMAL(10,2)) FROM buy; SELECT CAST([표현식] AS [새로운데이터타입]) FROM [테이블명];
  SELECT
CONVERT(...)
표현식의 데이터 타입을 명시적으로 변환 (DBMS별 함수) CONVERT(AVG(price), DECIMAL(10,2)) FROM buy; SELECT CONVERT([표현식], [새로운데이터타입]) FROM [테이블명];
수정 UPDATE ...
SET ... WHERE
WHERE 절의 조건을 만족하는 행의 데이터를 수정 city_popul SET city_name = '서울' WHERE city_name='Seoul'; UPDATE [테이블명] SET [컬럼명] = '[새값]' WHERE [조건식];
    (여러 컬럼 동시 수정 예시) city_popul SET city_name = '서울', population=0 WHERE city_name='Newyork'; UPDATE [테이블명] SET [컬럼1] = '[새값1]', [컬럼2] = [새값2] WHERE [조건식];
    (모든 행 데이터 수정 예시 - WHERE 절 없음, 주의!) city_popul SET population = population / 1000; UPDATE [테이블명] SET [컬럼명] = [표현식];
삭제 DELETE FROM ... WHERE WHERE 절의 조건을 만족하는 행의 데이터를 삭제 city_popul WHERE city_name LIKE 'New%'; DELETE FROM [테이블명] WHERE [조건식];

 

WHERE 구문의 조건식

조건식 예시 (SQL 부분) 일반 형식 / 핵심 구조 내용 (설명)
mem_name="블랙핑크" [컬럼명] = '[문자열값]' 같다: 컬럼의 값이 지정된 문자열 값과 정확히 일치하는 경우
mem_number=4 [컬럼명] = [숫자값] 같다: 컬럼의 값이 지정된 숫자 값과 정확히 일치하는 경우
height<=162 [컬럼명] <= [숫자값] 작거나 같다: 컬럼의 값이 지정된 숫자 값보다 작거나 같은 경우
height>=165 AND mem_number>6 [컬럼1] >= [값1] AND [컬럼2] > [값2] 그리고 (AND): 두 조건 모두 참일 때 전체 조건이 참
height>=165 OR mem_number>6 [컬럼1] >= [값1] OR [컬럼2] > [값2] 또는 (OR): 두 조건 중 하나라도 참일 때 전체 조건이 참
height>= 163 AND height<=165 [컬럼명] >= [값1] AND [컬럼명] <= [값2] 범위 (AND 사용): 컬럼의 값이 [값1] 이상이고 [값2] 이하인 경우
height BETWEEN 163 AND 165 [컬럼명] BETWEEN [값1] AND [값2] 범위 (BETWEEN 사용): 컬럼의 값이 [값1]과 [값2] 사이인 경우 (양 끝 값 포함)
addr="경기" OR addr="경남" OR addr="전남" [컬럼명] = '[값1]' OR [컬럼명] = '[값2]' OR ... 여러 OR 조건: 컬럼의 값이 여러 값 중 하나와 일치하는지 확인 (아래 IN과 비교)
addr IN("경기","경남","전남") [컬럼명] IN ('[값1]', '[값2]', '[값3]', ...) 포함 여부 (IN): 컬럼의 값이 괄호 안 목록의 값들 중 어느 하나라도 일치하는 경우 (여러 OR 조건을 간결하게 표현)
mem_name LIKE "우%" [컬럼명] LIKE '[시작문자]%' 패턴 일치 (LIKE): "우"로 시작하는 모든 문자열 (%는 0개 이상의 문자)
mem_name LIKE "__핑크" [컬럼명] LIKE '__[패턴]' 패턴 일치 (LIKE): 앞 두 글자는 아무거나 오고 "핑크"로 끝나는 문자열 (_는 정확히 한 글자)

 

 

 

 

제미니가 정리한 표2

1. DDL (Data Definition Language) - 데이터 정의어

데이터베이스나 테이블의 구조를 정의, 변경, 삭제하는 명령어입니다.

구분 명령어 설명 및 예시
데이터베이스 CREATE DATABASE 새로운 데이터베이스를 생성합니다. CREATE DATABASE market_db;
  DROP DATABASE 기존 데이터베이스를 삭제합니다. DROP DATABASE market_db;
  USE 사용할 데이터베이스를 지정합니다. USE market_db;
테이블 CREATE TABLE 새로운 테이블을 생성합니다. (컬럼명, 데이터타입, 제약조건 포함) sql<br>CREATE TABLE member (<br> member_id CHAR(8) NOT NULL PRIMARY KEY,<br> member_name VARCHAR(10)<br>);<br>
  DROP TABLE 기존 테이블을 삭제합니다. DROP TABLE member;
  ALTER TABLE 기존 테이블의 구조를 변경합니다. • 컬럼 추가: ALTER TABLE member ADD email CHAR(30) NULL UNIQUE;제약조건 추가: ALTER TABLE member ADD CONSTRAINT PRIMARY KEY(mem_id);기본값 변경: ALTER TABLE member ALTER COLUMN phone1 SET DEFAULT '02';

2. 테이블 생성 시 주요 요소 (데이터 타입 및 제약조건)

CREATE TABLE 이나 ALTER TABLE 사용 시 각 컬럼에 적용하는 규칙입니다.

구분 종류 설명
데이터 타입 INT 정수형 숫자
  FLOAT, DOUBLE 실수형 숫자
  CHAR(n) 고정 길이 문자열 (n: 글자 수)
  VARCHAR(n) 가변 길이 문자열 (n: 최대 글자 수)
  DATE, TIME, DATETIME 날짜, 시간, 날짜 및 시간
제약 조건 PRIMARY KEY 기본 키: 테이블의 대표 키. (NULL 값 불허, 중복 값 불허)
  FOREIGN KEY 외래 키: 다른 테이블의 기본 키를 참조하여 테이블 간의 관계를 설정.
  AUTO_INCREMENT 자동 증가: 숫자 타입에만 적용. 데이터 입력 시 자동으로 1씩 증가.
  UNIQUE 고유 키: 해당 컬럼의 값은 중복될 수 없음. (NULL 값은 허용)
  CHECK 검사: 입력될 수 있는 값의 조건을 지정. (예: CHECK(price > 1000))
  DEFAULT 기본값: 값을 입력하지 않았을 때 자동으로 들어갈 값을 지정.
  NOT NULL / NULL NULL 허용 여부: NOT NULL은 NULL 값을 허용하지 않음을 의미.

3. DML (Data Manipulation Language) - 데이터 조작어

테이블 안의 데이터를 입력, 조회, 수정, 삭제하는 명령어입니다.

구분 명령어 설명 및 예시
입력 (INSERT) INSERT INTO ... VALUES 테이블에 새로운 행(데이터)을 직접 입력합니다. INSERT INTO member VALUES('TWC', '트와이스', 9, '서울');
  INSERT INTO ... SELECT 다른 테이블에서 조회한 데이터를 입력합니다. INSERT INTO city_popul SELECT Name, population FROM world.city;
수정 (UPDATE) UPDATE ... SET ... WHERE 특정 조건의 행 데이터를 수정합니다. UPDATE city_popul SET city_name = '서울' WHERE city_name = 'Seoul';
  UPDATE ... SET 모든 행의 데이터를 수정합니다. (주의해서 사용!) UPDATE city_popul SET population = population / 1000;
삭제 (DELETE) DELETE FROM ... WHERE 특정 조건의 행 데이터를 삭제합니다. DELETE FROM city_popul WHERE city_name LIKE 'New%';

4. SELECT - 데이터 조회 (가장 중요!)

구분 주요 구문 설명 및 예시
기본 조회 SELECT 컬럼명 FROM 테이블명 특정 컬럼의 데이터를 조회합니다. SELECT mem_name, debut_date FROM member;
  SELECT * FROM 테이블명 모든 컬럼의 데이터를 조회합니다. SELECT * FROM member;
조건 조회 WHERE 조건식 조건에 맞는 데이터만 필터링합니다. (아래 WHERE 조건식 표 참고) SELECT * FROM member WHERE height >= 165 AND mem_number > 6;
정렬 ORDER BY 컬럼명 [ASC/DESC] 결과를 특정 컬럼 기준으로 정렬합니다. (ASC: 오름차순, DESC: 내림차순) SELECT * FROM member ORDER BY height DESC, debut_date ASC;
결과 수 제한 LIMIT 개수 상위 N개의 결과만 보여줍니다. SELECT * FROM member ORDER BY debut_date LIMIT 3;
  LIMIT 시작행, 개수 특정 위치에서부터 N개의 결과만 보여줍니다. (시작은 0부터) SELECT mem_name, height FROM member ORDER BY height DESC LIMIT 3, 2; (4번째부터 2개)
중복 제거 DISTINCT 컬럼명 지정된 컬럼에서 중복된 값을 제거하고 하나씩만 보여줍니다. SELECT DISTINCT addr FROM member;
그룹화 및 집계 GROUP BY 컬럼명 특정 컬럼을 기준으로 데이터를 그룹화하고, 집계 함수를 사용합니다. • SUM(): 합계, AVG(): 평균, COUNT(): 개수 SELECT mem_id, SUM(price*amount) FROM buy GROUP BY mem_id;
그룹 조건 HAVING 조건식 GROUP BY로 생성된 그룹에 대한 조건을 지정합니다. SELECT mem_id, SUM(price*amount) FROM buy GROUP BY mem_id HAVING SUM(price*amount) > 1000;
형 변환 CAST(값 AS 타입) CONVERT(값, 타입) 데이터의 타입을 변환합니다. SELECT CAST(AVG(price) AS SIGNED) FROM buy;

5. WHERE 절 조건 연산자

연산자/구문 예시 의미
= mem_number = 4 같다
<=, >= height <= 162 작거나 같다, 크거나 같다
AND height >= 165 AND mem_number > 6 두 조건 모두 만족 (그리고)
OR height >= 165 OR mem_number > 6 두 조건 중 하나라도 만족 (또는)
BETWEEN a AND b height BETWEEN 163 AND 165 a와 b 사이의 값 (a, b 포함)
IN (list) addr IN ('경기', '경남', '전남') 리스트에 포함된 값 중 하나와 일치
LIKE '패턴' mem_name LIKE '우%' 패턴과 일치하는 문자열 (%: 0개 이상의 문자, _: 1개의 문자) • '우%': '우'로 시작하는 모든 문자열 • '__핑크': 앞 두 글자는 아무거나, '핑크'로 끝나는 문자열

'SQL' 카테고리의 다른 글

*두 번째 시험 예상 문제  (0) 2025.06.20
공부용 시험문제  (0) 2025.06.18
스토어드 프로시저  (0) 2025.06.13
[SQL][25.06.12] 176p 내부 조인 ~ 312p  (0) 2025.06.12
혼공 146p 월드 데이터 복사  (0) 2025.06.11