목록프로그래밍/SQL (67)
쌓고 쌓다
뷰(View) 데이터베이스 개체 중에 하나이다. 테이블처럼 데이터를 갖는 것이 아니라 SELECT문으로 만들어져 그 결과가 화면에 출력되는 방식이다. 단순 뷰 : 하나의 테이블과 연관된 뷰 복합 뷰 : 2개 이상의 테이블과 연관된 뷰 뷰의 기본 생성 뷰 개념 SELECT mem_id, mem_name, addr FROM member; SELECT의 결과로 출력된 것이 결국 테이블의 모양이다. 결국 mem_id, mem_name, addr 3개의 열을 가진 테이블로 봐도 된다는 것이다. 뷰가 이런 개념으로 실체가 SELECT문이 되는 것이다. 이 실행 결과를 v_member라고 부르자. 보통 뷰의 이름 앞에 v_를 붙이는 것이 일반적이다. 뷰의 형식 뷰를 만들 때 아래의 형식으로 만든다. CREATE VI..
고유 키 제약조건 '중복되지 않는 유일한 값'을 입력해야 하는 조건이다. 기본 키와 유사하지만, 고유 키 제약은 NULL 값을 허용한다. 기본 키는 테블에 1개만 설정해야 하지만, 고유 키는 여러 개를 설정 가능하다. 회원 테이블에 email은 중복되지 않으므로 고유 키로 설정해보자. CREATE TABLE member ( mem_id CHAR(8) NOT NULL PRIMARY KEY, mem_name VARCHAR(10) NOT NULL, height TINYINT UNSIGNED NULL, email CHAR(30) NULL UNIQUE ); 데이터를 입력해보자. INSERT INTO member VALUES('BLK', '블랙핑크', 163, 'BLK@email.com'); INSERT INTO ..
기준 테이블의 열이 변경될 경우 INSERT INTO member VALUES('BLK', '블랙핑크', 163); INSERT INTO buy VALUES(NULL, 'BLK', '지갑'); INSERT INTO buy VALUES(NULL, 'BLK', '맥북'); member 테이블이 기준 테이블이며, buy 테이블은 참조 테이블이다. 내부 조인을 이용해 INSERT 결과 확인 SELECT M.mem_id, M.mem_name, B.prod_name FROM buy B INNER JOIN member M ON B.mem_id = M.mem_id; 이 상태에서 기준 테이블 member에 있는 회원 아이디 'BLK'를 'PINK'로 바꿔보자. UPDATE member SET mem_id = 'PINK'..
기본 키(primary key)와 외래 키 또한 제약 조건이다. 중복되지 않는 열의 데이터를 위해 고유 키(Unique) 조건 설정. 실수로 말도 안 되는 값의 입력을 방지하기 위해 체크(Check) 조건 설정. 당연한 값을 입력할때 사용하는 기본값(Default) 조건 설정. 반드시 값을 입력해야하는 NOT NULL 조건 설정. 제약조건은 데이터의 무결성을 지키기 위해 제한하는 것이다. 기본 키 제약조건 데이터를 구분할 수 있는 식별자를 기본키라고 부름.(학번, 사번, 아이디) 기본키는 중복될 수 없으며 NULL을 허용하지 않는다. 기본키는 테이블 당 1개만 지정이 가능하며 한 개의 열에 지정해야 함. CREATE TABLE에서 기본 키 설정 방법(1) - PRIMARY KEY 예약어 CREATE TA..
테이블은 행과 열로 구성 행 : 로우 또는 레코드 열 : 컬럼 또는 필드 데이터베이스 생성 DROP DATABASE IF EXISTS naver_db; CREATE DATABASE naver_db; member 테이블 생성 USE naver_db; DROP TABLE IF EXISTS member; CREATE TABLE member ( mem_id CHAR(8), -- 회원 아이디(PK) mem_name VARCHAR(10), -- 이름 mem_number TINYINT, -- 인원 수 addr CHAR(2), -- 주소(경기,서울,경남 2글지) phone1 CHAR(3), -- 국번(02, 031, 070) phone2 CHAR(8), -- 나머지 전화번호 (하이픈제외) height TINYINT U..
"스토어드 프로시저"는 MySQL에서 프로그래밍 기능이 필요할 때 사용하는 데이터베이스 개채이다. SQL 프로그래밍은 기본적으로 스토어드 프로시저 안에 만들어야 함. 스토어드 프로시저 구조 DELIMITER $$ CREATE PROCEDURE 스토어드_프로시저_이름() BEGIN -- 이 공간에 코딩 END $$ -- 스토어드 프로시저 종료 DELIMITER ; -- 종료 문자를 다시 세미콜론(;)으로 변경 CALL 스포어드_프로시저_이름(); -- 스토어드 프로시저 실행 -> 일반적으로 종료 문자(DELIMITER)를 $$를 많이 쓰고, 변경해도 상관없다. 다른 기호와 중복을 피하기 위해 기호 2개를 연속해서 사용한다. IF 문 IF문 형식 IF THEN SQL 문장들 END IF; 'SQL 문장들'이..
외부 조인 내부 조인은 두 테이블에 모두 데이터가 있어야 결과가 나온다. '외부 조인'은 한쪽에만 데이터가 있어도 결과가 나온다. SELECT FROM OUTER JOIN ON [WHERE 검색 조건] ; 내부 조인으로 출력하지 못한 전체 회원의 구매 기록( 구매 기록이 없는 회원의 정보도 함께 ) 출력해보겠다. SELECT M.mem_id, M.mem_name, B.prod_name, M.addr FROM member M LEFT OUTER JOIN buy B ON M.mem_id = B.mem_id ORDER BY M.mem_id; LEFT OUTER은 왼쪽에 있는 회원 테이블을 기준으로 외부 조인한다는 의미로 member M을 왼쪽 테이블로 뜻한다. ( LEFT OUTER JOIN을 줄여서 LEFT..
내부 조인 SELECT FROM INNER JOIN ON [WHERE 검색 조건] -> INNERT JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식 예제 : 구매 테이블에서 GRL 아이디를 가진 사람의 이름/주소/연락처를 검색 SELECT * FROM buy INNER JOIN member ON buy.mem_id = member.mem_id WHERE buy.mem_id = 'GRL'; 만약, WHERE buy.mem_id='GRL'을 생략하면 구매 테이블의 모든 행에 대하여 buy.mem_id = member.mem_id인 조건을 만족하면 결합하여 모두 출력해버린다. SELECT * FROM buy INNER JOIN member ON buy.mem_id=member.mem_id; 내부 ..