SQL 45

[mysql] Authentication plugin 'caching_sha2_password' cannot be loaded 오류 해결하기

로컬에 mysql db를 설치한 다음 Sequel Pro로 접속하려고 하니 Authentication plugin 'caching_sha2_password' cannot be loaded 오류가 발생했다. 원인 mysql 8.X 버전 부터 비밀번호의 암호화 방식이 달라졌다고 한다. 그런데 Sequel Pro는 아주 쓰기 좋은 훌륭한 제품이지만, 아직 새로운 종류의 사용자 로그인(SHA2 방식의 암호화)를 위한 개발이 되지 않았나보다. 해결 방법 Sequel Pro를 쓰기 위해서는 계정의 비밀번호를 mysql_native_password 방식의 비밀번호로 변경해준 후에 사용할 수 있다. ALTER USER '계정명'@'*' IDENTIFIED WITH mysql_native_password BY '새로운비..

SQL 2023.01.03

[ Mysql ] root 외 사용자 추가 외 모든 권한 부여

1. create user '계정이름'@'localhost' identified by '비밀번호';오류가 난다면 비밀번호의 맨 앞자리를 대문자로 해보면 된다. 비밀번호의 맨 앞자리를 대문자로 했는데도 오류가 발생한다면 다른 문제일 수 있으니 오류를 살펴보아야 한다. 2. grant all privileges on *.* to '계정'@'%' with grant option;권한 부여 3. flush privileges;부여한 권한이 제대로 작동되도록 업데이트를 한번 해준다. 위 순서대로 했는데 오류가 발생한다면? 또는 생성한 계정으로 외부에서 mysql 접속이 되지 않는다면 root 계정을 만든 다음에 새로운 계정을 다시 만들어 보도..

SQL 2023.01.03

[ mysql ] deadlock 해결 방안 중 한가지(SELECT ~ FOR UPDATE)

SELECT ~ FOR UPDATE SELECT ~ FOR UPDATE를 실행하면 특정 세션이 데이터에 대해 수정을 할 때까지 LOCK이 걸려 다른 세션이 데이터에 접근할 수 없다고 한다. 위 이미지를 참고하면 A 사용자가 SELECT ~ FOR UPDATE를 실행하여 잔여 좌석정보를 SELECT 했고 해당 ROW는 다른 세션들이 접근할 수 없는 LOCK 에 걸린다. 이 때, B가 SELECT로 접근하려 해도 A가 LOCK을 가지고 있기에 A가 LOCK을 풀어줄 때까지 대기상태에 빠진다. 이후 A가 잔여좌석 수를 UPDATE하면서 LOCK이 풀리고 B는 SELECT 및 UPDATE가 가능해진다. 아래 블로그에서 참고한 자료로 실무에서 작업 해결에 큰 도움을 받았다ㅠㅠ.... 저 쿼리 두 단어로...,, ..

SQL 2021.12.15

데이터 순서를 내가 원하는 특정 순서로 지정하는 방법

SELECT * FROM 테이블명 WHERE id IN (2, 19, 20) ORDER BY FIELD(id, 19, 20, 2); SELECT * FROM 테이블명 WHERE id IN (2, 19, 20) ORDER BY FIELD(id, 19, 20, 2) DESC; DESC 도 실행 가능하다. 위의 데이터 3개의 출력 순서를 반대로도 변경할 수가 있다. https://lightblog.tistory.com/153 [MySQL] 결과를 특정 순서로 정렬하기 ORDER BY FIELD() 다음과 같은 sandbox 테이블의 결과를 id 2, 1, 3 순서로 정렬하여 표기할 수 있을까? 가능하다. ORDER BY 자체는 오름차순ASC 과 내림차순DESC 만 가능하나, 뒤에 FIELD() 를 붙여 주면 ..

SQL 2021.11.26

[ mysql ] 쿼리 안에 서브쿼리

mysql 연습 데이터로 쿼리 작성해보는 사이트로 이동 위 링크로 이동해서 아래 쿼리를 입력해보자. 비상관 서브쿼리 연습 1 SELECT CategoryID, CategoryName, Description, ( SELECT ProductName FROM Products WHERE ProductID = 1 ) FROM Categories; 연습 2 SELECT * FROM Products WHERE Price < ( SELECT AVG(Price) FROM Products ); 연습 3 SELECT CategoryID, CategoryName, Description FROM Categories WHERE CategoryID = ( SELECT CategoryID FROM Products WHERE Prod..

SQL 2021.09.07

[ mysql ] 시간/날짜 관련 및 기타 함수들

mysql 연습 데이터로 쿼리 작성해보는 사이트로 이동 위 링크로 이동해서 아래 쿼리를 입력해보자. CURRENT_DATE, CURDATE 현재 날짜 반환 CURRENT_TIME, CURTIME 현재 시간 반환 CURRENT_TIMESTAMP, NOW 현재 시간과 날짜 반환 DATE 문자열에 따라 날짜 생성 TIME 문자열에 따라 시간 생성 YEAR 주어진 DATETIME 값의 년도 반환 MONTHNAME 주어진 DATETIME 값의 월(영문) 반환 MONTH 주어진 DATETIME 값의 월 반환 WEEKDAY 주어진 DATETIME 값의 요일값 반환(월요일:0, 화요일:1, …) DAYNAME 주어진 DATETIME 값의 요일명 반환(영문) DAYOFMONTH, DAY 주어진 DATETIME 값의 날짜..

SQL 2021.09.05

[ mysql ] 숫자와 문자열을 다루는 함수(TRIM, LTRIM, RTRIM, LPAD, RPAD, INSTR)

mysql 연습 데이터로 쿼리 작성해보는 사이트로 이동 위 링크로 이동해서 아래 쿼리를 입력해보자. TRIM 양쪽 공백 제거 LTRIM 왼쪽 공백 제거 RTRIM 오른쪽 공백 제거 LPAD(S, N, P) S가 N글자가 될 때까지 P를 이어붙임 RPAD(S, N, P) S가 N글자가 될 때까지 P를 이어붙임 REPLACE(S, A, B) S중 A를 B로 변경 INSTR(S, s) S중 s의 첫 위치 반환, 없을 시 0을 반환한다. CAST(A, T) A를 T 자료형으로 변환 예시 1 SELECT CONCAT('|', ' HELLO ', '|'), CONCAT('|', TRIM(' HELLO '), '|'), CONCAT('|', LTRIM(' HELLO '), '|'), CONCAT('|', RTRIM(..

SQL 2021.09.02

[ mysql ] 숫자와 문자열을 다루는 함수(SUBSTR, SUBSTRING, LEFT, RIGHT, LENGTH, CHAR_LENGTH, CHARACTER_LENGTH)

mysql 연습 데이터로 쿼리 작성해보는 사이트로 이동 위 링크로 이동해서 아래 쿼리를 입력해보자. SUBSTR, SUBSTRING 주어진 값에 따라 문자열 자름 LEFT 왼쪽부터 N글자를 추출 RIGHT 오른쪽부터 N글자를 추출 LENGTH 문자열의 바이트 길이(영문, 한글 글자당 바이트 다름) CHAR_LENGTH, CHARACTER_LENGTH 문자열의 문자 길이 SELECT SUBSTR('ABCDEFG', 3), SUBSTR('ABCDEFG', 3, 2), SUBSTR('ABCDEFG', -4), SUBSTR('ABCDEFG', -4, 2); 출력 : CDEFG, CD, DEFG, DE 의미 : sql은 0이 아닌 index가 1부터 시작한다. 양수의 경우 1부터 3번째자리의 문자열부터 잘라내겠다..

SQL 2021.09.02

[ mysql ] 숫자와 문자열을 다루는 함수(UPPER, LOWER, CONCAT(...), CONCAT-WS(S, ...))

mysql 연습 데이터로 쿼리 작성해보는 사이트로 이동 위 링크로 이동해서 아래 쿼리를 입력해보자. UCASE, UPPER 모두 대문자로 LCASE, LOWER 모두 소문자로 CONCAT(....) 괄호 안의 내용 이어 붙임 CONCAT_WS(S, ...) 괄호 안의 내용을 S로 이어 붙이고 내용은 , 를 사용해서 이어 붙일 수 있음 UPPER, LOWER SELECT UPPER('abcDEF'), LOWER('abcDEF'); 출력 : ABCDEF, abcdef SELECT UCASE(CustomerName), LCASE(CustomerName) FROM Customers; 출력 : 전부 대문자, 전부 소문자 CONCAT, CONCAT_WS SELECT CONCAT('hello', ' ', 'THIS ..

SQL 2021.09.02

[ mysql ] 숫자와 문자열을 다루는 함수(POW(A, B)/POWER(A,B)/SQRT, TRUNCATE(N, n))

mysql 연습 데이터로 쿼리 작성해보는 사이트로 이동 위 링크로 이동해서 아래 쿼리를 입력해보자. POW(A, B) / POWER(A, B) A를 B만큼 제곱 SQRT 제곱근 TRUNCATE(N, n) N을 n자리까지 선택 예시 1 SELECT POW(2, 3), POWER(5, 2), SQRT(16); 예시 2 SELECT Price, POW(Price, 1/2) FROM Products WHERE SQRT(Price) < 4; TRUNCATE(N, n) SELECT TRUNCATE(1234.5678, 1), TRUNCATE(1234.5678, 2), TRUNCATE(1234.5678, 3), TRUNCATE(1234.5678, -1), TRUNCATE(1234.5678, -2), TRUNCATE(1..

SQL 2021.09.01

[ mysql ] 숫자와 문자열을 다루는 함수(MAX, MIN, COUNT, SUM, AVG 그룹 함수)

mysql 연습 데이터로 쿼리 작성해보는 사이트로 이동 위 링크로 이동해서 아래 쿼리를 입력해보자. MAX가장 큰 값MIN가장 작은 값COUNT객수 ( NULL 값 제외)SUM총합AVG평균 값 주의 사항 : GREATEST, LEAST 와 MAX, MIN을 헷갈리지 않도록 주의하자. SELECT MAX(Quantity), MIN(Quantity), COUNT(Quantity), SUM(Quantity), AVG(Quantity) FROM OrderDetails WHERE OrderDetailID BETWEEN 20 AND 30;

SQL 2021.09.01

[ mysql ] 숫자와 문자열을 다루는 함수(ABS, GREATEST, LEAST)

mysql 연습 데이터로 쿼리 작성해보는 사이트로 이동 위 링크로 이동해서 아래 쿼리를 입력해보자. ABS() 절대값 부호와 관계없이 -, + 이던 양,음에 관계 없이 그냥 플러스로 바꿔준다고 생각하면 된다. GREATEST() (괄호 안에서) 가장 큰 값 LEAST() (괄호안에서) 가장 작은 값 SELECT ABS(1), ABS(-1), ABS(3 - 10); 출력 : 1, 1, 7 SELECT * FROM OrderDetails WHERE ABS( Quantity - 10 ) < 5; 의미 : Quatity의 10보다 +5, -5 의 값을 가진 데이터들을 출력해준다. SELECT GREATEST ( 10, 3, 234 ); 출력 : 234 의미 : 괄호 안에서 가장 큰 숫자를 출력한다. SELECT..

SQL 2021.09.01

[ mysql ] mysql에서 사용하는 연산자 총 정리

연산자 의미 +, -, *, / 각각 더하기, 빼기, 곱하기, 나누기 %, MOD 나머지 IS 양쪽이 모두 TRUE 또는 FALSE IS NOT 한쪽은 TRUE, 한쪽은 FALSE AND, && 양쪽이 모두 TRUE 일 때만 TRUE OR, || 한쪽은 TRUE 이면 TRUE = 양쪽 값이 같음 !=, 양쪽 값이 다름 >, =, MySQL :: MySQL 8.0 Reference Manual :: 12.4 Operators MySQL 8.0 Reference Manual / Functions and Operators / Operators Table 12.3 Operators Name Description Introduced Deprecated & Bitwise AND > Greater than opera..

SQL 2021.09.01

[ mysql ] LIKE 연산자

SELECT 'hello' LIKE 'he%', -- he로 시작하는 단어인지 'hello' LIKE 'hel%', -- hel로 시작하는 단어인지 'hello' LIKE 'H%O', -- h로 시작하고 o로 끝나는 단어인지 'hello' LIKE '%l%', -- 단어 중간에 l 이 존재하는 단어인지 'hello' LIKE '%HELLO%', -- hello 앞, 뒤에 다른 문자가 있을 수 있는 'hello' LIKE '%H', -- h로 끝나는 단어인지 'hello' LIKE 'l%'; -- l로 시작하는 단어인지 출력 : 1, 1, 1, 1, 1, 0, 0 SELECT * FROM Customers WHERE CustomerName LIKE 'b%'; 의미 : b로 시작하는 CustomerName들..

SQL 2021.09.01
728x90
반응형
LIST