You Can Become A
늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !
[MYSQL] 📚 상수 select 하는법
상수 select mysql 쿼리문에서 상수를 출력결과용으로 임시로 띄우고 싶을때 사용한다. select 1 as 'one' ,2 as 'two', 3 as 'three'
[MYSQL] 📚 AS 연산자의 두 가지 사용처
AS 연산자 쿼리를 하면서 자주보는 as 연산자 지만, 특수한 경우 사용처가 약간 달라 정리 해본다. 1. 열에 대한 별명(alias) 붙이기 별명을 사용하면 쿼리 결과에 표시되는 열의 이름은 변경된다. 하지만 원래 열의 이름은 변하지 않는다. 하지만 굳이 AS 를 쓰지 않아도 별명을 붙일 수 있다. (그냥 생략하면 된다.) select profession AS mc_prof -- 원래 열의 이름 뒤에 별명을 선언하고 from my_contacts group by mc_prof -- 그 이후로는 별명으로 호출한다. order by mc_prof; select profession mc_prof -- as 생략 가능 from my_contacts group by mc_prof group by mc_prof;..
[MYSQL] 📚 타입 강제 변환 (cast / convert)
타입 강제 변환 MySQL은 비교나 검색을 수행할 때 데이터의 타입이 서로 다를 경우, 내부적으로 타입이 같아지도록 자동 변환하여 처리합니다. 하지만 사용자가 명시적으로 타입을 변환할 수 있도록 다양한 연산자와 함수도 같이 제공하고 있습니다. 암시적인 형변환 문자열이어도 합치면 숫자로 변환 select '100' + '200'; select concat('100','200'); select concat(100,'200'); select 1 > '2mega'; select 3> '2mega'; select 0 = 'mega2'; BINARY BINARY 연산자는 뒤에 오는 문자열을 바이너리 문자열로 변환합니다. BINARY 연산자를 이용하면 문자가 아닌 바이트를 기준으로 하여 비교나 검색 작업을 수행할..
[MYSQL] 📚 패턴 매칭 (LIKE / REGEXP)
LIKE 연산자 문자열 패턴 일치를 검사 기호 설명 % 0개 이상의 문자를 대체함. _ 1개의 문자를 대체함. select * from table where 필드명 like "_영_" # 가운데 글자가 영 인 사람, where 필드명 like "이%" # 성이 이씨인 사람 where 필드명 like "_종신" # 종신 성씨 아무거나 where 필드명 like "20__" # 2000,2002 같은 네자리 숫자만. 20000 안됨. REGEXP mysql에서도 정규표현식을 사용 가능. 패턴 설명 . 줄 바꿈 문자(\n)를 제외한 임의의 한 문자를 의미함. * 해당 문자 패턴이 0번 이상 반복됨. + 해당 문자 패턴이 1번 이상 반복됨. ^ 문자열의 처음을 의미함. $ 문자열의 끝을 의미함. | 선택을 의미..
[MYSQL] 📚 WITH ROLLUP & Grouping 함수
WITH ROLLUP RollUp은 그룹 항목 총합(총계)이나, 각 그룹 별 중간합계(소계)가 필요할 경우 사용된다. 예를들어 그냥 GROUP BY를 사용하면 GROUP BY 뒤에 나오는 컬럼별로 합계를 구해준다. 이때, 아쉬운 점이 있다면 항목별 합계에 전체 합계가 같이 나오게 하는 것이다. 이럴 때에 사용하는 것이 WITH ROLLUP 이다. WITH ROLLUP는 그룹별로 합계를 한번에 구할때 사용한다. 이때 합계값만 추가하는거라, 나머지 필드 이름 자리에는 당연히 NULL값이 들어가게 되는데, 쿼리를 통해서 이름을 명명해줄수 있다. 웹 서버단에서 사용할 쿼리에는 사용하지 않고 데이터베이스 내에서 데이터를 조회할때만 사용된다. 서버단에서 동일한 기능을 사용하고 싶다면, GROUP BY로 조회해..
[MYSQL] 📚 파티션(Partition) 개념 & 사용법
파티션(partition) 대량의 데이터를 테이블에 저장할 때, 물리적으로 별도의 테이블로 분리해서 저장시키는 기법을 말한다. 단, mysql내부적으로 분리되어 처리되기 때문에, 파티션이 얼마나 있든 사용자는 하나의 테이블로 보인다. 특정 DML과 Query의 성능을 향상시키고, 주로 데이터가 실시간으로 쌓이는 데이터베이스 환경에서 효율적이다. 특히 Full Scan에서 데이터의 접근 범위를 줄여 성능 향상을 가져올 수 있습니다. 물리적인 파티셔닝으로 인해 전체 데이터의 훼손 가능성이 줄어들며, 각 파티션 별로 독립적으로 백업하고 복구할 수 있다. 다만, 테이블 간 Join이 일어날 경우 비용이 증가하며 테이블과 인덱스를 별도로 파티셔닝 할 수는 없다. 파티션 종류 기본적으로 파티셔닝은 수평 분할과 수..
[MYSQL] 📚 트리거(Trigger) 개념 & 사용법
Trigger (트리거) 트리거(Trigger)는 사전적 의미로 '방아쇠'라는 뜻이다. MySQL에서 트리거는 테이블에서 어떤 이벤트가 발생했을 때 자동으로 실행되는 것을 말한다. 즉, 어떤 테이블에서 특정한 이벤트(update, insert, delete)가 발생했을 때, 실행시키고자 하는 추가 쿼리 작업들을 자동으로 수행할 수 있게끔 트리거를 미리 설정해 두는 것이다. 예를 들어 고객이 물건을 구매해 구매 테이블에 정보가 insert되면, 등록된 트리거가 발동해 물품 테이블을 자동으로 update 쿼리문을 실행하게 하고, 또 등록된 트리거가 발동해 배송테이블에 insert 쿼리문을 실행시키게 끔 할 수 있다. 데이터베이스 트리거(Database Trigger)는 테이블에 대한 이벤트에 반응해 자동으로..
[MYSQL] 📚 스토어드 프로시저 & 스토어드 함수 사용법
스토어드 프로시저 프로시저는 일련의 쿼리를 모아 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. [ 프로시저 장점 ] 하나의 요청으로 여러 SQL문을 실행할 수 있다.(네트워크에 대한 부하를 줄일 수 있다.) 미리 구문 분석 및 내부 중간 코드로 변환을 끝내야 하므로 처리 시간이 줄어든다. 데이터베이스 트리거와 결합하여 복잡한 규칙에 의한 데이터의 참조무결성 유지가 가능하게 된다. 간단히 말하면 응용 프로그램 측 로직을 가지지 않고도 데이터베이스의 데이터 앞뒤가 맞게 될 수 있다. [ 프로시저 단점 ] 코드 자산으로서의 재사용성이 나쁘다.(이부분 때문에 실무에서 거의 안쓰는 편이다) 업무의 사양 변경 시 외부 응용 프로그램과 할께 프로시저의 정의를 변경할 필요가 있다. 스토어드 프로시저 사용..
[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) 문법 정리
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 조건에 해당 안되는 경우 반환 값' E..
[MYSQL] 📚 뷰(view) 사용법 정리
뷰(view)란? 뷰(view)는 데이터베이스에 존재하는 일종의 가상 테이블을 의미합니다. 이러한 뷰는 실제 테이블처럼 행과 열을 가지고 있지만, 실제로 데이터를 저장하고 있지는 않습니다. create view 뷰명 as select문~ alter view 뷰명 as select문~ with check option 뷰를 호출하는 순간에 뷰 create문안에 써있는 select문이 실행되는 것입니다. 뷰의 특징 뷰를 update 가능은 합니다. 뷰를 insert하는 것은 조건이 있습니 다. 테이블의 모든 필드의 값을 넣어줘야하는데 일부만 넣어주게 되면 불가능. 그래서 넣으려면 전체를 다 넣거나 디폴트를 지정해줍니다. 집계함수가 들어가느 뷰는 수정 불가능 with check option을 주면 체크조건이 들..
[MYSQL] 📚 테이블 제약 조건 정리
제약 조건(constraint) 제약 조건(constraint)이란 데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙을 의미합니다. 이러한 제약 조건은 CREATE 문으로 테이블을 생성할 때나 ALTER 문으로 필드를 추가할 때도 설정할 수도 있습니다. NOT NULL - NULL 비허용 - 중복값 허용 NOT NULL 제약 조건은 CREATE 문으로 테이블을 생성할 때나, 나중에 ALTER 문으로 추가할 수도 있습니다. CREATE TABLE Test ( ID INT NOT NULL, Name VARCHAR(30), ReserveDate DATE, RoomNum INT ); ALTER TABLE 테이블이름 ADD 필드이름 필드타입 NOT NULL -- 새로운 not null 지정..