본문 바로가기

[개발] Practice/SQL Database23

[SQL / Database] 저장 프로시저(Stored procedure) 사용해보기 💡저장 프로시저(Stored procedure) 사용해보기 💜 저장 프로시저(Stored procedure) 알아보기 여러번 사용해야하는 SQL 문이 있을 때 매번 길게 타이핑하는 것이 불편해서 저장하여 사용하고 싶다면 저장 프로시저를 이용하는 방법이 있다. 저장 프로시저는 간단하게 SQL 문 저장 기능이라고 생각하면 된다. 💜 DBeaver 에서 저장 프로시저 사용하기 현재 데이터베이스의 하위 항목인 Procedures 를 우클릭 후 Create New Procedure 를 클릭한다. 그럼 위와 같이 창이 뜨는데 여기서 프로시저명을 정하여 입력한 후 확인 버튼을 클릭한다. 그럼 위와 같은 화면으로 전환되는데, Source 탭에서 BEGIN 과 END 사이에 재사용하고 싶은 코드를 작성하면 된다. 주의할.. 2023. 6. 4.
[SQL / Database] Table 대신 View 사용해보기 💡Table 대신 View 사용해보기 💜 View 알아보기 CREATE VIEW 뷰명 AS SELECT 컬럼1, 컬럼2, ... FROM 테이블명 SELECT 문법을 사용하여 출력한 데이터를 테이블로 두고두고 저장해서 사용하고 싶을 때 Table 대신 View 를 사용할 수 있다. View 는 가상 테이블처럼 SELECT 문을 테이블 형태로 보여주며, 테이블과 동일하게 SELECT, INSERT, UPDATE, DELETE 모두 사용이 가능하다. (일부 DBMS 는 SELECT 문법만 사용 가능할 수도 있다.) SELECT 문법을 사용하여 찾은 데이터를 가지고 View 를 만드는 문법은 위와 같다. 주로 JOIN 해서 작성해뒀던 SELECT 문을 테이블형태로 재사용하고 싶을 때 가장 많이 사용하는데, 장.. 2023. 6. 4.
[SQL / Database] UNION 사용하여 테이블 합치기 💡UNION 사용하여 테이블 합치기 테이블을 합치는 방법에는 대표적으로 JOIN 과 UNION 이 있다. JOIN 의 경우 테이블을 양옆으로 붙일 때 사용하며, UNION 은 위아래로 붙일 때 사용한다. 💜 UNION 으로 테이블 합치기 SELECT * FROM 테이블명1 UNION SELECT * FROM 테이블명2; 비슷한 양식의 테이블들을 한번에 출력하고 싶을 때 UNION 을 사용하며, 각 SELECT 문 사이에 UNION 을 붙여준다. UNION 은 테이블을 위아래로 합치는 것이므로, 당연히 각 테이블에서 출력할 컬럼 개수는 동일해야 한다. 컬럼명은 달라도 출력은 가능하지만 사용할 필요성이 없으므로 가능하다는 점만 알아두자! 같은 테이블의 출력결과도 UNION 을 사용하면 하나로 합칠 수 있지만.. 2023. 6. 3.
[SQL / Database] 데이터 수정/삭제하기 💡데이터 수정/삭제하기 💜 데이터 수정하기 🤍 UPDATE SET 문법으로 데이터 수정하기 UPDATE 테이블명 SET 컬럼명1 = 값, 컬럼명2 = 값 WHERE 조건식 특정 행의 데이터를 수정하고 싶으면 UPDATE SET 문법을 사용한다. SET 뒤에 컬럼마다 어떤 값으로 수정할지 '컬럼명 = 값' 의 형태로 작성하며, 여러 개를 수정하고 싶으면 콤마(,)를 사용하여 나열한다. 값을 완전히 대체하는 것도 가능하지만 기존의 값에 사칙연산도 가능하다. (예를 들어, 컬럼명이 가격이고 기존 가격에 100원을 더한 값으로 대체하고 싶다면 가격 = 가격 + 100 과 같이 작성한다.) WHERE 조건식을 빼면 모든 행이 수정되어버리므로 주의할 것!! 🤍 JOIN 문법과 UPDATE 문법을 조합하여 데이터 수.. 2023. 6. 1.
[SQL / Database] 데이터 넣기 & 데이터 및 테이블 복사하기 💡데이터 넣기 & 데이터 및 테이블 복사하기 💜 데이터 넣기 🤍 INSERT 문법으로 데이터 넣기 INSERT INTO 테이블명 (컬럼명1, 컬럼명2 ...) VALUES (값1, 값2 ...) 테이블에 데이터를 추가하려면 INSERT 문법을 사용하면 된다. 테이블의 컬럼명들과 넣을 값들을 차례로 적는 방식으로 사용하며, 각 컬럼 순서는 임의로 변경할 수 있지만 대응할 값과 순서를 맞춰주어야 한다. 모든 컬럼을 작성해도 되지만, 일부 컬럼에만 데이터를 저장할 수도 있으며 이 때 빈 곳은 NULL 로 채워진다. 예를 들어, AUTO_INCREMENT 제약이 부여된 컬럼은 데이터 입력을 생략해도 자동으로 채워진다. 컬럼에 NOT NULL 제약 조건이 부여된 경우 NULL 입력은 당연히 불가능하다. NULL .. 2023. 5. 29.
[SQL / Database] JOIN 사용하여 테이블 합치기 💡JOIN 사용하여 테이블 합치기 💜 JOIN 없이 테이블 합치기 SELECT 테이블명1.컬럼명1, 테이블명1.컬럼명2, 테이블명2.컬럼명2, 테이블명2.컬럼명3 FROM 테이블명1, 테이블명2 WHERE 테이블명1.컬럼명2 = 테이블명2.컬럼명1 ; SELECT 문법은 사실 FROM 뒤에 테이블명을 여러 개 적는 것이 가능하며, 이 경우 하나의 테이블로 합쳐서 출력한다. 컬럼도 자유롭게 선택 가능한데 단, 컬럼명이 겹치면 에러가 발생하니 컬럼명만 쓰는 대신 "테이블명.컬럼명" 과 같이 점을 찍은 형태로 사용하는 것이 좋다. (특정 테이블의 모든 컬럼을 출력하고 싶다면 "테이블명.*" 과 같이 작성하면 된다.) 또한, 하나의 테이블로 합쳐서 보여주는 대신 가능한 모든 행의 조합을 출력하므로 필터링이 필요.. 2023. 5. 29.
[SQL / Database] 정규화/정규형 이해해보기2 💡정규화/정규형 이해해보기2 💜 제3정규화/제3정규형 제2정규형을 만족하는 테이블에서 primary key 또는 composite primary key 컬럼에 종속되지 않은 컬럼에 종속된 컬럼을 다른 테이블로 빼는 작업을 제3정규화라고 하며, 이 작업이 완료된 테이블을 제3정규형이라고 한다. 제3정규형의 교과서적 정의는 제2정규형에서 transitive dependency 를 제거한 테이블을 의미한다. 여기서 말하는 transitive dependency 에 대해 말하자면... 특정 테이블에 composite primary key 또는 primary key 역할을 하는 컬럼이 있고 거기에 직접적으로 종속된 컬럼A가 있는 상태에서 컬럼A에 종속된 컬럼B가 있으면 컬럼 B는 primary key 컬럼에 tr.. 2023. 5. 28.
[SQL / Database] 정규화/정규형 이해해보기 💡정규화/정규형 이해해보기 💜 제1정규화/제1정규형 하나의 셀 안에는 하나의 데이터만 보관해야 한다. 만약, 하나의 셀에 데이터를 여러 개 보관하면 데이터가 많아질수록 검색/수정/삭제 작업이 느려지므로 성능이슈가 발생할 가능성이 높다. 하나의 셀 안에 하나의 데이터만 보관하는 작업을 제1정규화라고 하며, 이 작업이 완료된 테이블을 제1정규형이라고 한다. 비관계형 데이터베이스는 제1정규화를 하지 않는 경우가 많지만, 관계형 데이터베이스에서는 정규화를 하지 않았을 때의 단점이 훨씬 많으므로 꼭 제1정규화 작업을 해두어야 한다. 💜 제2정규화/제2정규형 특정 테이블에서 해당 테이블의 주제와 관련 없는 컬럼을 다른 테이블로 옮기는 작업을 제2정규화라고 하며, 이 작업이 완료된 테이블을 제2정규형이라고 한다. 제.. 2023. 5. 28.
[SQL / Database] 컬럼에 제약조건(Constraints)주기 💡컬럼에 제약조건(Constraints)주기 CREATE TABLE 테이블명 ( 컬럼명1 datatype NOT NULL, 컬럼명2 datatype UNIQUE, 컬럼명3 datatype CHECK(조건식), 컬럼명4 datatype PRIMARY KEY, 컬럼명5 datatype AUTO_INCREMENT ) 💜 다양한 제약조건 🤍 NOT NULL 기본적으로 데이터를 넣지 않으면 자동으로 NULL 이 된다. NOT NULL 은 입력 금지를 의미하며, 데이터를 넣지 않으면 저장이 되지 않게 함으로써 빈 데이터가 입력되지 않도록 한다. 🤍 UNIQUE CREATE TABLE 테이블명 ( 컬럼명1 datatype, 컬럼명2 datatype, 컬럼명3 datatype, UNIQUE(컬럼명2, 컬럼명3) ) U.. 2023. 5. 28.
[SQL / Database] SQL 문법으로 테이블과 컬럼 생성/삭제해보기 💡SQL 문법으로 테이블과 컬럼 생성/삭제해보기 💜 데이터베이스 생성/삭제해보기 // 데이터베이스 생성하기 CREATE DATABASE 데이터베이스명 // 데이터베이스 삭제하기 DROP DATABASE 데이터베이스명 💜 테이블 생성/삭제해보기 // 테이블 생성하기 CREATE TABLE 데이테베이스명.테이블명 ( 컬럼명1 datatype, 컬럼명2 datatype DEFAULT '디폴트값', 컬럼명3 datatype // 마지막 줄에넌 콤마를 넣으면 안된다! ) // 테이블 삭제하기 DROP TABLE 테이블명 컬럼에 데이터가 없는 경우 기본으로 채워넣을 값을 설정하고 싶다면 위와 같이 생성할 컬럼명 마지막에 DEFAULT '디폴트값' 을 붙여준다. 별도의 기본값을 지정하지 않는 경우, 데이터가 없으면 .. 2023. 5. 28.
[SQL / Database] IF / CASE 문법 사용해보기 💡IF / CASE 문법 사용해보기 💜 IF IF(조건식, 조건식이 참일 때 값, 조건식이 거짓일 때 값) SQL문을 작성할 때 문자 혹은 숫자와 같은 데이터를 넣는 곳에 고정값이 아니라 조건에 따라 유동적인 값을 넣고 싶은 경우 IF 함수를 사용할 수 있다. IF 함수는 위와 같은 형태로 작성하며, 조건식은 WHERE 문 작성하듯이 작성하면 된다. SELECT 고객명, 사용금액, IF(사용금액>200000, "우수", "일반") AS 고객등급 FROM card 예를 들어, card 테이블에서 고객명과 사용금액과 함께 사용금액을 20만원 기준으로 고객등급을 우수와 일반으로 나누어 고객등급이라는 이름의 컬럼으로 추가하여 출력하고 싶으면 위와 같이 작성하면 된다. 만약 경우의 수가 3개 이상이라면 IF 함수.. 2023. 5. 28.
[SQL / Database] GROUP BY 로 그룹지어 통계내기 💡GROUP BY 로 그룹지어 통계내기 💜 GROUP BY 🤍 GROUP BY 사용해보기 SELECT 컬럼명 FROM 테이블명 GROUP BY 컬럼명 "SELECT FROM " 뒤에 "GROUP BY 컬럼명" 을 붙이면 해당 컬럼에 있는 데이터를 카테고리화하여 그룹으로 보여준다. 동작방식은 DISTINCT 와 유사하다. GROUP BY 문법을 통해 그룹을 만든다고 해서 딱히 쓸모가 없으므로, 일반적으로 통계관련 함수인 MIN(), MAX(), COUNT(), SUM(), AVG() 와 함께 카테고리마다 통계를 낼 때 사용한다. 🤍 GROUP BY 결과 필터링하기 SELECT 컬럼명 FROM 테이블명 GROUP BY 컬럼명 HAVING 조건식 GROUP BY 로 카테고리화하여 출력한 데이터의 행이 많은 경.. 2023. 5. 28.