[MySQL] 스토어드 프로시저 & 스토어드 함수 사용법
·
DataBase/MySQL
스토어드 프로시저 프로시저는 일련의 쿼리를 모아 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. ​ [ 프로시저 장점 ] 하나의 요청으로 여러 SQL문을 실행할 수 있다.(네트워크에 대한 부하를 줄일 수 있다.) 미리 구문 분석 및 내부 중간 코드로 변환을 끝내야 하므로 처리 시간이 줄어든다. 데이터베이스 트리거와 결합하여 복잡한 규칙에 의한 데이터의 참조무결성 유지가 가능하게 된다. 간단히 말하면 응용 프로그램 측 로직을 가지지 않고도 데이터베이스의 데이터 앞뒤가 맞게 될 수 있다. ​ [ 프로시저 단점 ] 코드 자산으로서의 재사용성이 나쁘다.(이부분 때문에 실무에서 거의 안쓰는 편이다) 업무의 사양 변경 시 외부 응용 프로그램과 할께 프로시저의 정의를 변경할 필요가 있다. 스토어드 프로시저 사용..
[MySQL] 변수 종류 정리 (사용자 변수 / 지역 변수 / 시스템 변수)
·
DataBase/MySQL
사용자 정의 변수 사용자 정의 변수 선언 및 초기화 SET @변수이름 = 대입값; -- or SET @변수이름 := 대입값; SELECT @변수이름 := 대입값; ​SET 이외의 명령문에서는 = 가 비교연산자로 취급되기 때문에, SELECT 로 변수를 선언하고 값을 대입할 때는 := 를 사용한다. 사용자 정의 변수 사용법 SET @start = 15, @finish = 20; -- 또는 SELECT @start := 15, @finish := 20; SELECT * FROM employee WHERE id BETWEEN @start AND @finish; ※ 참고 저장하는 값에 의해 자료형이 정해지며, Integer, Decimal, Float, Binary 그리고 문자열 타입만 취급할 수 있다. 또한 ..
[MySQL] 제어문 (case / if) 정리
·
DataBase/MySQL
MYSQL 제어문 기본 적으로 제어문은 무얼 조회하기 보다는, 새로운 필드를 생성해서 뷰로 만드는데 목적을 둔다. 새로운 필드를 생성하고 각 필드값을 제어문으로 조건을 줘서 값을 결정하는 방식이다. CASE 문 CASE는 두가지 문법이 가능하다. 하나는 switch 같이 쓸 수 있고, 하나는 if문 같이 쓸 수 있다. ​ switch문 value와 compare_value 값이 같으면, THEN 절을 반환 한다. 만약 서로 값이 같지 않으면, ELSE 절을 반환한다. 이때 ELSE 절이 없으면, NULL을 반환한다. CASE value WHEN compare_value THEN '반환 값' WHEN compare_value THEN '반환 값' ELSE 'WHEN 조건에 해당 안되는 경우 반환 값' EN..
[MySQL] 뷰(view) 정리
·
DataBase/MySQL
데이터베이스 뷰(View)란? DB에서 뷰는 하나 또는 그 이상의 테이블을 조인하여 만든 새로운 가상 테이블을 의미한다. 실제로 테이블을 생성한 건 아니지만, 사용자에게는 실존 테이블과 동일하게 사용된다. (뷰를 가지고 새로운 뷰를 만들 수도 있다.) 이는 주로 특정 정보만 제공하고 싶은 경우나 복잡한 쿼리를 가상 테이블로 만들어 간편하게 활용할 수 있어 업무에서도 자주 이용하는 기능이다. 예를 들어 자세히 설명하자면, 두 개의 테이블이 있다고 가정하자. memberInfo, PaymentHist. 개발자가 회원 별 결제 이력을 조회하고 싶은데, DBA가 회사 규정상 민감한 개인정보는 제공하고 싶지 않은 경우 뷰를 만들어서 제공하면 된다. 테이블 memberInfo에 있는 민감한 개인정보가 담긴 컬럼을 ..
[MySQL] 내장함수 종류 정리
·
DataBase/MySQL
집계 함수 COUNT(필드명) --NULL 값이 아닌 레코드 수를 구한다. SUM(필드명) - 필드명의 합계를 구한다. AVG(필드명) - 각각의 그룹 안에서 필드명의 평균값을 구한다. MAX(필드명) - 최대값을 구한다. MIN(필드명) - 최소값을 구한다. select userId, sum(amount) as 'SUM' # as안쓰면 sum(amount)이 컬럼 이름이 되니까 깔끔하게 별칭 사용 from buyTbl group by userid; #그룹핑을 안해주면 sum이 전체를 더해버린다. 그룹을 해줘야 그룹된 id에 맞게 sum을 해준다 select name, height from userTbl where height = (select max(height) from usertbl) or heig..
[MySQL] 프라이머리 키(PK, Primary Key)에 대하여
·
DataBase/MySQL
보호되어 있는 글입니다.