'MySQL' 태그의 글 목록
본문 바로가기
728x90

MySQL10

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) 명시적 형 변환 [CAST(), CONVERT()] CAST( ), CONVERT( ) 데이터의 명시적인 형 변환 설명 데이터의 형 변환은 INT형 data를 CHAR형 data로 바꾸는 것 과 같이 data type을 변경하는 것 이다. 데이터의 형 변환은 명시적인 형 변환과 암시적인 형 변환으로 나뉜다. * 명시적 형 변환 : CAST( ), CONVERT( ) 등의 함수를 사용하여 data type을 직접 바꾸는 것 * 암시적 형 변환 : 명시적으로 형 변환을 의도하는 것이 아니라 자동으로 data type이 바뀌는 것 CREATE TABLE data_type_change ( score DECIMAL(4, 2) ); INSERT INTO data_type_change VALUES (35.23), (52.96); 실수를 입력 받는 테이블을 생성 하였다.. 2022. 1. 5.
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.
MySQL 정수 타입 (Integer types) MySQL 정수 타입 (Integer types) 2021. 8. 6.
728x90