728x90
Database
31

[DATABASE] Stored Procedure

사용자가 정의한 프로시저 RDBMS에 저장되고 사용되는 프로시저 구체적인 하나의 task를 수행 예시 delimiter $$ CREATE PROCEDURE product(IN a int, IN b int, OUT result int) BEGIN SET result = a * b; END $$ delimiter; 위 쿼리는 곱셈을 수행하는 프로시저이다. input parameter인 a, b는 IN으로 명시해주고 결과 값 result는 OUT으로 명시해준다. IMPORTANT ;가 끝이라고 판단할 수 있기 때문에 delimiter를 지정해주어야한다. 프로시저 실행 예시 call product(5, 7, @result) select @result; @result는 사용자가 정의한 변수이다. 이 변수에 결과가..

Database 2023.11.29

[DATABASE] Stored Function

사용자가 정의한 함수 DBMS에 저장되고 사용하는 함수 SQL의 select, insert, update, delete에서 사용할 수 있다. 예시 delimiter $$ CREATE FUNCTION id_generator() RETURNS int BEGIN RETURN (1000000000 + floor(rand() * 1000000000)); END $$ delimiter; 위 예시 쿼리는 ID의 맨 앞자리를 1으로 고정하여 생성하는 함수이다. CREATE FUNCTION으로 함수명을 지정한다. RETURNS 뒤에는 반환되는 데이터 타입을 지정해준다. BEGIN ~ END 사이에 실제로 실행해야하는 내용을 작성한다. IMPORTANT ;가 끝이라고 판단할 수 있기 때문에 delimiter를 지정해주어야..

Database 2023.11.27

[DATABASE] ORDER BY, GROUP BY

ORDER BY 조회 결과를 특정 attribute 기준으로 정렬 기본은 오름차순 정렬이며 ASC로 표기 내림차순은 DESC로 표기 SELECT * FROM article ORDER BY created_at [ASC]; 위 쿼리는 작성일 순서로 오름차순 정렬한 article 결과를 반환한다. aggregate function 여러 tuple들의 정보를 요약해서 하나의 값으로 추출하는 함수 대표적으로 COUNT, SUM, MAX, MIN, AVG 함수가 있음 NULL 값들은 제외한다. SELECT COUNT(*) FROM article; 위 쿼리는 article 수를 출력한다. GROUP BY SELECT C.article_id, COUNT(*) FROM comment C GROUP BY C.article..

Database 2023.11.26

[DATABASE] JOIN

정의된 테이블 예시 테이블 명: article attribute type id (PRIMARY KEY) bigint title varchar content varchar created_at datetime 테이블 명: comment attribute type id (PRIMARY KEY) bigint article_id (FOREIGN KEY) bigint content varchar created_at datetime Implicit Join SELECT A.title FROM comment AS C, article AS A WHERE C.id = 1 and C.article_id = A.id; FROM 절에는 table 들만 나열하고 where 절에 join condition을 명시하는 방식 옛날 방..

Database 2023.11.26

[DATABASE] NULL

NULL의 비교 연산자 SELECT id FROM article WHERE created_at IS NULL IS를 사용해야 NULL 값을 비교할 수가 있다. =을 사용한다면 아무것도 출력되지 않는다. three-valued logic NULL의 비교/논리 연산의 결과로 TRUE, FALSE, UNKNOWN을 가지는 것을 의미한다. UNKNOWN이란 TRUE일 수도 있고 FALSE일 수도 있다는 의미이다 SQL에서 NULL과 비교 연산을 하게되면 그 결과가 UNKNOWN이다. 비교 연산자 예제 결과 1 = 1 TRUE 1 != 1 FALSE 1 = NULL UNKNOWN 1 != NULL UNKNOWN 1 > NULL UNKNOWN 1

Database 2023.11.23

[DATABASE] Subquery (서브쿼리) - IN, (NOT) EXISTS, ANY, ALL

정의된 테이블 예시 테이블 명: article attribute type id (PRIMARY KEY) bigint title varchar content varchar created_at datetime 테이블 명: comment attribute type id (PRIMARY KEY) bigint article_id (FOREIGN KEY) bigint content varchar created_at datetime Subquery SELECT id, title, content, created_at FROM article WHERE created_at < ( SELECT created_at FROM article WHERE id = 1 ); SELECT created_at FROM article WH..

Database 2023.11.22

[DATABASE] 데이터 조회 - Alias, DISTINCT, LIKE, *

정의된 테이블 예시 테이블 명: article attribute type id (PRIMARY KEY) bigint title varchar content varchar created_at datetime 테이블 명: comment attribute type id (PRIMARY KEY) bigint article_id (FOREIGN KEY) bigint content varchar created_at datetime 데이터 조회 SELECT article.id, title, comment.content FROM article, comment WHERE comment.id = 10 and comment.article_id = article.id; WHERE comment.id selection cond..

Database 2023.11.21

[DATABASE] 데이터 추가, 수정, 삭제

정의된 테이블 예시 테이블 명: article attribute type id (PRIMARY KEY) bigint title varchar content varchar created_at datetime 데이터 추가 INSERT INTO article VALUES (1, 'title', 'content', now()); 같은 id(PK)로 두 번 이상 INSERT한다면 에러가 발생한다. INSERT INTO article (id, title, content, created_at) VALUES (1, 'title', 'content', now()); 위와 같이 attribute를 지정해줄 수 있는 방법이 있다. 이로 인해 attribute의 값 순서를 명시적으로 지정해줄 수 있다. 데이터 수정 UPDAT..

Database 2023.11.20

[DATABASE] schema 변경

ALTER TABLE로 table의 schema를 변경할 수 있다 종류 MySQL attribute 추가 ALTER TABLE member ADD gender VARCHAR(2); attribute 이름 변경 ALTER TABLE member RENAME COLUMN addr TO address; attribute 타입 변경 ALTER TABLE member MODIFY COLUMN gender CHAR(2); table 이름 변경 ALTER TABLE member RENAME TO user_account; primary key 추가 ALTER TABLE member ADD PRIMARY KEY (id); 이미 서비스 중인 table의 schema를 변경하는 것이라면 주의해서 변경해야한다. [refere..

Database 2023.11.17

[DATABASE] constraint의 적용

PRIMARY KEY Table의 tuple을 식별하기 위해 사용하며 하나 이상의 attribute로 구성 중복된 값을 가질 수 없으며 NULL을 가질 수 없다. 예를 들어 다음과 같이 Primary Key인 id가 같은 tuple이 존재하면 안된다. id title 1 title1 1 title2 2 title3 attribute가 하나일 때 create table Article( id INT PRIMARY KEY, ... ); attribute가 하나 이상일 때 create table Article( id INT, ... PRIMARY KEY (id) ); attribute가 두 개 이상일 경우 PRIMARY KEY(id, number)처럼 선언해주면 된다. UNIQUE Unique로 지정된 attr..

Database 2023.11.17
728x90