혼공학습단
[혼공학습단 12기] 혼자 공부하는 SQL - 1주차
talstory
2024. 7. 7. 19:06

- 테이블 생성

새로운 schema(shop_db) 만들기
이후 shop_db에 table을 2개 생성해준다.


- 데이터 입력



회원 테이블의 모든 행 조회를 위해서는 SELECT 열_이름 FROM 테이블_이름 [WHERE 조건]을 입력한다.
SELECT member_name, member_addr FROM member;
이 구문은 회원 테이블 중에서 이름과 주소만 출력하는 구문이다.
다음으로 아이유 회원에 대한 정보만 출력한다. 앞의 SQL문을 그대로 놔두고 다음과 같이 실행한다.
SELECT * FROM member WHERE member_name = '아이유';

- 4가지 키워드로 끝내는 핵심 포인트
스키마: 데이터 베이스
데이터 형식: 문자형, 정수형처럼 열에 저장될 데이터의 형식
예약어: select, from, where 등과 같은 기존에 약속된 sql
기본키: 열에 지정하며 각 행을 구분하는 유일한 값
- 확인문제
1. 데이터베이스 구축절차:
데이터 베이스 만들기 - 테이블 만들기 - 데이터 입력하기 - 데이터 조회하기
2. 데이터베이스는 테이블을 저장하는 공간으로, 스키마(schema)라고도 부릅니다.
3. 데이터를 수정할 때: UPDATE
데이터를 조회할 때 : SELECT
테이블이나 데이터베이스를 만들 때: CREATE
데이터를 삭제할 때: DELETE
4. 데이터 형식 중에서 소수점이 없는 정수형: INT
비어있는 값 허용하지 않음: NOT NULL
데이터 형식 중에서 문자형: CHAR
데이터 형식 중에서 날짜형: DATE
5. SELECT * FROM 테이블_이름 WHERE 열_이름 = '값';
특정 값에 해당하는 행만 조회
- 데이터베이스 개체 3가지
인덱스 | '찾아보기'와 비슷한 개념, 인덱스가 없으면 1페이지부터 전체를 찾아봐야 한다. 이것을 Full Table Scan(전체 테이블 검색)이라고 한다. 인덱스를 만들기 위해, CREATE INDEX idx_member_name ON member(member_name); 으로 member 테이블의 member_name 열에 인덱스를 지정한다. 이를 통해, Non-Unique Key Lookup으로 결과를 찾을 수 있고, 이 방법을 Index scan(인덱스 검색)이라고 부른다. 인덱스 생성 여부에 따라 결과가 달라지지는 않지만, 시간을 단축시키는 효과가 있다. |
뷰 | 테이블과 동일한 성격의 데이터베이스 개체로, 뷰를 활용하면 보안도 강화하고 sql문도 간단하게 사용할 수 있다. 뷰는 '가상의 테이블'과 비슷한 개념이다. 뷰는 실제 데이터를 가지고 있지 않고, 진짜 테이블에 link된 개념이다. 예를 들면, '바로가기 아이콘'이라고 할 수 이다. 뷰의 실체는 select 문이다. 사용자가 뷰에 접근하면, select 문은 테이블과 내부적으로 연결되어있다. 뷰는 다음과 같은 sql문으로 생성한다. CREATE VIEW member_view AS SELECT * FROM member; 이후, 회원테이블(member)가 아닌, 회원 뷰(member_view)에 접근하는데 이때 접근방법은 테이블에 접근하는 것과 동일하다. select * from member_view; 이와 같이, 테이블을 사용하지 않고 뷰를 사용함으로써 보안에 도움이 되고, 긴 sql문을 간단하게 만들 수 있다. |
스토어드 프로시저 | MySQL에서 제공하는 프로그래밍 기능으로, stored procedure라고 한다. c, java, python에서 사용되는 연산식, 조건문, 반복문 등을 사용할 수 있다. 예를들면, 매번 두줄의 sql을 입력해야 한다면 상당히 불편하다. select * from member where member_name = '나훈아'; select * from product where product_name = '삼각김밥'; 이것을 하나의 스토어드 프로시저로 만들려면, 다음과 같이 입력한다. DELIMITER // CREATE PROCEDURE myProc() -> 스토어드 프로시저 이름 지정 BEGIN select * from member where member_name = '나훈아'; select * from product where product_name = '삼각김밥'; END // DELIMITER ; 앞에서 만든 스토어드 프로시저를 호출하기 위해, CALL문을 실행한다. CALL myProc(); |