Database/MySQL
-
stored proceduere : 긴 쿼리문을 한 단어로 축약 자주 사용하는 SQL 쿼리문을 stored procedure로 만들어두면 편리하다. stored procedure 생성 방법 DELIMTTER $$ $$ CREATE PROCEDURE 데이터베이스명.프로시저명() BEGIN 축약할 SQL문; END $$ DELIMITTER ; 위와 같이 stored procedure를 만든 뒤 사용하려면 아래와 같이 호출하면 된다. CALL 프로시저명() example) stored procedure 생성 DELIMITER $$ $$ CREATE PROCEDURE mart.get_5000_over() BEGIN SELECT * FROM product WHERE 가격 > 5000; END $$ DELIMITE..
[MySQL] stored procedurestored proceduere : 긴 쿼리문을 한 단어로 축약 자주 사용하는 SQL 쿼리문을 stored procedure로 만들어두면 편리하다. stored procedure 생성 방법 DELIMTTER $$ $$ CREATE PROCEDURE 데이터베이스명.프로시저명() BEGIN 축약할 SQL문; END $$ DELIMITTER ; 위와 같이 stored procedure를 만든 뒤 사용하려면 아래와 같이 호출하면 된다. CALL 프로시저명() example) stored procedure 생성 DELIMITER $$ $$ CREATE PROCEDURE mart.get_5000_over() BEGIN SELECT * FROM product WHERE 가격 > 5000; END $$ DELIMITE..
2023.03.12 -
view 사용 이유 복잡하게 JOIN 해놓은 테이블들을 하나의 테이블 또는 view로 만들어두면 두고두고 재사용할 수 있어서 편리하다. VIEW는 실제 테이블이 아니므로 테이블보다 용량을 적게 차지한다. table에 컬럼변경이 필요할 때 view를 만들어서 먼저 실험해볼 수 있다. view 안에서 또view를 만들 수 있다. CREATE VIEW 뷰이름 AS SELECT 컬럼1, 컬럼2, ... FROM 테이블명 product 테이블과 sales 테이블을 inner join한 결과를 view로 저장하고 싶다. CREATE VIEW view_test AS SELECT sales.id, 고객번호, 상품id, 구매날짜, 상품명, 가격 FROM sales INNER JOIN product ON sales.상품i..
[MySQL] 가상 테이블 viewview 사용 이유 복잡하게 JOIN 해놓은 테이블들을 하나의 테이블 또는 view로 만들어두면 두고두고 재사용할 수 있어서 편리하다. VIEW는 실제 테이블이 아니므로 테이블보다 용량을 적게 차지한다. table에 컬럼변경이 필요할 때 view를 만들어서 먼저 실험해볼 수 있다. view 안에서 또view를 만들 수 있다. CREATE VIEW 뷰이름 AS SELECT 컬럼1, 컬럼2, ... FROM 테이블명 product 테이블과 sales 테이블을 inner join한 결과를 view로 저장하고 싶다. CREATE VIEW view_test AS SELECT sales.id, 고객번호, 상품id, 구매날짜, 상품명, 가격 FROM sales INNER JOIN product ON sales.상품i..
2023.03.09 -
아래와 같이 2개의 table이 있다고 하자. 두 테이블의 결과를 합치고 싶다. SELECT * FROM stock UNION SELECT * FROM stock_1; ※ 컬럼이 일치해야만 합칠 수 있다! ※ 테이블 간 중복 데이터는 제거됨 ※ 중복데이터도 보존하고 싶다면 UNION ALL 을 사용하면 된다
[MySQL] SELECT 결과를 합치기 (UNION)아래와 같이 2개의 table이 있다고 하자. 두 테이블의 결과를 합치고 싶다. SELECT * FROM stock UNION SELECT * FROM stock_1; ※ 컬럼이 일치해야만 합칠 수 있다! ※ 테이블 간 중복 데이터는 제거됨 ※ 중복데이터도 보존하고 싶다면 UNION ALL 을 사용하면 된다
2023.03.09 -
수정하려면 UPDATE - - SET - - WHERE UPDATE 테이블명 SET 컬럼1 = 값, 컬럼2 = 값 WHERE 조건식 책의 가격을 1500원으로 바꾸고 싶다. (책의 id=1임) UPDATE stock SET 가격 = "1500" WHERE id = 1; 값을 아예 바꾸는 것이 아닌 사칙연산도 가능하다. UPDATE stock SET 가격 = 가격 + 100 WHERE id = 1; 삭제하려면 DELETE FROM - - WHERE 조건식에 맞는 모든 행을 삭제한다. DELETE FROM 테이블명 WHERE 조건식 마지막 id 값의 데이터만 삭제하고 싶다. DELETE FROM stock ORDER BY id DESC LIMIT 1; JOIN & UPDATE JOIN한 테이블도 수정할 수 ..
[MySQL] 테이블의 데이터 수정/삭제 (UPDATE/DELETE)수정하려면 UPDATE - - SET - - WHERE UPDATE 테이블명 SET 컬럼1 = 값, 컬럼2 = 값 WHERE 조건식 책의 가격을 1500원으로 바꾸고 싶다. (책의 id=1임) UPDATE stock SET 가격 = "1500" WHERE id = 1; 값을 아예 바꾸는 것이 아닌 사칙연산도 가능하다. UPDATE stock SET 가격 = 가격 + 100 WHERE id = 1; 삭제하려면 DELETE FROM - - WHERE 조건식에 맞는 모든 행을 삭제한다. DELETE FROM 테이블명 WHERE 조건식 마지막 id 값의 데이터만 삭제하고 싶다. DELETE FROM stock ORDER BY id DESC LIMIT 1; JOIN & UPDATE JOIN한 테이블도 수정할 수 ..
2023.03.09 -
CREATE TABLE stock ( id int AUTO_INCREMENT PRIMARY KEY, 상품명 varchar(100), 가격 int ); INSERT INTO 테이블 (컬럼명1, 컬럼명2, ...) VALUES (넣을값1, 넣을값2, ...) INSERT INTO stock (id, 상품명, 가격) VALUES (1, "책", 1000); ※ 모든 컬럼에 데이터를 입력할 때는 컬럼명을 생략 가능하다. INSERT INTO stock VALUES (1, "책", 1000); ※ 컬럼위치에 서브쿼리를 넣을 수 있다. 단, 1개 값만 뱉는 쿼리문이여야 한다. ※ 여러 행을 동시에 넣을 수 있다. INSERT INTO stock (상품명, 가격) VALUES ("가방", 500), ("연필", 30..
[MySQL] 테이블에 데이터 집어넣기 (INSERT)CREATE TABLE stock ( id int AUTO_INCREMENT PRIMARY KEY, 상품명 varchar(100), 가격 int ); INSERT INTO 테이블 (컬럼명1, 컬럼명2, ...) VALUES (넣을값1, 넣을값2, ...) INSERT INTO stock (id, 상품명, 가격) VALUES (1, "책", 1000); ※ 모든 컬럼에 데이터를 입력할 때는 컬럼명을 생략 가능하다. INSERT INTO stock VALUES (1, "책", 1000); ※ 컬럼위치에 서브쿼리를 넣을 수 있다. 단, 1개 값만 뱉는 쿼리문이여야 한다. ※ 여러 행을 동시에 넣을 수 있다. INSERT INTO stock (상품명, 가격) VALUES ("가방", 500), ("연필", 30..
2023.03.09 -
INNER JOIN은 여러 테이블을 한번에 출력하고 싶을 때 사용한다. 또한 ON 조건문을 붙여 공통점이 있는 행만 출력할 수 있다. 그러나 공통점이 없는 행도 출력하고 싶다면 LEFT JOIN, RIGHT JOIN, OUTER JOIN 쓰면 된다. 왼쪽 테이블 전체 + 공통된 행 출력 → LEFT JOIN SELECT * FROM program LEFT JOIN teacher ON program.강사id = teacher.id; 왼쪽 테이블인 "program"의 강사id와 일치하는 정보가 "teacher" 테이블에 없는 경우에는 [NULL]값을 채워준다. 오른쪽 테이블 전체 + 공통된 행 출력 → RIGHT JOIN SELECT * FROM program RIGHT JOIN teacher ON prog..
[MySQL] LEFT JOIN / RIGHT JOININNER JOIN은 여러 테이블을 한번에 출력하고 싶을 때 사용한다. 또한 ON 조건문을 붙여 공통점이 있는 행만 출력할 수 있다. 그러나 공통점이 없는 행도 출력하고 싶다면 LEFT JOIN, RIGHT JOIN, OUTER JOIN 쓰면 된다. 왼쪽 테이블 전체 + 공통된 행 출력 → LEFT JOIN SELECT * FROM program LEFT JOIN teacher ON program.강사id = teacher.id; 왼쪽 테이블인 "program"의 강사id와 일치하는 정보가 "teacher" 테이블에 없는 경우에는 [NULL]값을 채워준다. 오른쪽 테이블 전체 + 공통된 행 출력 → RIGHT JOIN SELECT * FROM program RIGHT JOIN teacher ON prog..
2023.03.09 -
INNER JOIN 기준 테이블과 조인 테이블 모두 데이터가 존재하는 것만 조회 SELECT 컬럼1, 컬럼2, ... FROM 테이블1 INNER JOIN 테이블2 ON 조건문 sales 테이블을 출력하는데, product에 있던 상품명, 가격도 함께 출력하고 싶다. SELECT * FROM sales INNER JOIN product ON sales.상품id = product.id; sales 테이블의 id, 고객번호, 구매날짜와 product에 있던 상품명, 가격 그리고 user_table의 고객명을 함께 출력하고 싶다. SELECT sales.id, 고객번호, 구매날짜, 가격, 고객명 FROM sales INNER JOIN product ON sales.상품id = product.id INNER J..
[MySQL] INNER JOININNER JOIN 기준 테이블과 조인 테이블 모두 데이터가 존재하는 것만 조회 SELECT 컬럼1, 컬럼2, ... FROM 테이블1 INNER JOIN 테이블2 ON 조건문 sales 테이블을 출력하는데, product에 있던 상품명, 가격도 함께 출력하고 싶다. SELECT * FROM sales INNER JOIN product ON sales.상품id = product.id; sales 테이블의 id, 고객번호, 구매날짜와 product에 있던 상품명, 가격 그리고 user_table의 고객명을 함께 출력하고 싶다. SELECT sales.id, 고객번호, 구매날짜, 가격, 고객명 FROM sales INNER JOIN product ON sales.상품id = product.id INNER J..
2023.03.06 -
NOT NULL 해당 컬럼에는 NULL 값을 입력해서는 안된다. CREATE TABLE 테이블명 ( 컬럼명 int NOT NULL ); UNIQUE 해당 컬럼 안에서는 모든 행의 데이터가 각각 다른 데이터여야한다. CREATE TABLE 테이블명 ( 컬럼명 int UNIQUE ); 가장 하단에 UNIQUE(컬럼명1, 컬럼명2, ...) 처럼도 사용할 수 있다. CREATE TABLE 테이블명 ( 컬럼명1 int, 컬럼명2 varchar(100), UNIQUE(컬럼명1, 컬럼명2) ); 그러나 이렇게 사용할 경우, 컬럼명1과 컬럼명2의 값이 둘 다 같을 경우에만 제약을 건다. 즉, 컬럼명1의 데이터는 같지만 컬럼명2의 데이터만 다르다면 저장을 허용한다. CHECK( ) check() 안에 컬럼에 들어갈 제..
[MySQL] 컬럼에 Constraints 설정NOT NULL 해당 컬럼에는 NULL 값을 입력해서는 안된다. CREATE TABLE 테이블명 ( 컬럼명 int NOT NULL ); UNIQUE 해당 컬럼 안에서는 모든 행의 데이터가 각각 다른 데이터여야한다. CREATE TABLE 테이블명 ( 컬럼명 int UNIQUE ); 가장 하단에 UNIQUE(컬럼명1, 컬럼명2, ...) 처럼도 사용할 수 있다. CREATE TABLE 테이블명 ( 컬럼명1 int, 컬럼명2 varchar(100), UNIQUE(컬럼명1, 컬럼명2) ); 그러나 이렇게 사용할 경우, 컬럼명1과 컬럼명2의 값이 둘 다 같을 경우에만 제약을 건다. 즉, 컬럼명1의 데이터는 같지만 컬럼명2의 데이터만 다르다면 저장을 허용한다. CHECK( ) check() 안에 컬럼에 들어갈 제..
2023.03.06