728x90

SQL 15

[SQL] DDL, DML, DCL, TCL 구별

SQL 및 DB를 하는데 있어서 가장 기본적인 DDL DML DCL TCLㅣ을 알아보기 종류 명령어 설명 데이터 조작어 (DML : Data Maniputation) SELECT 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어 INSERT UPDATE DELETE 데이터베이스의 테이블에 있는 데이터의 변형을 할 수 있는 명령어 (데이터 삽입, 수정, 삭제 등) 데이터 정의어 (DDL : Data Definition Language) CREATE ALTER DROP TRUNCATE 테이블과 같은 데이터 구조를 정의하는데 사용하는 명령어 (생성, 변경, 삭제 등) 데이터 제어어 (DCL : Data Control Language) GRANT REVOKE 데이터베이스에 접근하고 객체들을 사용 ..

Database 2021.10.15

[MySQL] Varchar 형태 Date로 변환

데이터베이스를 이용하다가 날짜의 형태를 String으로 저장한적이 있었다. 범위가 길어지다보니 String보다 Date 타입으로 변환해서 사용하는게 좋을것 같아서 Varchar형에서 Date로 변환하는법을 알아보고자 한다. 생각보다 아주 간단하다. UPDATE table_name SET table_col = STR_TO_DATE(table_col, '%Y-%m-%d') 형태로 해결하면 된다. STR_TO_DATE를 사용하면 된다는 말씀! 여기서 date 필드값을 다르게 변경해줘야 할때가 있는데 예 시 적 용 2021-09-21 %Y-%m-%d 21-9-21 %y-%m-%d Sep 21 2021 %M %d, %Y 해당 테이블을 참고해서 적용하면 된다. 보통은 %Y-%m-%d를 많이 사용하는듯!

Database 2021.09.29

[MyBatis] 동적 쿼리 LIKE문 적용하기

MyBatis로 동적 쿼리를 적용해보기, 검색해보니 DB마다 쿼리가 조금씩 다르다고함. LIKE문은 보통 Select * from test where num like 'ABC%' 식으로 특정문자를 가지고 있는 형태를 추출하고자 사용하는 경우가 많음. 일단 MyBatis에서 종류별에 대해 차이를 잠깐 보자면 1) MySQL or MariaDB select * from table_name where column_name like cancat('%', #{keyword}, '%') 2) Oracle select * from table_name where column_name like '%'||#keyword#||'%' 식으로 적용 할 수 있다고한다. 그외 MS-SQL나 PostgreSQL에서도 방법은 다를것이..

[DB] mysql Access dinied for user "@" (using password:YES)

DB를 Connect하는 경우 나타날 수있는 Error. 로그인이 불가하다는 내용인데, 검색해보니 주요 문제는 다음과 같다고한다. 1. 외부접속을 열어주지 않은 경우 2. 비밀번호를 설정하지 않은 경우 3. 비밀번호를 제대로 설정하지 않은 경우 비밀번호 같은 경우에는 초기에 대부분은 설정을 해주기 때문에 보통은 외부접속을 허용하지 않아서 발생되는 오류인것로 생각된다. 외부접속을 허용해주기 위해선 grant all privileges on *.* to '계정명'@'%'; 를 설정해주면 된다. % 의 경우에는 들어오는 모든 아이피를 수신하는것이기때문에 특정 아이피를 지정하기 위해선 이부분을 입력해주면 된다.

Database 2021.07.27

[MariaDB] 시퀀스 초기화 및 재정렬

개발을 하다보면 DB에 연동을 하게되고, 흔히 말하는 CRUD를 구현하게 된다. 예를들어 게시판 기능을 만들경우 게시판 번호의 기능을 추가하면 저절로 Count가 되는것이 있는법. 그래서 Test 중에 이것저것 넣다보면 게시판 번호의 시퀀스의 값이 점점 쌓이고 쌓여 꽤나 많게된다. 그동안 쌓여온것을 모두 DELETE해도 1부터 시작되는것이 아니라 지원값의 그 다음 숫자부터 적용이 되서 그래서 간간히 SQL를 통해 정리해주는 작업을 한 번정도 하는것 같아서 간단히 메모. SET @CNT = 0; UPDATE 테이블명 SET 테이블명.컬럼이름 = @CNT:=CNT+1; 이렇게하면 MariaDB & MySQL에 적용된 AUTO_INCREMENT가 적용된 컬럼값을 재정렬 할 수 있게된다. 데이트를 정리하기전에 ..

Database 2021.05.28

[PostgreSQL] 좌표값 변환하는 방법

PostgreSQL을 사용하던중 새롭게 알게된 사실을 적어보고자한다. 좌표값(geom)에 관한 내용이다. 1) geom을 읽는데, 암호화가 되어있다. geom에 앞에 텍스트만 붙여주면 간단하게 해결 할 수 있다. 2) ST_AsText(geom) 사용하기 select ST_AsText(geom) from "테이블명"; 그럼 좌표값이 MultilineString으로 나오는것을 확인 할 수 있다. 3) ST_AsGeoJSON 사용하기 select ST_AsGEOJSON(geom) from "테이블명"; JSON 타입으로 뽑아내고 싶을때는 ST_AsGEOJSON을 사용해주면 된다. 4) 좌표값을 변환해주기 select ST_AsGEOJSON(ST_Transform(geom, 변환할 좌표계) from "테이블명..

Database 2021.04.28

[Java] JDBC를 이용하는 순서

1) DB 연결을 위한 Connection을 가져온다 2) SQL을 담은 Statement 혹은 PreparedStatement를 만든다. 3) 만들어진 Statement를 실행한다. 4) 조회의 경우 SQL 쿼리의 실행 결과를 ResultSet으로 받아서 정보를 저장할 오브젝트에 옮겨준다. 5) 작업 중에 생성된 Connection, Statement, ResultSet 같은 리소스는 작업을 마친 후 반드시 닫아준다. 6) JDBC API가 만들어내는 예외(exception)을 잡아서 직접 처리하거나, 메소드에 throws를 선언해서 예외가 발생하면 메소드 밖으로 던지게 한다. 예외는 일단 밖으로 던져버리는게 좋은것 같다!

JAVA 2021.02.16

[MariaDB] Data too long for column 에러

csv파일을 MariaDB에 넣으려고하는데 오류가 생겼다.. 1406, "Data too long for column '컬럼명' at row 1") 그래..대략 길이가 길어서 안되는가보다 싶어서 varchar의 값을 늘려줬는데 그래도 안되더라 오잉 뭐지? 검색을 해보니 MariaDB 혹은 MySQL의 환경설정값의 문제라고 했다. -- 먼저 현재 나의 DB를 확인해볼 필요가 있었다.-- MariaDB [(none)]> select @@global.sql_mode; +-------------------------------------------------------------------------------------------+ | @@global.sql_mode | +--------------------..

오류 모음집 2021.01.22
728x90