-
[2월 4주차-2/24(3)] MySQL 기초 문법 정리 🚀Why Not SW CAMP 5기/수업 기록 2025. 2. 24. 17:46
📌 MySQL Workbench 실습
🔹데이터베이스 및 테이블 관리
# 데이터베이스 생성 및 삭제 CREATE DATABASE test; DROP DATABASE test; # 데이터베이스 사용 USE test; # 테이블 생성 CREATE TABLE test_create_table ( col_1 INT NOT NULL, col_2 VARCHAR(50), col_3 DATETIME ); # 테이블 삭제 DROP TABLE test_create_table;🔹데이터 추가 및 수정
# 데이터 삽입 INSERT INTO test_create_table (col_1, col_2, col_3) VALUES (1, 'doitsql', '2025-02-24'); INSERT INTO test_create_table VALUES (2, 'test2', '2025-02-24'); INSERT INTO test_create_table (col_1, col_2) VALUES (3, 'doitsql'); INSERT INTO test_create_table (col_1) VALUES (4); # 데이터 조회 SELECT * FROM test_create_table; # 데이터 수정 (key 값 필수) UPDATE test_create_table SET col_2 = 'test1' WHERE col_1 = 1; # 데이터 삭제 DELETE FROM test_create_table WHERE col_1 = 2;
📌 데이터 모델링 단계 🏗️
1️⃣ 요구사항 분석 → 2️⃣ 개념 모델링 → 3️⃣ 논리 모델링 → 4️⃣ 물리 모델링 → 5️⃣ DB 구현
✅ 릴레이션(Relationships)
- 1:1 관계
- 1:N 관계
- N:M 관계
📌 SQL 문법 정리
🔹 SHOW 문법
SHOW COLUMNS FROM sakila.customer; -- 컬럼 구조 조회 SHOW TABLES; -- 데이터베이스 내 테이블 목록 조회 SHOW DATABASES; -- 전체 데이터베이스 목록 조회🔹 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY 예제
📌 부서별 평균 급여 계산 후, 평균 급여가 50,000 이상인 부서를 급여순 정렬
SELECT department, AVG(salary) AS avg_salary -- ① 조회할 컬럼 선택 FROM employees -- ② 조회할 테이블 지정 WHERE salary > 30000 -- ③ 급여 30000 초과인 직원만 선택 GROUP BY department -- ④ 부서별로 그룹화 HAVING AVG(salary) >= 50000 -- ⑤ 평균 급여 50000 이상인 부서만 필터링 ORDER BY avg_salary DESC; -- ⑥ 평균 급여가 높은 순으로 정렬🔹 ORDER BY와 LIMIT
-- 100번째부터 10개 조회 (구버전 문법) SELECT * FROM customer ORDER BY customer_id ASC LIMIT 100, 10; -- 최신 문법 SELECT * FROM customer ORDER BY customer_id ASC LIMIT 10 OFFSET 100;
📌 SQL 논리 연산자 정리
--all, and, any, between and, exists, in, like, not, or, some(any와 동일) SELECT * FROM employees e WHERE salary BETWEEN 40000 AND 60000 -- (1) 급여가 40000~60000 사이 AND department IN ('IT', 'HR', 'Sales') -- (2) IT, HR, Sales 부서 AND name LIKE 'J%' -- (3) 이름이 'J'로 시작 AND salary > ALL (SELECT salary FROM employees WHERE department = 'HR') -- (4) HR 부서의 모든 급여보다 큼. (SELECT MAX(salary) FROM employees WHERE department = 'HR')로 변경 가능 AND salary > ANY (SELECT salary FROM employees WHERE department = 'Sales') -- (5) Sales 부서 일부 급여보다 큼. (SELECT MIN(salary) FROM employees WHERE department = 'Sales')로 변경 가능 AND EXISTS (SELECT 1 FROM departments d WHERE d.id = e.department_id) -- (6) 부서가 존재하는 직원 AND NOT department = 'Finance' -- (7) Finance 부서는 제외 OR (salary > 70000 AND department = 'Marketing'); -- (8) 급여가 70000 초과 & Marketing 부서는 예외로 포함🔹 LIKE 연산자 정리
%a 'a'로 끝나는 단어 a% 'a'로 시작하는 단어 %a% 'a'가 포함된 단어 _a% 두 번째 글자가 'a' _____ 정확히 5글자인 단어 A_C% 첫 글자가 'A', 세 번째가 'C' 🔹 특수 문자 검색 (ESCAPE 사용)
-- `%` 문자가 포함된 데이터 검색 SELECT * FROM table_name WHERE column_name LIKE '%\%%' ESCAPE '\'; -- `_` 문자가 포함된 데이터 검색 SELECT * FROM table_name WHERE column_name LIKE '%\_%' ESCAPE '\';
📌 정규 표현식 (REGEXP) 정리
🔹기본 패턴 연산자
패턴 의미 예제 결과 . 아무 글자 하나 'a.b' "acb", "a1b", "a_b" (❌ "ab") * 이전 문자가 0번 이상 반복 'ab*c' "ac", "abc", "abbc", "abbbc" + 이전 문자가 1번 이상 반복 'ab+c' "abc", "abbc", "abbbc" (❌ "ac") ^ 문자열 시작 '^A' "Alice", "Adam" (❌ "Bob Alice") $ 문자열 끝 'a$' "Linda", "Elsa" (❌ "Alice A") | OR (또는) [...] 괄호 안의 문자 중 하나 '[aeiou]' "Alice", "Bob", "Charlie" [^...] 괄호 안의 문자 제외 '[^aeiou]' "Chris", "Bob" (모음 없는 문자 포함)
🔹반복 횟수 지정
{n} n번 반복 'a{2}' "aa" (❌ "a", "aaa") {n,} 최소 n번 반복 'a{2,}' "aa", "aaa", "aaaa" {n,m} n~m번 반복 'a{2,4}' "aa", "aaa", "aaaa" (❌ "a", "aaaaa")
📌 예제 SQL 문
-- 이름이 'A'로 시작하는 사람 검색 SELECT * FROM employees WHERE name REGEXP '^A'; -- 이름이 'e' 또는 'a'가 포함된 사람 검색 SELECT * FROM employees WHERE name REGEXP 'e|a'; -- 이름이 정확히 5글자인 사람 검색 SELECT * FROM employees WHERE name REGEXP '^.{5}$'; -- 숫자가 포함된 이름 검색 SELECT * FROM employees WHERE name REGEXP '[0-9]';
📌 NULL 값 조회
-- NULL 값 조회 SELECT * FROM address WHERE address2 IS NULL; -- NULL이 아닌 값 조회 SELECT * FROM address WHERE address2 IS NOT NULL; SELECT * FROM address WHERE address2 = '';
이제 MySQL의 핵심 개념이 정리되었어요! 🔥 추가로 궁금한 점이 있으면 언제든지 질문해 주세요 😊
'Why Not SW CAMP 5기 > 수업 기록' 카테고리의 다른 글
[2월 4주차-2/25(2)]🎓학사 관리 테이블 실습 - SQL 문제 풀이 (0) 2025.02.25 [2월 4주차-2/25(1)]MySQL 데이터 그룹화, 테이블 조작, 외래키 설정 및 데이터 유형 정리 (0) 2025.02.25 [2월 4주차-2/24(2)]WAS(Web Application Server)와 ANSI SQL 정리 (1) 2025.02.24 [2월 4주차-2/24(1)]MySQL 8.2 버전 함수 사전 📖 (0) 2025.02.24 [2월 3주차-2/21]😊 병원 노쇼 환자 분석 🏥 (2) 2025.02.24