'Data Base' 카테고리의 글 목록
본문 바로가기
728x90

Data Base35

Leetcode) No.262 [Trips and Users] Leetcode) No.262 [Trips and Users] 문제 (2) Trips and Users - LeetCode Trips and Users - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 설명 * GROUP BY * HAVING * WHERE * ROUND * IF * COUNT Request_at 날짜를 기준으로 그룹화를 한다. 이 때, 그 그룹에는 Banned 되지 않은 Client와 Driver 만 들어갈 수 있으며, 2013년 10월 1일 .. 2022. 4. 4.
MySQL) 프로시저(PROCEDURE) 프로시저 (PROCEDURE) 어떠한 동작을 일괄 처리하기 위한 쿼리문의 집합 설명 DLIMITER $$ CREATE PROCEDURE ( ) BEGIN END $$ 프로시저(Procedure)란 MySQL 에서 제공이 되는 프로그래밍 기능이라고 생각을 하면 된다. 현재 프로시저의 입출력 파라미터(매개변수) 를 관리하는 부분이다. 입력 파라미터는 `IN ` 으로, 출력 파라미터는 `OUT `으로 선언이 된다. 그리고 입출력을 동시에 행하는 파라미터도 있으며 이는 `INOUT ` 으로 선언이 된다. 아래에 예시를 들어보았다. IN number INT OUT sum INT INOUT value INT 주황색 부분은 입력, 출력, 입출력 여부를 선언하는 부분이다. 초록색 부분은 그 파라미터의 이름이고 보라색 .. 2022. 1. 17.
HackerRank SQL) Binary Tree Nodes HackerRank SQL) Binary Tree Nodes 문제 Binary Tree Nodes | HackerRank Binary Tree Nodes | HackerRank Write a query to find the node type of BST ordered by the value of the node. www.hackerrank.com Code SELECT CUR.N, CASE WHEN CUR.P IS NULL THEN 'Root' WHEN CUR.N IN (SELECT DISTINCT NXT.P FROM BST AS NXT WHERE NXT.P IS NOT NULL) THEN 'Inner' ELSE 'Leaf' END FROM BST AS CUR ORDER BY CUR.N ASC; 설명 SE.. 2022. 1. 15.
MySQL) IF, IFNULL, NULLIF, CASE ~ WHEN ~ END IF, IFNULL, NULLIF, CASE ~ WHEN ~ END [제어 흐름 함수] 설명 * IF ( , , ) 이 참이면 이 반환이 되고, 이 거짓이면 이 반환이 된다. SELECT IF (100 > 200, 'True', 'False'); # False가 출력이 될 것 이다. SELECT IF (200 > 100, 'True', 'False'); # True가 출력이 될 것 이다. 이 100 > 200 인 선언문은 거짓 이므로 이 출력되어 'False'가 출력이 되었고, 수식이 200 > 100 인 선언문은 참 이므로 이 출력되어 'True'가 출력이 되었다. * IFNULL ( , ) 이 NULL이 아니면 이 반환이 되고, NULL이면 가 반환이 된다. SELECT IFNULL (NULL, 'T.. 2022. 1. 11.
MySQL) WITH절을 이용한 비재귀적 CTE WITH절 (비재귀적 CTE) Non Recursive CTE(Common Table Expression) 설명 아래와 같이 테이블들이 생성되고 데이터들이 삽입되었다고 하자. CREATE TABLE department ( dept_num INT NOT NULL PRIMARY KEY, name VARCHAR(20) NOT NULL ); INSERT INTO department VALUES (1, 'A'), (2, 'B'), (3, 'C'); CREATE TABLE employee ( emp_id INT NOT NULL PRIMARY KEY, dept_num INT NOT NULL, name VARCHAR(20), salary INT NULL, FOREIGN KEY (dept_num) REFERENCES d.. 2022. 1. 4.
MySQL) ON DUPLICATE KEY UPDATE ON DUPLICATE KEY UPDTAE 중복된 Key 입력 시 이렇게 처리 해 주세요 설명 CREATE TABLE users ( id INT NOT NULL PRIMARY KEY, name VARCHAR(20), addr VARCHAR(30) ); INSERT INTO users VALUES (1111, 'David', 'Songtan'), (2222, 'Jihoon', 'Seoul'), (3333, 'Yujin', 'Anyang'); 위와 같이 테이블 생성 및 data INSERT 를 하였다. 당연히 알고있는 것 이지만 중복되는 id값을 가지는 data의 삽입은 아래와 같이 불가능하다. 하지만 아래와 같은 방법들을 통해 중복되는 Primary key 값을 가지는 data에 대해서 처리 방식을 지정할.. 2022. 1. 4.
MySQL) 샘플 데이터 테이블 생성 샘플 데이터 테이블 생성 CREATE TABLE SELECT 설명 CREATE TABLE emp ( id INT NOT NULL PRIMARY KEY, name VARCHAR(30) NOT NULL, age INT NULL ); INSERT INTO emp VALUES (11111, 'David', 34), (22222, 'Jiyeon', 29), (33333, 'Roy', 31), (44444, 'John', 23); 위와 같은 테이블을 생성한 뒤 4개의 데이터를 집어 넣었다. emp 테이블에는 아래와 같이 data들이 들어있게 된다. 만약, 이 테이블에서 name COLUMN 만 따로 가져와서 emp_names 테이블을 따로 만들고 싶다면 어떻게 해야할까? 아래와 같이 하면 된다. [첫 번째 방법] .. 2022. 1. 4.
MySQL) AUTO_INCREMENT AUTO_INCREMENT 자동으로 증가하는 COLUMN 설명 CREATE TABLE auto_test( num INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name VARCHAR(10) ); num COLUMN 은 AUTO_INCREMENT로 선언이 되었다. AUTO_INCREMENT COLUMN 은 꼭 UNIQUE 조건을 가지고 있어야 한다. 그리고 이 TABLE에 data를 집어넣을 때 이 num COLUMN 에는 값을 넣을 필요가 없다. 자동으로 값이 입력되기 때문이다. 따라서, num COLUMN 에는 NULL 값을 입력해도 된다. 이 TABLE에 3개의 data를 입력 해 보았다. INSERT INTO auto_test VALUES (NULL, 'A'), (NULL.. 2022. 1. 4.
MySQL) 층간 합계 (ROLLUP) MySQL) WITH ROLLUP GROUP BY 절과 함께 사용되는 총합 또는 층간 합계 함수 [CREATE TABLE] CREATE TABLE price ( Category1 VARCHAR(10), Category2 VARCHAR(10), Cnt INT ); 위와 같은 TABLE 을 만들었다. [INSERT INTO price] INSERT INTO price VALUES ('Book', 'A', 12), ('Book', 'B', 8), ('Book', 'C', 23), ('Clothes', 'A', 9), ('Clothes', 'B', 11), ('Clothes', 'C', 7), ('Elec', 'A', 52), ('Elec', 'B', 19); price TABLE에 위와 같은 data들을 삽입.. 2021. 12. 28.
SQL) 문자열 다루기_2 (LOCATE/LEFT/RIGHT/LOWER/UPPER) SQL) 문자열 다루기 2 LOCATE(...), LEFT(...), RIGHT(...), LOWER(...), UPPER(...) LOCATE(sub_str, str) : 문자열에서 어떠한 문자열이 처음 나오는 곳의 index 값을 출력한다. LOCATE('aba', 'bcbababac') = 'bcbababac' 문자열에서 'aba' 문자열이 처음 나오는 곳의 index = 4 위 문자열 'bcbababac' 에서 'aba' 문자열이 처음 나오는 곳의 index 는 4 이다. 이 때 주의해야 할 점은, 대부분의 프로그래밍 언어에서 배열의 첫 시작 index는 0 이다. 하지만 MySQL 에서는 0이 아닌 1부터 시작한다. SELECT LOCATE('aba', 'bcbababac') AS Locate .. 2021. 9. 10.
SQL) 문자열 다루기_1 (LENGTH/CONCAT/SUBSTRING) SQL) 문자열 다루기 2 LENGTH(...), CONCAT(...), SUBSTRING(...), LENGTH(A) : 주어진 문자열의 길이를 출력하는 함수이다. LENGTH('Hello') = 'Hello' 문자열의 길이 = 5 SELECT LENGTH('Hello') AS Length FROM DUAL; CONCAT(A, B, ...) : 주어진 문자열들을 더하는 함수이다. CONCAT('Hello', ' ', 'World!') = 'Hello' + ' ' + 'World!' = 'Hello World!' CREATE TABLE S0910_2 ( First_name VARCHAR(10), Last_name VARCHAR(10) ); INSERT INTO S0910_2 VALUES ('Jihoon'.. 2021. 9. 10.
Leetcode) No.626 [Exchange Seats] Leetcode) No.626 [Exchange Seats] 문제 Exchange Seats - LeetCode Exchange Seats - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 설명 #UNION #SUB_QUERY #ORDER 이와 같이 id가 가리키는 student가 변경되어야 한다. 홀수 id 를 만드는 Sub query 와 짝수 id 를 만드는 Sub query 를 하나씩 작성하여 UNION 을 한 뒤, UNION 이 된 table 을 id 를.. 2021. 9. 4.
Leetcode) No.180 [Consecutive Numbers] Leetcode No.180 [Consecutive Numbers] 문제 Consecutive Numbers - LeetCode Consecutive Numbers - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 설명 Id 는 각각 순차적으로 나열이 되어 있으면서 저렇게 세 집합의 교집합으로 같은 Num을 가지는 숫자를 탐색해서 풀어보았다. 그리고 같은 번호가 여러번 확인이 될 수 있고, 그 결과 여러번 출력될 수 있으므로 DISTINCT 를 통해 한 번호가 .. 2021. 9. 3.
SQL) 순위함수(RANK, DENSE_RANK, ROW_NUMBER) 순위 함수 RANK(), DENSE_RANK(), ROW_NUMBER() RANK() : 순위에 대해서 중복되는 값들에 대해선 동일한 순위로 표시를 한다. 그리고 다음에 나오는 수의 순위는 이전에 중복되었던 값들의 수만큼 올라간다. CREATE TABLE Study ( Value INT ); INSERT INTO Study VALUES (100), (300), (300), (200), (300), (100), (200), (400); SELECT Value, RANK() OVER (ORDER BY Value ASC) AS 'Rank' FROM Study; 위 예시처럼 중복되는 값들에 대해선 동일한 순위가 부여가 되었고, 그 다음 값에 대한 순위는 이전에 중복된 값들의 개수만큼 올라간 순위가 부여되었다. .. 2021. 9. 3.
SQL study [21.09.03] SQL study [21.09.03] DELETE(/MODIFY) Action 1) CASCADE : Master 삭제시 Child 같이 삭제 2) SET NULL : Master 삭제시 Child 해당 필드는 NULL 3) SET DEFAULT : Master 삭제시 Child 해당 필드는 Default 값으로 설정 4) RESTRICT : Child 테이블에 PK 값이 없는 경우에만 Master 삭제 허용 5) NO ACTION : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않는다. INSERT Action 1) AUTOMATIC : Master 테이블에 PK 가 없는 경우 Master PK 를 생성 후 Child 입력 2) SET NULL : Master 테이블에 PK 가 없는 경우 Child .. 2021. 9. 3.
728x90