SQL 19

[MariaDB] 환경 구축 (생성, 삭제, 권한, 백업)

1. DATABASE 생성 1-1.Window Menu – MySql Client 진입. 1-2.DB 변경 >> USE MYSQL - MariaDB [(none)] 에서 MariaDB [(mysql)] 로 변경 됩니다. 1-3.DATABASE 생성 >> CREATE DATABASE [DATABASE명]; 1-4.DATABASE 조회 >> SHOW DATABASES - 앞에서 생성한 DATABASE 확인할 수 있습니다. 2. 계정 생성 2-1. 계정 생성 >> CREATE USER ‘[USER_NAME]‘@’[호스트]’ IDENTIFIED BY ‘[PASSWORD]’; - 입력한 USER 명으로 새로운 USER 가 생성됩니다. * 호스트에 ‘%’ 는 모든 이라는 의미이다. 2-2. 사용자 계정 조회 >> ..

SQL/RDBMS 2023.04.25

ORA-01722: 수치가 부적합합니다

해당 에러를 검색했을 때 대부분 글에서 데이터 타입이 일치하지 않는 데이터를 넣을 때 발생하는 에러라고 나옵니다. 예를 들어, NUMBER타입의 컬럼에 문자를 집어 넣었을 경우 입니다. 하지만 저의 경우에는 다른 문제가 있었습니다. 테이블의 제약 조건을 조회 해보니 데이터타입이 FLOAT인 칼럼의 제약조건이 아래와 같이 설정되어 있었습니다. COL1 IN ('1~9') NUMBER형태의 데이터 타입의 범위를 설정할 때에는 아래와 같이 설정해야합니다. COL1 BETWEEN 1 AND 9

SQL/RDBMS 2023.03.17

[mariaDB] 제약 조건(조회, 추가, 수정, 삭제)

조회 SELECT * from information_schema.table_constraints FROM TABLE_NAME = '{테이블명}' *위 쿼리를 실행했을 때 결과 그런데 이렇게 실행하면 모든 TYPE의 제약조건이 나오지만 CONSTRAINT_TYPE이 CHECK인 제약조건의 내용을 볼 수 없습니다. 내용을 확인하기 위해서는 아래의 쿼리문을 실행해야 합니다. SELECT * from INFORMATION_SCHEMA.CHECK_CONSTRAINTS WHERE TABLE_NAME = '{테이블명}' *위 쿼리를 실행했을 때 결과 여기서 CHECK_CLAUSE가 CHECK 제약조건의 내용입니다. 추가 ALTER TABLE {테이블명} ADD CONSTRAINT {제약조건명} {제약조건} --예시 ..

SQL/RDBMS 2023.03.17

[Oracle] 제약 조건 (조회, 추가, 수정, 삭제)

조회 SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = '{테이블명}' * 위 쿼리를 실행했을 때 결과 여기서 CONSTRAINT_NAME이 제약조건이름이고 SEARCH_CONDITION이 제약조건이다. 추가 ALTER TABLE {테이블명} ADD CONSTRAINT {제약조건명} {제약조건} * 제약조건 예시 CHECK(COL1 IN ('A','B','C')) "COL1" IS NOT NULL 컬럼 데이터타입이 number(float, decimal...)인 경우에는 IN (1~9)가 아니라 BETWEEN을 써야함. CHECK(COL1 BETWEEN 1.0 AND 9.0) *ORA-02293: ()을 검증할 수 없습니다 - 잘못된 제약을 확인합니다 참고로 추가,..

SQL/RDBMS 2023.03.16

java.sql.SQLSyntaxErrorException: ORA-00911: 문자가 부적합합니다

ORA-00911: 문자가 부적합합니다 다른 글을 검색해 봤을 때 쿼리문에 ;가 들어가서 에러가 나는 경우가 많다고 하는데 String sql = "" PreparedStatement pstmt = con.prepareStatement(sql); retVals = pstmt.executeUpdate(); pstmt.close(); INSERT INTO TABLENAME(`COL1`, `COL2`, `COL3`) VALUES ('col1data1', 'col2data1', 'col3data1'), ('col1data2' ,'col2data2', 'col3data2'), ('col1data3' ,'col2data3', 'col3data3') ON DUPLICATE KEY UPDATE `COL2`= VALUE..

SQL/RDBMS 2023.03.14

[MySQL/MARIADB, MSSQL, ORACLE] DB별 예약어나 특수문자가 포함된 컬럼명 표현, 네이밍 규칙

각 데이터베이스 관리 시스템에서는 예약어(reserved keyword)나 특수문자가 포함된 컬럼명을 사용할 수 있지만 , 해당 이름을 직접 참조하거나 쿼리하는 경우 문제가 발생할 수 있습니다. 따라서 DB마다 이러한 컬럼명을 특정기호로 감싸서 사용합니다. DB별 예약어나 특수문자가 포함된 컬럼 표현 방법 1.MySQL, MARIADB MySQL에서는 백틱(backtick) 기호(`)를 사용하여 컬럼명을 감싸줍니다. SELECT `version`, `left`, `right` FROM mytable; 따라서, "version" 컬럼명을 백틱으로 감싸는 것을 "백틱으로 묶는다" 혹은 "백틱으로 감싼다" 라고 표현합니다. 2. ORACLE Oracle에서는 큰따옴표(")를 사용하여 컬럼을 감쌀 수 있습니다...

SQL/RDBMS 2023.03.14

(MariaDB, MySQL)on duplicate key update(With bulk insert), insert ignore, replace into

bulk insert는 아래에서 포스팅함 bulk insert Bulk Insert는 쿼리 전후로 이루어지는 작업들을 줄여줘서 반복문으로 쿼리를 여러번 날리는 것보다 속도가 빠름. sql values에 값들을 배열로 넣어주기 INSERT INTO TABLENAME(COL1, COL2) VALUES (col11, col21).. sumni.tistory.com 1. ON DUPLICATE KEY UPDATE 데이터 삽입 시, PRIMERY KEY나 UNIQUE KEY가 중복되었을 경우 UPDATE, 중복된 키가 없을 경우 INSERT 해당 key에 업데이트 할 값을 직접 입력, values에 넣은값과 다른 값 지정해도 됨. INSERT INTO table(table.col1, table.col2, tabl..

SQL/RDBMS 2022.06.11