정보처리기사 실기 sql
SQL -----------------------------------------------------
예제 ----------------------
https://www.youtube.com/watch?v=TCwfzag23G8&list=PLz95GL3y9Hv0fbwTxWqc3dni3hCA7OXgj&index=8
16분 47초 17번 풀어보기
CREATE TABLE 학생 (
학번 VARCHAR(50),
이름 VARCHAR(50),
학년 INTEGER
);
INSERT INTO 학생
VALUES
('20222202', '김구름', 2),
('20222203', '김구룸', 3),
('20222204', '김룸룸', 3),
('20222205', '김룸루미', 4);
SELECT 학번, 이름
FROM 학생
WHERE 학년 in (3, 4);
-----
------
CREATE TABLE A (
names VARCHAR(50)
);
INSERT INTO A
VALUES
("smith"),
("allen"),
("scott");
CREATE TABLE B (
rules VARCHAR(50)
);
INSERT INTO B
VALUES
("s%"),
("%t%");
SELECT *
FROM A;
SELECT *
FROM B;
SELECT COUNT(*) CNT
FROM A CROSS JOIN B
WHERE A.names LIKE B.rules;
MySQL에서 WHERE A.names LIKE B.rules는 테이블 A의 names 컬럼에 있는 데이터가 테이블 B의 rules 컬럼에 정의된 패턴과 일치하는지 비교하여 데이터를 조회하라는 의미입니다.주로
2개의 테이블을 조인하거나 서브쿼리를 사용할 때, 특정 문자열 패턴을 동적으로 비교하기 위해 사용되는 조건절입니다.1. 주요 특징 및 의미패턴 매칭: LIKE는 =와 달리 부분 일치 검색을 수행합니다. B
테이블의 rules 컬럼에 와일드카드 문자(% 또는 _)가 포함되어야 의미가 있습니다.동적 조건: 보통 고정된 문자열('A%')을 LIKE 뒤에 쓰지만, 이 경우 다른 테이블(B)의 규칙을 가져와서
매칭하므로, 데이터 기반의 유연한 검색이 가능합니다.대소문자 구분: 기본적으로 MySQL의 LIKE는 문자열 정렬 방식(Collation)에 따라 대소문자를 구분하지 않는 경우가 많습니다.
-----
개념 --------------------------------------------------------------------------
데이터 추가 -----
ALTER TABLE 학생
ADD 주소 VARCHAR(20);
-----
제약 조건 -----
UNIQUE
-----
집계 함수 -----
MIN MAX AVG
예시 SELECT 과목이름, MIN(점수) AS 최소점수, MAX(점수) AS 최대점수
FROM 성적
GROUP BY 과목이름
HAVING AVG(점수) >= 90;
-----
COUNT(DISTINCT 컬럼명)
예시:
CREATE TABLE countee (
id VARCHAR(50)
);
INSERT INTO countee
VALUES
("구름"),
("구름"),
("구구"),
(NULL),
("구름구");
SELECT COUNT(DISTINCT id)
FROM countee;
-----
CROSS JOIN
조인하는 두 테이블의 모든 행을 각각 일대일로 짝지어 연결하는 조인 방식입니다. 0.5.2, 0.5.4 A 테이블의 10개 행과 B 테이블의 10개 행을 크로스 조인하면 \(10
\times 10 =
100\)개의 행을 가진 카테시안 곱(Cartesian Product) 결과가 생성됩니다 0.5.2, 0.5.3.이 영상은 크로스 조인의 결과가 어떻게 나오는지 시각적으로 보여줍니다:54s37. INNER
JOIN, CROSS JOIN | ★SQL Exploration | SQLD ...아이리포YouTube• 2023. 4. 5.핵심 의미 및 특징:카티션 곱(Cartesian Product): 두 테이블 사이의
발생 가능한 모든 경우의 수를 반환합니다 0.5.3, 0.5.4.조인 조건 없음: INNER/OUTER JOIN과 달리, ON 절을 사용하여 조인할 필드 조건을 명시하지 않습니다 0.5.3.데이터 조합:
테이블 간의 공통적인 데이터가 없을 때, 모든 조합을 생성해야 하는 분석 상황(예: 날짜와 그룹의 전 조합 생성)에 사용됩니다 0.5.12.대규모 데이터 주의: 테이블 크기가 클 경우, 행의 개수가 폭발적으로
증가하여 성능 저하가 발생할 수 있습니다.
-----
DELETE
예시 DELETE FROM 학생
WHERE 이름 = '민수';
-----
INDEX -----
SQL에서 인덱스(Index)는 테이블의 데이터 검색 속도를 향상시키기 위해 특정 컬럼의 값을 기준으로 별도의 정렬된 자료구조(주로 B-Tree)를 생성해두는 데이터베이스 객체입니다. 책
뒤의 '찾아보기'처럼
데이터 위치 정보(ROWID)를 정렬하여 저장하므로, 전체 테이블을 스캔(Full Scan)하지 않고 빠르게 원하는 행을 찾습니다.핵심 요약 및 특징목적: 데이터베이스 조회(SELECT) 성능 향상.원리:
설정한 컬럼의 데이터를 복사하여 정렬하고 B-Tree/B+Tree 구조로 관리.장점: SELECT 문의 속도가 매우 빨라짐.단점: 별도 저장 공간이 필요하며, 데이터 추가/수정/삭제(INSERT,
UPDATE, DELETE) 시 인덱스도 갱신해야 하므로 성능이 저하될 수 있음.인덱스 사용 시 고려사항필요한 경우: 데이터 양이 많고, 해당 컬럼이 WHERE절이나 조인(JOIN) 조건으로 자주 사용될
때.피해야 하는 경우: 데이터 수정이 빈번하거나, 데이터 전체를 조회하는 경우.
student 테이블의 stu_name 속성에는 idx_name 이름의 인덱스 생성
CREATE TABLE student(
stu_name VARCHAR(50),
stu_home INTEGER
);
INSERT INTO student
VALUES
("김구름이", 1),
("김구르음", 3),
("김구음름", 4),
("김구구", 5);
CREATE INDEX idx_name
ON student(stu_name);
------
https://www.youtube.com/watch?v=xK3UlibfjaM&list=PLz95GL3y9Hv0fbwTxWqc3dni3hCA7OXgj&index=9
3분 55초 5번