반응형

IT/DBMS 58

[MySQL/MariaDB]'테이블명' doesn't exist

목차 테이블이 있는데 테이블이 없다고 나오는 경우 여러이유가 있을 수 있지만 대소문자 구분하는지 확인해 볼 필요가 있음 윈도우는 기본적으로 대소문자 구분이 없이 mariadb가 설치 되지만 리눅스는 대소문자 구분해서 설치하는 경우가 있음 mysql 계정으로 접속 후 아래의 쿼리를 보낸 후 값을 확인해야 함 show variables like 'lower_case_table_names'; 쿼리 질의 값이 0인 경우 대소문자를 구분, 1인 경우 대소문자 구분안하는 걸 의미 만일 0으로 되어 있으면 1로 변경 vi로 /etc/my.cnf을 열어서 [mysqld]안에 lower_case_table_names = 1를 넣어줌(경로는 다를 수 있음) 그 후 mariadb or mysql 서비스 재시작

IT/DBMS 2022.11.23

[MySQL/MariaDB] 테이블/테이블 목록 조회

목차 Mysql/MariaDB 테이블 조회 information_schema DB를 활용(절대 information_schema의 정보를 수정하면 안됨) Mysql 혹은 MariaDB의 메타데이터 정보를 담고 있는 information_schema를 활용해서 다양하게 사용 가능(빈 테이블 조회 등) -- 빈 테이블 조회 SELECT TABLE_NAME AS 테이블명, table_comment AS 코멘트, table_rows AS 행 FROM information_schema.tables WHERE table_schema = '스키마명'AND table_rows

IT/DBMS 2022.11.23

[MySQL/MariaDB] Column 'xx' in where clause is ambiguous 에러

목차 Column 'xx' in where clause is ambiguous 에러 SQL에서 테이블 2개를 조인 했는데 아래처럼 사용해서 그렇다.(아래는 예시 SQL임) SELECT m.mem_seq , tg.tag_type , tg.tag_name FROM member m LEFT OUTER JOIN member_tag_mapping mtm ON m.mem_seq = mtm.mem_seq LEFT OUTER JOIN tag tg ON mtm.tag_seq = tg.tag_seq where mem_seq = 1244 member테이블이 다른 테이블 조인을 위해 별칭을 줬는데 WHERE절의 mem_seq는 별칭을 통해 접근한 필드가 아니라서 그렇다. 아래처럼 m.mem_seq라고 해야 정상적으로 조회가 ..

IT/DBMS 2022.11.22

[MySQL/MariaDB] merge(값이 있으면 update, 아니면 insert)(feat. ON DUPLICATE KEY UPDATE...)

목차 MySQL INSERT INTO...ON DUPLICATE KEY UPDATE... 😃 mysql에도 Oracle의 merge into와 같은 기능이 있다는 걸 알게되어 미래의 내가 보기위해 기록함 테스트를 위해 테이블 하나 생성 CREATE TABLE `test_220714` ( `id` bigint(20) NOT NULL, `name` varchar(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 테스트 데이터를 2개 정도 입력 INSERT INTO test_220714(id, name)VALUES(1, 'ironMan'); INSERT INTO test_220714(id, name)VALUES(2, 'th..

IT/DBMS 2022.11.22

[MySQL/MariaDB] GROUP_CONCAT() 간단 사용법(feat. 문자열 붙이기)

목차 GROUP_CONCAT() 간단 사용법 😃 역시나 미래의 내가 보기위해 기록함 업무를 하다보면 특정 필드값을 아래처럼 가로로 붙여서 보여줘야 되는 경우도 있다. 데이터를 클라이언트에 반환 시 쿼리 2번 날릴 걸 1번 날리는게 좋기 때문에 아래처럼 붙이는 방법도 있다. 예를 들어 SNS 서비스에서 최종적으로 반환해야되는 데이터가 회원 정보 + 회원 등록한 해시태그 목록이라고 가정을 해보면 대략 아래와 같은 데이터가 반환되야 될 것이다. 회원일련번호, 회원아이디, 회원이름, 회원이메일, 기타 회원 정보, 그리고 해시태그 DB 테이블 구조 😗 DB 테이블은 아래와 같다. 동일한 테스트를 할 수 있도록 스크립트도 첨부한다. script(DDL) 더보기 -- 회원 테이블 CREATE TABLE `member..

IT/DBMS 2022.11.22

[Oracle]GROUP BY + 그룹함수(SUM, COUNT 등)

목차 Oracle Group by/그룹함수 쉽게 생각하면 된다. GROUP BY 다음에 오는 컬럼으로 먼저 그룹핑을 한 다음 그룹함수를 실행 SELECT deptno, job, AVG(NVL(sal, 0)) "AVG_SAL" FROM emp GROUP BY deptno, job ORDER BY deptno,job; 위의 쿼리는 emp테이블에서 부서번호(deptno)로 먼저 그룹핑, 그 다음 직업(job)으로 그룹핑을 한 후 SELECT절에 있는 그룹함수인 AVG() 함수를 실행한 결과를 나타낸다. 주의사항이 있는데 GROUP BY사용 시 SELECT절의 그룹함수를 제외한 컬럼은 반드시 GROUP BY 절에 나온 컬럼을 명시해야 한다. 안할 경우 아래처럼 에러 발생 HAVING 절 일반적으로 WHERE절에..

IT/DBMS 2022.11.19

[Oracle] ORA-12547 TNS lost contact/UDE-12547 error..

목차 ORA-12547 TNS lost contact 상황 : oracle 계정이 아닌 다른 계정으로 oracle에 접속해서 expdp를 이용해서 dump를 실행 중임 어쩌다가 실수로 아래처럼 오라클 하위 폴더의 계정을 other의 권한을 rwx 가능하게 변경 했더니 sudo chmod -R 757 /oracle 위처럼 표시가 되었었다. 실수로 잘 돌아가는 덤프를 잘못 건드리는 바람에..(다시는 이런 실수 하지 않으리) 당연히 오라클 폴더의 권한 문제라는 강한 확신을 가지고 구글링을 했음 아래 블로그에서 도움을 얻었다. $ORACLE_HOME(/oracle/app/product/12.2.0.1)/bin 아래에 oracle 폴더의 권한을 6751로 변경 했음 sudo chmod 6751 oracle 그 후..

IT/DBMS 2022.11.19
반응형