stored procedure는 코드 덩어리를 저장할 수 있기 때문에 SELECTFROM과 같은 긴 문장을 저장하고 재사용하고 싶다면 stored procedure 기능을 사용하면 됩니다. 문장 보존 기능의 임법1. 지금 있는 데이터베이스의 Procedures 또는 Functions 메뉴에서 우클릭합니다.그리고 새로운 Procedure 만들기를 클릭하여 명명은 적당히 하면 됩니다.2. 그러면 뭐가 나오는데 source 메뉴에 들어가서 BEGIN/END 사이에 재사용하고 싶은 코드를 적어주시면 됩니다.적어두기 주의사항은 한 줄 끝; 넣지 않으면 문법에 표시됩니다.DROP PRODURE IF EXISTS데이터베이스 이름. get_all;DELIMITER$$$CREATE PRODURE데이터베이스 이름. get_all()BEGIN SELECT*FROM product where가격>5000;END$$DELIMITER;10분 보존프로시저 stored procedure를 사용과 멋진0:00 stored procedure 3:53 SQL코드로 stored procedure의 만드는 방법7:47procedure를 사용하면 동작이 빨리?하루에 10번 쓴 SQL문장이 있다고 합시다.그때마다 직접 글을 오래 타자 치는 것이 귀찮다면 stored procedure(저장 프로시저)를 만들어 쓰면 됩니다.stored procedure은 코드의 덩어리를 저장 가능그래서 SELECTFROM과 같은 긴 문장을 저장하고 재사용하고 싶다면 stored procedure 기능을 사용하시면 됩니다. 문장저장기능인프로그래밍배경이있는분들은이해하기쉽겠지만평소에사용하던함수문법이라고생각하시면됩니다. 그것과 같다 ▲ 이런 말을 하는 책과 강의가 있으면 즉시 불태워야 합니다. 프로그래밍 배경이 없기 때문에 이런 거 읽는 거 아니야? stored procedure 쓰는 법그래서 SELECTFROM과 같은 긴 문장을 저장하고 재사용하고 싶다면 stored procedure 기능을 사용하시면 됩니다. 문장저장기능인프로그래밍배경이있는분들은이해하기쉽겠지만평소에사용하던함수문법이라고생각하시면됩니다. 그것과 같다 ▲ 이런 말을 하는 책과 강의가 있으면 즉시 불태워야 합니다. 프로그래밍 배경이 없기 때문에 이런 거 읽는 거 아니야? stored procedure 쓰는 법▲ 전에 JOIN을 배울 때에 쓰던 product테이블에서 진행하고 봅시다.아니면 아래 첨부 파일을 다운로드하기로 합시다.우선 product테이블에서 SELECT문을 사용합시다.SELECT*FROM product WHERE값>5000에서도 이 코드를 나중에 쓸 일이 많습니다.그럼 파일로 저장하고 두어도 좋지만 다른 파일에서도 많이 사용하고 싶은 경우는 stored procedure에서 저장하면 됩니다.타이핑은 하도 귀찮아서 procedure라고 씁니다. 만드는 방법은▲ 1. 지금 있는 데이터베이스의 Procedures 또는 Functions 메뉴에서 우클릭합니다.그리고 새로운 Procedure 만들기를 클릭하여 명명은 적당히 하면 됩니다. 나는 get_all로 해봤어▲ 2. 그럼 source 메뉴에 들어가서 BEGIN/END 사이에 재사용하고 싶은 코드를 적으시면 됩니다.적어두기 주의사항은 한 줄 끝; 넣지 않으면 문법에 표시됩니다. 3. 앞으로 CALL procedure 이름()만 실행하면 아까 BEGIN/END 사이에 저장해둔 코드가 실행됩니다. 안되면 CALL데이터베이스명.procedure 이름() 이렇게 써본다. SELECT~ 길게 코드를 짜지 않아도 되니까 더욱 편리해졌어요.procedure을 생성하는 SQL명령 DROP PROCEDURE IF EXISTS데이터베이스 이름. get_all;DELIMITER$$$CREATE PRODURE데이터베이스 이름. get_all()BEGIN SELECT*FROM product where가격>5000;END$$DELIMITER;사실은 아래에 나오는 SQL코드를 모두 실행해야만 procedure생성이 가능합니다.DBeaver프로그램에서 중요한 부분만 간단히 작성할 수 있도록 지원할 뿐 Procedure을 생성하는 SQL코드는 이 같지만 1. 첫번째 줄은 이미 get_all이라는 procedure가 있으면 지우겠다는 뜻입니다.이미 있으면 같은 이름으로 생성되지 않기 때문에.2.DELIMITER은 개행 문자를$$이런 것에 임시로 바꾼다는 것.SQL을 작성할 때 문장들로 구분할 때;이를 쓴다.그러나 procedure를 만드는 코드 속에;이것이 들어가면 중간에 실행이 중단될 가능성이 있으므로 임시로$$등으로 바꾸는 것.3.CREATE PROCEDURE의 뒤에 마련 procedure이름을 멋대로 명명하면 된다.4. BEGIN/END사이에 저장하는 코드를 넣으면 좋다.5. 이제부터 CALL procedure이름()을 쓰면 저장된 코드가 실행된다.변수문법SET@age=20;SELECT@age:=20;SET@변수명=저장할 값;문법을 쓰면 된다. SET @변수명 := 저장할 값; 써도 같은 뜻. SELECT @변수명 := 저장할 값; 써도 같은 의미. *SET 변수 = 변수 + 1 아래에서 값이 추가된다.@변수에는 숫자, 문자, binary, NULL 등의 자료 하나만 쉽게 저장할 수 있습니다. 그럴 때 쓰죠.procedure안에서 변수 만들기 procedure속에서는 DECLARE키워드로 변수를 생성하는 경우가 많다.CREATE PRODURE mart.var_test()BEGIN DECLARE변수 1 INT;DECLARE변수 2 VARCHAR(100);DECLARE변수 3 INT DEFAULT 123;END1. DECLARE변수 이름 데이터 타입.이렇게 쓸 수 있습니다.여기는 변수 이름에@안 써도 좋다.2. 단 BEGIN의 바로 밑에 넣어야 한다.아니면 에러라고 생각합니다.DEFAULT 어떻게 변수를 만들 때 초기치를 넣어 주는 대목입니다.선택 사항인 4. DECLARE로 만든 변수에 데이터를 저장할 때는 똑같이 SET키워드로 변수에 마음대로 데이터를 보존할 수 있습니다.DECLARE 변수 vs@ 변수 차이 1. 변수를 사용할 수 있는 범위에 차이가 있습니다. @변수는 uservariable이라고 부르는데 한번 만들어놓으면 DBMS 프로그램을 끄려면 (접속 종료까지) 남아있습니다.그리고 작성하는 SQL 파일의 모든 장소에서 전역에서 사용할 수 있습니다.그래서 가끔 @변수를 같은 이름으로 중복 선언하는 실수도 발생해서 사람들이 별로 좋아하지 않습니다. 반면 DECLARE 변수는 변수를 만든 procedure 안에서만 사용할 수 있습니다. 2. 변수가 언제 사라질지도 차이가 있습니다.@변수는 DB접속 종료시 사라집니다. DECLARE 변수는 procedure 실행 종료 시 바로 사라집니다.파라미터 문법 CREATE PROCE DURE mart.get_all(구멍1 INT,구멍2 varchar(100) BEGIN SELECT * FROM product WHERE 가격> 구멍1OR 상품명=구멍2; END1.구멍은 여러개 뚫을 수 있다. 마음대로 명명 가능 2. 구멍을 소괄호 내에 등록할 때 여러 개의 구멍 1, 구멍 2와 같이 쉼표로 구분하면 된다. 3. 구멍에 들어갈 데이터 유형을 강제로 정해야 한다. 그러면 앞으로 get_all()을 쓸 때 무조건 구멍 자리에는 INT, 구멍 두 자리에는 varchar(100) 자료만 입력할 수 있다.OUT 파라미터 CREATE PRODURE mart.get_all(OUT구멍 INT) BEGIN SET구멍=20; END구멍을 뚫으면 procedure 안에 숫자나 문자를 입력할 수 있지만 반대로 procedure 안에서 출현한 숫자나 문자나 테이블을 밖으로 반입할 수도 있다. 이 경우 파라미터 등록처 왼쪽에 OUT를 붙이면 된다. 프로그래밍을 아시는 분들은 함수 안에서 쓰는 return과 같다.날짜 저장DATEYY-MM-DD 형식 9999년까지 저장 가능 DATETIMEYY-MM-DDh:mm:ss 형식99년까지 저장 가능 TIMESTAMPY-MM-DDh:mm:ss 형식 2038년까지 저장 가능SELECT * FROM blog WHERE発行日 > ‘2022-03-10 08:24:25’ SELECT * FROM blog WHERE発行日 = 2022-03-100 08:24:25”2022년 3월 10일이 찍힌 모든 행을 가져오려면 SELECT * FROM blog WHERE 발행일 > = ‘2022-03-1000:00’ AND 발행일 < ‘2022-03-1100:00’*현재 시간이 필요하다면 그 자리를 남겨드리겠습니다날짜 포맷 마음대로 바꾸는 SELECT date_format(now(), ‘%Y 연%d일로 %m월인데요’) date_format() 안에 날짜, 임의의 문자 순으로 넣으면 출력 형식을 마음대로 바꿔준다. 임의의 문자 안에는 %Y, %m, %d 마음대로 넣을 수 있는데 각각 그 자리에 연·월·일이 들어온다. %H, %i, %s로 시·분·초도 넣을 수 있고 요일도 출력 가능하다.자세한 것은 필요할 때 date_format 함수를 검색해서 쓰자.


