본문 바로가기

Database

(151)
프로그래머스 SQL 코딩 테스트 select 문제 풀이 프로그래머스 SQL 코딩 테스트 select 문제 풀이 SQL 연습하신다고 프로그래머스 SQL 풀어보시는 분들이 많이 계시네요. 오늘부터 하나씩 풀이를 써볼까 합니다. 자자, 그럼 레고레고~!!! select 모든 레코드 조회하기 첫번째는 모든레코드를 조회하는 문제네요. 우선 테이블명은 ANIMAL_INS 입니다. 동물 보호소에 들어온 동물의 정보를 담은 테이블 이구요. 문제 설명 바로아래 나오는곳 보면 컬럼 목록이 있죠. 옆에 type은 해당 컬럼의 데이터 타입 입니다. 여기서는 varchar 와 datetime만 사용을 하였네요. nullable 부분은 해당 컬럼에 값이 없음을 뜻하는 NULL 데이터가 들어갈수 있는지 여부를 말하는겁니다. NAME 이라는 컬럼만 NULL이 들어갈 수 있습니다. 나머지..
mysql error 1267 (HY000): Illegal mix of collations 무조건 해결방법 mysql error 1267 (HY000): Illegal mix of collations 무조건 해결방법 안녕하세요. 갑자기 다음과 같은 에러가 발생을 합니다. [HY000][1267] (conn=10) Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '=' 위 에러는 SQL에서 조인을 하거나 if, case 문들으로 값을 비교할때, 양쪽 테이블의 collation이 달라서 발생하는 에러 입니다. 위 에러를 조치하기 위해서는 크게 두가지 방법이 있습니다. 하나씩, 하나씩 알아보도록 하겠습니다. 한쪽 테이블의 collation 변경 어느 한쪽 테이블의 collatio..
[Mysql] Cursor declaration after handler declaration 에러 해결 방법 [Mysql] Cursor declaration after handler declaration 에러 해결 방법 mysql에서 열심히 프로시저를 개발하는 도중 만나게된 에러 입니다. 그리고 그 에러 해결방법을 남겨 둡니다. 제가 이번에 mysql 프로시저 개발을 하면서 필요한 여러 변수들을 선언하고, 커서를 선언하고, sql exception과 fetch를 위해서 HANDLER를 선언을 했습니다. 여기서 위 세가지 선언들은 모두 declare 명령을 통해서 정의가 되죠. 그렇게 모두 잘 선언을 하고, 프로그램을 작성 한뒤에 프로시저를 생성을 하는데 아래와 같은 메시지가 등판하게 됩니다. Cursor declaration after handler declaration 에러가 발생 한거죠. 그래서 바로 구글 ..
맥북 docker 에 mssql 설치 하기 맥북 docker 에 mssql 설치 하기 안녕하세요. 맥북에 MSSQL을 설치 할 일이 있어서, 급하게 docker설치하고, mssql을 셋팅 해보도록 하겠습니다. 자, 그럼 바로 시작 해보겠습니다. docker 설치하기 자, 아래 링크로 가셔서 docker를 설치 하시면 됩니다. https://www.docker.com/products/docker-desktop 위와 같은 화면에서 저와 같은 Intel chip 이시면 왼쪽꺼, 최근에 M1 구매 하신거면 오른쪽 버튼 눌러서 진행하시면 되겠습니다. 저는 그럼 바로 왼쪽껄로! "열기"를 눌러서 진행을 하도록 하겠습니다. Move~ Move~ 아마, 권한 달라고 하고, 실행 할꺼냐 묻고 그럴겁니다. 다 해준다 살살 다뤄줍니다. 그렇게 몇번 클릭 하시고 나면..
[oracle] sqlplus로 select 한 결과 csv로 내려받는 방법 spool 사용법 [oracle] sqlplus로 select 한 결과 csv로 내려받는 방법 spool 사용법 안녕하세요. 오늘은 sqlplus로 oracle에서 select 한 결과를 csv로 저장하는 방법에 대해서 간단하게 설명을 드리고자 합니다. 물론 datagrip이나 다른 sql 툴이 있다면 쉽게 하실 수 있겠죠. 하지만, crontab으로 등록을 해야 한다던지 하면 cmd에서 해결이 되어야 합니다. 우선, cmd에서 sql 스크립트를 생성 하셔야 합니다. 그리고 나서 해당 스크립트를 실행하여 csv로 내려보도록 할께요. 자, 아래와 같이 cmd에서 sql 파일을 하나 만듭니다. vi csv_export.sql csv_export 라는 sql 파일을 하나 생성하는거죠. 그럼 다음 화면과 같이 화면이 열리게 됩니..
[mysql]Errcode: 28 No space left on device 에러 메시지 해결 방법 [mysql]Errcode: 28 No space left on device 에러 메시지 해결 방법 안녕하세요. 위와같은 에러가 발생하는 원인은, 크게 mysql에서 쓰는 temp 디렉토리가 가득찼을때 입니다. 대부분, mysql이 설치되어 있는 홈디렉토리는 크게 공간을 할당해서 문제가 없는데 temp 디렉토리는 공간이 작은 disk에 붙여둬서 그런경우가 생깁니다. 먼저, 어디에 temp 디렉토리가 설정 되어 있는지 확인 해보세요. show variables like 'tmpdir'; 위 쿼리로 했을때, 나오는 경로가 temp 디렉토리 경로 입니다. 여기가 mysql이나 mariadb의 홈디렉토 내부가 아니라면 홈디렉토리 내부 경로에 우선 폴더를 만들고, 권한을 부여 합니다. 그리고, my.cnf를 수정..
mysql 테이블 및 컬럼 케릭터셋 변경 하기 mysql 테이블 및 컬럼 케릭터셋 변경 하기 mysql이나 mariadb를 사용하면서 간혹 테이블이나 컬럼의 케릭터셋을 변경해야 하는 경우가 생깁니다. 물론 데이터베이스 전체의 케릭터셋을 변경 할 수도 있겠지만, 간혹 이렇게 테이블과 컬럼 단위로 변경 할 사유가 생겼을때 아래와 같이 간단하게 조치를 할 수 있습니다. ◎ SQL 테이블 단위 변경 alter table 테이블명 convert to character set utf8; utf8로 테이블 전체의 케릭터셋을 변경 한다는 의미 입니다. 컬럼 단위 변경 ALTER TABLE 테이블명 MODIFY COLUMN 컬럼 VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci; 테이블내 특정 컬럼의 케릭터셋을 변경..
mysql mariadb update join SQL 문법 쉬운 설명 mysql mariadb update join SQL 문법 쉬운 설명 mysql이나 mariadb에서 update 하실때 join해서 update 하는 방법에 대해서 쉽고 간단하게 설명을 드리도록 하겠습니다. 기존에 오라클이나 PG등을 사용하신분들은 mysql/mariadb에서 하시던데로 update join을 하면 잘 안되시는걸 경험하셨을겁니다. 간단하게, 쉽게 설명을 드리도록 할께요. Mysql/Mariadb update join 우선 아래와 같이 실습을 위해 두개의 테이블을 생성 했습니다. 테이블 데이터를 먼저 확인 해보겠습니다. 위 테이블은 학생테이블 입니다. up_students 테이블 이구요. 지금 그림과 같이 major_title과 major_title_prfs_name 컬럼이 null로 채..