2025. 2. 9. 20:48ㆍ혼자 공부하는 SQL
오늘은 늦게 시작해서 빠르게 달리겠습니다람쥐 ε=ε=┏( >_<)┛
테이블 만들기
(열) 컬럼 or 필드 | |
(행) 로우 or 레코드 |
코드로 테이블을 만들어 봄(Refresh All 해줘야 보임)
경남 영어로 입력해버림ㅋㅋㅋㅠㅠ
오류 발생해서 당황했는데 함정이었음...집중해서 계속 진행!
시원하게 날려주고 다시 만들기~ (절대 아깝지 않음)
열심히 테이블 만들기(타닥타닥💻)
또 열심히 데이터 입력 (타닥타닥💻)
제약조건으로 테이블을 견고하게
제약조건 : 테이블의 무결성(no결함)을 지키기 위해 제한하는 조건
대표적인 제약조건
- PRIMARY KEY 제약조건
- FOREIGN KEY 제약조건
- UNIQUE 제약조건
- CHECK 제약조건
- DEFAULT 정의
- NULL 값 허용
PRIMARY KEY 제약조건
- 데이터를 식별할 수 있는 식별자
중복X, nullX, 테이블 당 1개가 최대, 테이블의 특성을 가장 잘 반영하는 열을 선택,
ex) 회원 아이디
기본 키론 생성하면 클래스형 인덱스( 데이터가 실제로 정렬되어 저장되는 인덱스, 배열에 주소 같은?)가 생성된다.
- 이미 만들어진 테이블에 제약조건 넣기
ALTER TABLE member -- member 테이블 변결
ADD CONSTRAINT -- 제약조건 추가
PRIMARY KEY(mem_id); -- mem_id 열에 기본 키 제약조건 설정
- 기본 키에 이름 지정하기
CONSTRAINT PRIMARY KEY PK_member_mem_id (mem_id)
FOREIGN KEY 제약조건
- 두 테이블 사이이 관계를 연결해주고, 그 결과 데이터의 무결성을 보장해주는 역할
기준 테이블 : 기본 키가 있는 테이블
참조 테이블 : 외래 키가 있는 테이블
* 참조하는 기준 테이블의 열은 반드시 기본 키나 고유 키로 설정되어 있어야 함
- ALTER TABLE 사용
ALTER TABLE buy
ADD CONSTARINT
FOREIGN KEY(mem_id) -- 외래 기 제약조건을 buy 테이블의 mem_id에 설정
REFERENCES member(mem_id); -- 참조할 기준 테이블은 member 테이블의 mem_id 열
- 기준 테이블에서 기본 키가 되는 열의 데이터를 변경할 때
ALTER TABLE buy
ADD CONSTRAINT
FOREIGN KEY(mem_id) RETERENCES member(mem_id)
ON UPDATE CASCADE
ON DELETE CASCADE;
ON UPDATE CASCADE, ON DELETE CASCADE
- 기준 테이블의 데이터가 삭제되면 참조 테이브르이 데이터도 삭제
UNIQUE 제약조건
- 중복되지 않는 유일한 값을 입력해야 하는 조건(null 허용, 테이블에 여러 개 설정 가능)
CHECK 제약조건
- 입력되는 데이터를 점검하는 기능
ex) CHECK (height >= 100) → 100이상만 입력 가능
DEFAULT 정의
- 값을 입력하지 않았을 떄 자동으로 입력될 값을 미리 지정
NULL 값 허용
- null 허용(아무 것도 없다!)
가상의 테이블: 뷰
단순 뷰 : 하나의 테이블과 연관된 뷰
복합 뷰 : 2개 이상의 테이블과 연관된 뷰
CREATE VIEW 뷰_이름
AS
SELECT 문;
뷰 만드는 형식
SELECT 열_이름 FROM 뷰_이름
[WHERE 조건];
뷰에 접근(ΦωΦ)
! 뷰를 사용하는 이유 !
- 보안에 도움이 된다
- 복잡한 SQL을 단순하게 만들수 있다.
USE market_db;
CREATE VIEW v_viewtest1
AS
SELECT B.member 'Member ID', M.mem_name AS 'Member Name',
B.prod_name "Product Name", CONCAT(M.phone1, M.phone2) AS "Office Phone"
FROM buy B
INNER JOIN member M
ON B.mem_id = M.mem_id;
SELECT DISTINCT `Member ID`, `Member Name` FROM v_viewtest1; -- 백틱 사용~
생성 CREATE VIEW
ALTER VIEW v_viewtest1
AS
SELECT B.member '회원 아이디', M.mem_name AS '회원 이름',
B.prod_name "제품 이름", CONCAT(M.phone1, M.phone2) AS "연락처"
FROM buy B
INNER JOIN member M
ON B.mem_id = M.mem_id;
SELECT DISTINCT `회원 아이디`, `회원 이름` FROM v_viewtest1;
수정 ALTER VIEW
DROP VIEW v_viewtest1;
삭제 DROP VIEW
DESCRIBE v_viewtest2;
정보 확인 DESCRIBE
SHOW CREATE VIEW v_viewtest2;
뷰의 소스 코드 확인 SHOW CREATE VIEW
ALTER VIEW v_height167
AS
SELECT * FROM member WHERE height >= 167 WITH CHECK OPTION;
설정된 값 범위가 벗어나는 값은 입력 제한 WITH CHECK OPTION
CHECK TABLE v_height167;
뷰의 상태 확인 CHECK TABLE
오늘의 숙제
1. market_db의 회원테이블 생성
2. 데이터 입력
+ 271p 4번(CREATE OR REPLACE VIEW)
기본 숙제, 추가 숙제 한 번에 하기~
그럼
2만
3만
Chill만
'혼자 공부하는 SQL' 카테고리의 다른 글
[혼공S] 6주차_스토어드 프로시저 (0) | 2025.02.23 |
---|---|
[혼공S] 5주차_인덱스 (0) | 2025.02.16 |
[혼공S] 3주차_데이터 타입, 조인, 조건문, 동적 SQL (0) | 2025.01.26 |
[혼공S] 2주차_문법 (0) | 2025.01.19 |
[혼공S] 1주차_데이터 활용하기 (0) | 2025.01.12 |