JOHOONDAY
본문 바로가기
728x90

전체 글140

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.
SQL) You can't specify target table '<Table>' for update in FROM clause ※ ERROR : You can't specify target table '' for update in FROM clause ※ #문제의 코드 DELETE FROM Person WHERE Id NOT IN ( SELECT MIN(Id) FROM Person GROUP BY Email ); #해결된 코드 DELETE FROM Person WHERE Id NOT IN ( SELECT Sub.Minval FROM ( SELECT MIN(Id) AS Minval FROM Person GROUP BY Email ) AS Sub ); 문제 Link : Delete Duplicate Emails - LeetCode 위와 같은 코드를 작성하였을 때 이런 에러가 발생하였다. 계속해서 확인을 해 본 결과 DELETE 로 .. 2021. 9. 2.
SQL study [21.09.02] SQL study [21.09.02] AS 의 생략 SELECT A.Name NAME FROM S0902_2 A;# AS 생략 SELECT A.Name AS NAME FROM S0902_2 AS A;# AS 생략 X AS 를 생략하여도 위와 같이 ALIAS를 지을 수 있다는 것을 알았다. WHERE 조건 내에서 같은 Table 을 참조할 때 생기는 오류 DELETE FROM Person WHERE Id NOT IN ( SELECT MIN(Id) FROM Person GROUP BY Email ); 위와 같은 경우 Update 하려는 Table 과 WHERE 조건 내의 Table 과 같은 Table 을 사용한다. 이 경우 이와 같은 오류가 발생할 수 있다. 이런 경우에는 SUB QUERY 를 한번 더 감싸.. 2021. 9. 2.
Leet) No.175 [Combine Two Tables] Leetcode No.175 [Combine Two Tables] 문제 Combine Two Tables - LeetCode Combine Two Tables - 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 설명 두 테이블 에서 Person 테이블에 있는 모든 사람들에 대해서 새로운 테이블을 만들어야 한다. Address 의 PK 인 AddressId 와는 상관없이 만들으라고 했으므로 결국 Person 테이블에만 존재하는 사람이거나, 두 테이블 모두 존재하는 .. 2021. 8. 31.
삼성 SDS SW검정시험 Professional 합격 후기 삼성 SDS 21년 하계 알고리즘 특강 Professional 합격 후기 처음 이 교육을 듣기 시작한 목적은 Professional 인증서를 받기 위한 마음은 없었고 알고리즘 공부를 더 깊게 하고픈 의도였다. 하지만 이렇게 인증서까지 받게 되어 큰 성취감을 느꼈다. 이 시험은 교육을 수료하기 위해서 모든 교육 수강생들이 꼭 응시를 해야한다. 시험은 1문제가 나왔고, 10개의 Test case 가 주어졌다. 이 Test case 들 뿐 아니라 공개되지 않은 여러개의 Hidden Test case 들도 통과를 하면 수료증 외에 프로 인증서를 받게 된다. 시험 시간은 총 4시간 이며, 시험 시작 2시간이 지난 후 부터 퇴실을 할 수 있었다. 사실, 1차 시험에서 한번에 통과하지는 못 했다. 문제가 정확히 기억.. 2021. 8. 30.
Leet) No.1179 [Reformat Department Table] Leetcode No.1179 [Reformat Department Table] 문제 Reformat Department Table - LeetCode Reformat Department Table - 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 설명 위와 같이 Department table 의 data를 id column 으로 그룹화 시키고, Jan_Revenue ~ Dec_Revenue Column 을 만들어야 한다. 각 id 별로 Result table .. 2021. 8. 30.
728x90