SQL 35

정규 표현식

정규표현식이란?정규표현식(Regular Expression)은 문자열에서 특정 패턴을 찾기 위한 문법입니다.주로 검색(Search), 검증(Validation), 치환(Replace) 등에 사용됩니다. ^01[016-9]-\d{3,4}-\d{4}$ 이 정규식은 무엇을 의미하나요?이 표현식은 "휴대폰 번호" 형태의 문자열을 찾기 위한 패턴입니다.예를 들어 010-1234-5678과 같은 전화번호를 찾을 수 있습니다. 구성요소 상세 분석정규식 구간설명^문자열의 시작을 의미함 (문자열이 이 패턴으로 시작해야 함)01[016-9]01로 시작하고, 세 번째 자리는 0, 1, 6~9 중 하나여야 함-하이픈 문자, 전화번호 구분자 (-) 그대로 포함되어야 함\d{3,4}숫자(digit)가 3자리 또는 4자리여야 함 ..

SQL 2025.07.15

패턴 비교 연산자

LIKE, %, _ 연산자 설명LIKE: 문자열이 특정 패턴과 일치하는지를 비교하는 연산자입니다.% : 0글자 이상의 어떤 문자든 포함 가능_ : 정확히 1글자의 어떤 문자든 포함 가능 '박'씨 성을 가진 회원을 조회하기SELECT * FROM MEMBER WHERE NAME LIKE '박%';'박%'는 이름이 '박'으로 시작하는 모든 사람을 의미합니다.예: 박철수, 박지성, 박 등= 연산자는 패턴이 아닌 정확한 값을 의미하므로, '박%'처럼 와일드카드를 사용할 땐 LIKE를 써야 올바르게 작동합니다. '박'씨이고 이름이 2글자인 사람(외자 이름)을 조회하기SELECT * FROM MEMBER WHERE NAME LIKE '박_';'박_'은 "박"으로 시작하고 그 뒤에 정확히 한 글자가 오는 패턴을 의미..

SQL 2025.07.15

관계 연산자

관계 연산자란?관계 연산자는 WHERE 조건절에서 여러 개의 조건을 조합하거나 비교할 때 사용하는 연산자입니다. 주요 연산자 목록AND : 모든 조건이 참일 때만 결과에 포함됩니다.OR : 조건 중 하나라도 참이면 결과에 포함됩니다.NOT : 조건을 부정합니다.IN (값1, 값2, ...) : 지정된 값 중 하나라도 일치하면 결과에 포함됩니다.BETWEEN A AND B : A 이상 B 이하의 범위에 포함되는 값만 결과에 포함됩니다.NOT IN (값1, 값2, ...) : 지정된 값에 포함되지 않은 것들만 결과에 포함됩니다. 조회수가 0, 1, 2인 게시글만 조회하고 싶을 때아래는 세 가지 방식이 있지만, 모두 결과는 동일합니다.방법 1: OR 연산자 사용SELECT * FROM NOTICE WHERE ..

SQL 2025.07.15

비교 연산자

NULL이란?NULL은 값이 '없다'는 의미입니다.숫자 0이나 빈 문자열 ''과는 다릅니다.정의되지 않은 값, 미입력된 값, 알 수 없는 값을 의미합니다. 왜 = 'NULL'은 안 되는가?이유: 'NULL'은 문자열 "NULL"일 뿐, 진짜 NULL이 아님-- ❌ 이렇게 쓰면 안 됨SELECT * FROM NOTICE WHERE CONTENT = 'NULL';이건 "NULL"이라는 문자열과 비교하는 것이지,진짜로 비어 있는(NULL인) 컬럼과는 전혀 관계없습니다. 올바른 방법: IS NULL, IS NOT NULL 사용NULL 값을 조회하려면:SELECT * FROM NOTICE WHERE CONTENT IS NULL;CONTENT 컬럼에 아무 값도 입력되지 않은 (비어 있는) 행만 조회됨 NULL이 아..

SQL 2025.07.15

산술 연산자

오라클의 문자열 결합(Concatenation)핵심 규칙+숫자 더하기SELECT 1 + '3' FROM DUAL;4 (문자열 '3'이 숫자로 변환되어 더해짐)` `문자열 결합 예제 1: 숫자 덧셈SELECT 1 + '3' FROM DUAL;여기서 '3'은 문자지만 Oracle이 자동으로 숫자로 변환해서 더합니다.결과: 4 (숫자)Oracle은 +를 "문자열 결합"이 아닌 오직 "숫자 덧셈"으로만 처리합니다. 예제 2: 문자열 결합SELECT 1 || 'a' FROM DUAL;||는 문자열을 이어주는 연산자입니다.숫자 1도 문자열로 자동 변환되어 '1a'라는 결과가 나옵니다. 실무 활용: 컬럼값 이어 붙이기예를 들어, MEMBER 테이블에 있는 NAME과 ID를 괄호로 묶어서 표현하고 싶다면:SELEC..

SQL 2025.07.15

트랜잭션 처리를 위한 COMMIT과 ROLLBACK

트랜잭션(Transaction)이란 무엇인가?트랜잭션이란 데이터베이스에서 하나의 논리적 작업 단위 또는 업무 처리 단위를 의미합니다.트랜잭션은 반드시 모두 성공하거나, 아니면 모두 실패해야 합니다. 중간에 일부만 실행되거나 저장되어서는 안 됩니다. 트랜잭션은 "업무 단위"와 "SQL 명령어 단위"로 나뉩니다업무적인 단위 (논리 단위)예시: 계좌 이체, 게시글 등록 같은 실제 서비스 기능예:계좌이체 → 보내는 사람의 계좌 잔액 차감, 받는 사람의 계좌 잔액 증가게시글 등록 → 게시글 데이터 저장, 게시글 수 증가물리적인 명령어 단위 (SQL 명령어)예:계좌이체 → UPDATE 보내는사람, UPDATE 받는사람게시글 등록 → INSERT 게시글, UPDATE 게시글수이런 여러 SQL 명령어가 트랜잭션 하나로..

SQL 2025.07.15

데이터 조작하기

INSERT 문: 데이터 삽입하기▶ 기본 문법INSERT INTO VALUES (값1, 값2, ...);VALUES 뒤 괄호 안에 테이블의 모든 컬럼 순서에 맞게 값을 나열해야 합니다.▶ 모든 컬럼에 값을 넣는 방법INSERT INTO MEMBER VALUES( 'newlec', '111', '홍길동', '남성', '1995-02-29', '010-2365-8956', 'newlec@newlecture.com', '2014-05-23');컬럼명을 따로 명시하지 않으면, 테이블의 전체 컬럼 순서대로 모든 값을 넣어야 합니다.만약 생략하거나 순서가 틀리면 오류 발생합니다.▶ 원하는 컬럼만 지정해서 삽입하기INSERT INTO MEMBER(ID, PWD) VALUES('newlec', '111');IN..

SQL 2025.07.15

테이블 준비

전체 테이블 관계 구조 이해이 ERD(Entity-Relationship Diagram)는 다음과 같은 테이블들 간의 관계를 나타냅니다:주요 테이블MEMBER: 사용자(회원) 정보를 저장하는 테이블입니다.ROLE: 사용자 역할(예: 관리자, 일반 사용자 등)을 정의하는 테이블입니다.MEMBER_ROLE: 사용자와 역할을 연결하는 다대다 관계 테이블입니다.NOTICE: 공지사항을 저장하는 테이블입니다.COMMENT: 공지사항에 달린 댓글을 저장하는 테이블입니다. 테이블별 SQL 및 구조 설명CREATE TABLE MEMBER 다른 테이블들과 관계에서 중심 역할을 합니다.CREATE TABLE NOTICECREATE TABLE NOTICE ( ID NUMBER, TITLE ..

SQL 2025.07.14

테이블 수정

테이블 생성하기 – CREATE TABLE원래 테이블 구조CREATE TABLE MEMBER ( ID VARCHAR2(50), PWD NVARCHAR2(50), NAME NVARCHAR2(50), GENDER NCHAR(2), AGE NUMBER, BIRTHDAY CHAR(10 BYTE), PHONE CHAR(13 BYTE), REGDATE DATE);이 테이블은 다음과 같은 정보를 저장합니다:ID: 사용자 ID, 최대 50바이트 (영문 기준 약 50자)PWD, NAME: 유니코드 문자열, 50자까지GENDER: 한 글자 성별 (유니코드 문자 2바이트)AGE: 숫자BIRTHDAY: 생년월일, 고정 10..

SQL 2025.07.14

오라클 데이터 형식

오라클 데이터 타입의 4가지 분류Oracle Built-in Data Types는 크게 다음 네 가지로 나뉩니다:Character 형식 (문자형)문자열을 저장할 때 사용예: CHAR, VARCHAR2, NCHAR, NVARCHAR2Numeric 형식 (숫자형)정수, 실수 저장예: NUMBER, FLOAT, INTEGERDate 형식 (날짜/시간)날짜/시간 정보 저장예: DATE, TIMESTAMPLOB 형식 (대용량)대용량 텍스트나 바이너리 저장예: CLOB, BLOB VALUE TYPE 예시 설명Character'nEWlec', 'A', '148'Numeric3, 3.85, 3.85F, 137Date'2013-02-09'Timestamp'2013-06-03 10:38:29.000000''148'은 문자..

SQL 2025.07.14