본문 바로가기

MySQL12

일정 시간이 되면 데이터가 자동 삭제되는 기능 (mysql , Event) CREATE EVENT IF NOT EXISTS memberEvents2 ON SCHEDULE EVERY 1 second STARTS CURRENT_TIMESTAMP DO delete from member WHERE dateDiff(DATE_ADD(startdate, INTERVAL ticket_Period DAY) , now()) < 0; 등록일자에 이용권 기간을 더한 날짜가 지나면 튜플을 삭제하는 이벤트이다. 2022. 3. 14.
FUNCTION 만들기 (DELIMITER 지정 명령어를 통해 만드는 것과 UI를 통해 만드는 두가지 방법이 있다 [1] 명령어로 만들기 -- set global log_bin_trust_function_creators = 1; delimiter $$ create function helloname (name varchar(50)) returns varchar(60) begin return concat("hello" , name); end $$ delimiter ; select helloname("문자열"); 상단에 DELIMITER $$는 문장이 끝나는 것을 $$로 표시되게 바꾸는 것인데 아니면 RETURN CONCAT의 세미콜론을 함수 생성 끝으로 생각해서 오류가 나기 때문이다 지금 만들어준 HELLONAME이라는 함수는 문자열을 입력하면 HELLO.. 2022. 2. 3.
TRANSCATION / ROLLBACK start transaction; insert into authors (name, email) values ("트렌젝션 테스트", "제대로된 데이터") ; select last_insert_id(); select * from authors; commit; -- 트렌젝션이 종료가 됨 rollback; 여러개의 커리문들이 제대로 수행이 되었다면 하나의 작업이 완료된 것으로 생각하고 적용하는데 (COMMIT) 그렇지 않고 중간에 어떠한 문제가 생겼다면 ROLLBACK 이라는 것을 통해서 그작업이 일어나기 전(START TRANSACTION 시점)으로 돌아가게끔 한다 2022. 2. 3.
Inner join / Left join / Right join [1] inner join 교집합으로 생각하면 된다 a테이블과 b테이블이 공통적으로 가지는 것만 select 함 SELECT A.ID , A.ANAME , B.BNAME ( 무엇을 보는지 ) FROM A INNER JOIN B ( 어디에서) ON A.ID= B.ID ; (조건) [2] JOIN을 기준으로 왼쪽에 있는 모든 것을 보여주고 오른쪽의 것은 겹치는 부분만 보여준다 SELECT A.ID , A.ANAME, B.BNAME * FROM A LEFT JOIN B ON A.ID = B.ID; [3] JOIN을 기준으로 오른쪽 테이블은 모두 보여주고 A테이블에서는 B와 같은 부분만 보여준다 SELECT B.ID, A.ANAME , B.BNAME FROM A RIGHT JOIN B ON A.ID = B.ID ; 2022. 2. 3.
테이블 복사 , 초기화 TRUNCATE TABLE [1] 테이블 복사 방법 create table owners_copy Like owners; insert into owners_copy select * from owners ; [2] 테이블 복사 방법 2 create table owners_copy2 select * from owners ; // 행 값이 복사가 된다 [3] 임시테이블 create temporary table if not exists (동일 테이블이 없을 때만) temp_tabel ( tempId int primary key auro_increment , tempName varchar(10) ); [4] 처음 만들었을 때의 상태로 초기화 Truncate table table_name; 2022. 2. 3.
서브쿼리 정리하기 use sakila; -- actor desc actor; select * from actor; -- pk : actort_id 가 100 번의 배우 select * from actor where actor_id =100; -- first_name이 scarlett인 배우 select * from actor where first_name = 'scarlett'; -- last_name이 johansson인 배우 select * from actor where last_name = 'johansson'; -- johansson 성을 가진 배우의 수 select count(*) from actor where last_name = 'johansson'; -- 배우들의 last_name의 목록 ( 중복 없이 ) .. 2022. 1. 27.