본문 바로가기
[Mysql] 우분투 설치, 유저 생성 및 권한 부여 1. mysql-server 설치 >sudo apt-get update //apt-get 업데이트 >sudo apt-get install mysql-server //mysql-server 설치 2. /etc/mysql/ 밑의 conf 에서 binding ip 0.0.0.1 로 수정하여 외부에서도 접속 가능토록 수정 3. 실행 및 종료 >sudo /etc/init.d/mysql restart //재시작 >sudo systemctl start mysql //시작 >sudo systemctl enable mysql //서버 재시작시 mysql 자동 시작되도록 등록) >sudo systemctl stop mysql 4. 유저 관리 및 DB 권한 주기 3-1) 데이터베이스 생성 >mysql -u root -p /.. 2020. 1. 18.
[MySQL] 인덱스(INDEX) 관련 정리 본 포스팅은 '기억보단 기록'을 이라는 타이틀로 유명한 'jojoldu' 님의 인덱스관련 포스팅을 공부차원에서 단순 요약한 포스팅에 불과하므로, 보다 정확한 정보 습득을 원하시는 분들은 필히 아래 링크로 이동 하시길 바랍니다. https://jojoldu.tistory.com/243 [인덱스 기준] 1. 카디널리티가 높은 --> 낮은 칼럼 순서로 인덱스를 잡아야 좋다. 카디널리티가 높다 : 중복수치가 낮다 ex) 주민등록번호 카디널리티가 낮다 : 중복수치가 높다 ex) 이름 2. 인덱스를 잡을 때 키의 길이는 짧을 수록 좋다. InnoDB(MySQL)에서 디스크에 데이터를 저장하는 가장 기본단위를 페이지라 하며, 인덱스 역시 페이지 단위로 관리된다. 인덱스가 저장되는 페이지는 16KB 크기로 고정되어 있.. 2020. 1. 11.
JOIN 에서 WHERE 와 ON 의 차이, 그리고 OUTER JOIN [ON vs WHERE] ON : JOIN 을 하기 전 필터링을 한다 (=ON 조건으로 필터링이 된 레코들간 JOIN이 이뤄진다) WHERE : JOIN 을 한 후 필터링을 한다 (=JOIN을 한 결과에서 WHERE 조건절로 필터링이 이뤄진다) [INNER JOIN 에서의 ON vs WHERE] 1. INNER JOIN + ON 조건절 + ON 조건절 1 2 3 4 5 SELECT * FROM a INNER JOIN b ON a.key = b.key AND a.key2 = b.key2 cs 2. EQUI JOIN + WHERE 조건절 1 2 3 4 SELECT * FROM a AS a , b AS b WHERE a.key = b.key AND a.key2 = b.key2 cs 3. INNER JOIN +.. 2019. 11. 14.
SYSDATE vs NOW (SYSDATE 와 NOW 의 차이) SYSDATE() : SYSDATE() 함수가 호출된 시각 NOW() : NOW() 가 포함된 쿼리(구문(statement))가 호출된 시각 [Ex] 1 2 3 4 5 6 7 SELECT SYSDATE(), SLEEP(3) AS 'sleep', SYSDATE(), NOW(), SLEEP(3) AS 'sleep', NOW(); cs [결과] [쿼리 한 줄씩 해석] SELECT SYSDATE() 함수 호출될 때의 시각 (6:52:28) SLEEP(3) 3초간 Thread sleep (6:52:31) SYSDATE() 함수 호출될 때의 시각 (6:52:31) NOW() 쿼리(구문)가 실행될 때의 시각(6:52:28) SLEEP(3) 3초간 Thread sleep (6:52:34) NOW() 쿼리(구문)가 실행.. 2019. 11. 2.
Mysql hierarchy sql 계층구조 쿼리 : 설계 및 쿼리작성(Multi selectbox) Mysql hierarchy sql 계층구조 쿼리 : 설계 및 쿼리작성(Multi selectbox) 고객들이 열람할 가이드 정보가 있고, 가이드 정보의 카테고리를 N depth 로 분류(멀티 셀렉트박스 사용)하여 조회할 수 있게 하여 다음과 같은 화면을 만들어 보자. 1. '전체' 옵션의 유무 case 1 멀티 셀렉트박스에 '전체'라는 옵션이 없는 경우 : 마지막 셀렉트박스의 value(node_id)를 기준으로 가이드를 조회 case 2 멀티 셀렉트박스에 '전체'라는 옵션이 존재하는 경우 : '전체'가 선택된 마지막 셀렉트박스 직전의 value(node_id)를 기준으로 모든 자손 node_id를 찾아 조회해야한다. 예를 들어, case 1 ex) 고객지원 > 고객지원sub > 고객지원sub의sub .. 2019. 8. 21.
[Mysql] 시간 계산 : DATE_ADD, DATE_SUB 1. 더하기 DATE_ADD(date, INTERVAL expr type) DATE_ADD(날짜, INTERVAL 시간 시간타입) ex) DATE_ADD(now(), INTERVAL 1 HOUR) : 현재 시각에 1시간 더하기 DATE_ADD(now(), INTERVAL -10 MINUTE) : 현재 시각에 10분 빼기 DATE_ADD(now(), INTERVAL 100 SECOND) : 현재 시각에 100초 더하기 1 2 3 4 SELECT seq FROM hst_info WHERE 1=1 AND JOIN_DATE 2019. 8. 21.
SELECT + INSERT (mysql + mybatis) SELECT 한 결과를 INSERT/UPDATE 하기 별도의 sql id 로 select, insert 쿼리를 각각 분리하여 선언하고 select 한 값을 서버에서 다시 insert sql 의 매개변수로 던져주어 DB에 insert 할 경우 WAS서버와 DB 서버간 DB connection 이 두 번 발생 하므로, 다음과 같은 방법을 이용하자. 1. mysql 의 select insert 문법 사용 ex1) 1 2 INSERT INTO sampleTable (col1, col2, col3) SELECT #{val1}, #{val2}, #{val3} cs ex2) 1 2 INSERT INTO sampleTable(col1, col2, col3) SELECT #{val1}, #{val2}, MAX(col3).. 2019. 6. 12.
[Mysql/ORACLE] 여러 행을 한 줄로 표현하기(GROUP_CONCAT) n개의 row 로 결과가 출력되는 쿼리를 한 줄의 row에 표현하고 싶은 경우, GROUP_CONCAT을 사용한다. * SELECT GROUP_CONCAT('칼럼명' SEPARATOR '구분문자') FROM 테이블명 예를 들어, 쿼리 : 1 2 SELECT user_id AS result FROM user_info; cs 결과 : result user1 user2 user3 n개의 로우가 출력되는 쿼리에 GROUP_CONCAT 사용시, 쿼리: 1 2 SELECT GROUP_CONCAT(user_id SEPARATOR '^') AS result FROM user_info; Colored by Color Scripter cs 결과 : result user1^user2^user3 위처럼 하나의 row에 구분자.. 2019. 5. 27.
mysql GROUP BY (only full group by) MYSQL GROUP BY(incompatible with sql_mode=only full group by)에 대해 알아보자 로컬 및 개발 환경에서 멀쩡히 돌아가던 쿼리가 테스트 서버에 올리고 나니 다음과 같은 Exception을 뱉었다. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column '칼럼명' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_fu.. 2019. 3. 11.
데이터 형식 바꾸기 : DATE_FORMAT(mysql), TO_DATE(Oracle), CONVERT(sybase) MYSQL에서 데이터 형식 바꾸기(DATE_FORMAT) oracle , sybase , mysql 전부 데이터 형식 바꾸는 표현식이 전부 다르다.. 1. mysql (출처 : https://www.w3schools.com/sql/func_mysql_date_format.asp) SELECT DATE_FORMAT(NOW(), '%y/%m/%d') return : 18/12/10 SELECT DATE_FORMAT(NOW(), '%Y/%m/%d') return : 2018/12/10 %Y : 4자리 년도 %y : 2자리 년도 %H : 00~23 %h : 00~12 %Y%m%d%H%i%s : yyyyMMddHH24miss %y%m%d%h%i%s : yyMMddHHmiss 2. ORACLE SELECT TO_D.. 2018. 12. 10.