본문 바로가기

SQL

(21)
가상의 테이블: 뷰(생성, 수정, 삭제) 《 뷰(VIEW) 》 데이터베이스 개체 가상의 테이블, 실체가 없음 바로가기 아이콘과 유사 《 VIEW의 프레임 》 CREATE VIEW AS SELECT문; 《 VIEW를 사용하는 이유? 》 1) 보안에 도움이 된다(내가 보여주고 싶은 정보만 빼내서 보여줄 수 있다) 2) 쿼리를 단순하게 만들 수 있다 # 보안에 관한 내용 살펴보기 NUM NAME ID PASSWORD GRADE 1 Sole remio ********* Gold · NUM : 고객번호 · NAME : 고객이름 · ID : 고객 ID · PASSWORD : 고객 비밀번호 · GRADE : 회사에서 구매횟수에 따라 매긴 고객등급 Customer테이블은 회사가 고객의 모든 정보를 저장해두고 있는 테이블이다. 회사에서는..
SQL 테이블 제약조건(기본키, 외래키, 고유키) 《 제약조건 》 데이터의 무결성을 지키기 위해 제한하는 조건이다. 데이터의 무결성이란 데이터에 테이블을 견고하고, 결함이 없도록 함을 의미 《 제약 조건의 종류 》 1) 기본키(PRIMARY) 데이터를 구분할 수 있는 식별자 중복X, NULL값X, 데이터 무결성을 보장 기본키로 생성한 것은 자동으로 클러스터형 인덱스가 생성 * 해당 키 값을 기반으로 테이블이나 뷰의 데이터 행을 정렬하고 저장 기본키로는 하나만 사용가능 - 아래의 예문을 통해 PK를 설정하고 확인해보자 # DESCRIBE는 테이블 정보를 확인할 수 있음 쿼리문에서 설정한 것과 같이 mem_id가 primary key로 지정된 것을 확인할 수 있다. - 다른 방법도 알아보기 1. PRIMARY KEY를 쿼리의 마지막에 설정해주기 2. 테이블..
SQL 프로그래밍(스토어드 프로시저, IF문, CASE문, WHILE문, 동적SQL) 《스토어드 프로시저(Stored Procedure)란?》 MySQL에서 프로그래밍 기능이 필요할 때 사용하는 데이터베이스 개체이다. SQL문법의 함수(Function)와 유사하지만 SQL함수와는 차이가 있다. - 함수(Function) : 클라이언트에서 처리, 리턴값 필수, 리턴값 하나만 반환가능 - 프로시저(Procedure) : 서버로 보내서 처리, 리턴값 선택, 리턴값 여러개 반환가능 프로시저 같은 경우 실행, 처리를 할 때 주로 사용되고, 함수는 간단한 계산이나 수치 결과를 나타낼 때 주로 사용 👀 스토어드 프로시저의 장점정리! 1. 하나의 요청으로 여러 SQL문을 실행하는 것이 가능하다. 2. 쿼리를 처리할 때 네트워크의 부하를 줄여 실행시간을 줄일 수 있다. - 스토어드 프로시저 프레임 DEL..
두 테이블을 묶는 JOIN(INNER JOIN, OUTER JOIN, CROSS JOIN, SELF JOIN) JOIN : 조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. 《 JOIN이 왜 필요할까? 》 관계형 데이터베이스에서는 중복 데이터를 피하기 위해서 데이터를 쪼개 여러 테이블로 나눠서 저장한다. 이렇게 분리되어 저장된 데이터에서 원하는 결과를 다시 도출하기 위해서는 연결된 여러 테이블을 조합해야 할 때가 있다. 《 school_db로 조금 더 알아보자 》 school_db 내에는 "번호"를 기본키로 하는 student 테이블과 "반"을 기본키로 하는 class 테이블이 있다. 여기서 상황을 가정해보자. 어느 날 동아초등학교에 1-1반에 재학중인 Dave Lee라는 학생이 성적이 좋아서 장학금을 받게 되었다. 그래서 이 학생이 소속된 반의 담임선생님께 이 사실을 알리려고 sch..
MySQL의 데이터 형식과 형태 변환 # prepare와 execute - set @변수명 : 변수의 값 : 변수의 선언 및 값 대입 - select @ 변수명 : 변수의 값 출력 - prepare ~ from : SQL 구문을 선언 하는 부분 SQL 구문 안에는 특별한 제약은 없으나 다중으로 Prepared Statement 를 선언할 수 없다. - execute ~ using : 미리 선언된 구문을 실행 하는 부분 위의 예문에서는 ?로 설정한 값을 execute에서 @count를 대입하겠다고 선언함으로써 set으로 선언했던 3이 ?자리에 들어오게 된다. mySQL은 구문을 저장하는 이름이다. 이렇게 선언된 변수들은 현재 실행중인 워크벤치에서만 유효하다. DEALLOCATE PREPARE 로 미리 선언된 구문을 삭제 할 수 있다는 것도 참..
MySQL의 데이터 형식(정수형, 문자형, 실수형, 날짜형) # 정수형 1) 정수형의 종류 tinyint ,smallint, int, bigint - tinyint 크기 : 0 ~ 255 - smallint 크기 : -32,768 ~ 32,767 - int 크기 : -2,147,483,648 ~ 2,147,483,647 - bigint 크기 : -9,223,372,036,854,775,808‬ ~ 9,223,372,036,854,775,8087 크기비교 tinyint < smallint < int < bigint # 실수형 2) 실수형의 종류 float, double - float 4바이트, 소수정 아래 7자리 - double 8바이트, 소수점 아래 15자리 정수형과 실수형 모두 unsigned라는 명령어를 사용하여 양수의 값만 다루게 할 수도 있다. 다룰 데이터..
데이터 변경을 위한 SQL 문(INSERT, UPDATE, DELETE) # INSERT INSERT를 실습하기 위해서 market_db에 hongong1 테이블을 생성 hongong1의 열이름은 toy_id, toy_name, age로 지정하고 형태는 각각 정수형, 문자형(4개 제한), 정수형으로 한다. - insert의 프레임 INSERT INTO 테이블명(데이터를 넣을 열 이름) VALUES (데이터); 결과확인 - AUTO INCREMENT AUTO INCREMENT는 1부터 시작하여 값을 점점 증가시키는 역할을 한다. 주로 PK값을 겹치치 않게 할 때 사용한다. - QUERY문으로 AUTO INCREMENT를 실행하는 방법 TABLE 생성시에 설정하기 - AUTO INCREMENT의 시작 값과 간격을 설정하는 방법 ALTER TABLE문으로 설정하기 - 다른 테이블의..
ORDER BY 절과 GROUP BY 절 1) order by : 정렬 순서 지정 SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date; 디폴트 값은 오름차순으로 정렬된다. - 내림차순으로 정렬하고 싶다면? SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date DESC; desc를 사용하면 내림차순으로 정렬이 가능하다. order by를 사용할 때 select, from, where, group by, order by 의 순서를 지키지 않으면 오류가 발생하니 주의하자. - 정렬 기준 값을 2개 이상으로 하고 싶다면? SELECT mem_id, mem_name, debut_date, height FROM memb..