내 경우는 웹 서버를 올릴 Public EC2, RDS가 존재하는 구조이다. 현재 RDS는 추후에 생성할 Private EC2랑만 연결되게끔 하기 위해 외부 접근이 불가능하게 설계되어 있어 RDS에 접근할 때마다 Public EC2에 접근해야했다. 그래서 PC에서 바로 RDS에 접근에 데이터를 보기 위해 터널링 하게 되었다. RDS 정보 설정하기 (내 경우에는 RDS가 MySQL이었다.) Connection 설정에서 RDS의 엔드포인트와 DB, username, password를 입력한다. SSH > Use SSH 터널 Public EC2가 하나일 경우(Public EC2 하나를 거쳐 RDS로 접근 가능한 경우) Use SSH 터널 설정을 활성화하고, Settings에 Public EC2 정보를 입력한다..
TIMESTAMP 타입의 컬럼을 생성할 때 Nullable과 Default Value 관련 유의할 사항입니다. TIMESTAMP 타입의 컬럼이 Nullable일 경우 TIMESTAMP 타입의 컬럼이 Nullable일 경우 NOT NULL과 대조되게 NULL을 명시해주어야 합니다. 그렇지 않으면 자동으로 NOT NULL로 생성됩니다. TIMESTAMP 타입의 컬럼의 Defult값이 없는 경우 첫 번째 TIMESTAMP 타입의 컬럼은 자동으로 DEFAULT current_timestamp() on update current_timestamp()의 형태로 생성되게 되고, 그 이후의 TIMESTAMP 타입의 컬럼은 자동으로 DEFAULT '0000-00-00 00:00:00'의 형태로 생성되게 됩니다.
MariaDB -- 해당 데이터가 존재할 경우 새로운 로우를 삽입하지 않는다. INSERT IGNORE INTO [TABLE NAME](COLUMN1, COLUMN2, ...) VALUES(VAL1, VAL2, ...); -- 해당 데이터가 존재할 경우 해당 로우를 업데이트 한다. INSERT INTO [TABLE NAME](COLUMN1, COLUMN2, ...) VALUES(VAL1, VAL2, ...) ON DUPLICATE KEY UPDATE COL1 = VAL1, COL2 = VAL2, ... Oracle INSERT INTO [TABLE NAME](COLUMN1, COLUMN2, ...) VALUES(VAL1, VAL2, ...) WHERE NOT EXISTS(SELECT * FROM [TAB..
'SELECT COUNT(*) FROM ... WHERE ...'와 같이 특정 조건의 데이터 여부를 확인할 때 COUNT 함수를 사용하곤 하는데, 이 경우에는 조건에 맞는 데이터를 모두 쿼리한 다음 그 수를 세기 때문에 이럴 경우에는 EXISTS를 사용하는 것이 좋습니다. 'SELECT EXISTS(SELECT * FROM ... WHERE ...)'와 같이 EXISTS 함수를 사용하는 것이 훨씬 좋습니다.(이 경우에는 한 번만 쿼리합니다.) MariaDB SELECT COUNT(*) FROM TABLENAME WHERE VAL_COL1 = ? SELECT EXISTS(SELECT * FROM TABLENAME WHERE VAL_COL1 = ?) Oracle SELECT 1 FROM DUAL WHERE ..
사용자가 생성하지 않아도 DB의 메타 데이터를 가지고 있는 스키마가 있다. 개발을 하다보면 흔하게 마주칠 수 있는 녀석으로, INFORMATION_SCHEMA 스키마이다. 아래에 주로 필요한 경우를 나열하였다. 1. 테이블 정보(테이블명, 테이블이 속한 스키마 등) 조회 SELECT * FROM INFORMATION_SCHEMA.TABLES; 2. 컬럼 정보(컬럼명, 데이터타입과 데이터 크기, 기본값, NOT NULL 여부 등) 조회 SELECT * FROM INFORMATION_SCHEMA.COLUMNS; 3. 테이블 제약조건 조회 SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS; 4. 테이블 인덱스 조회 cf. `TABLE_CONSTRAINTS`와 조인하여 ..
테이블명 변경(RENAME) ALTER TABLE [기존 테이블명] RENAME [변경될 테이블명]; 컬럼 추가(ADD) -- 마지막에 추가(기본) ALTER TABLE 테이블명 ADD COLUMN 칼럼이름 칼럼타입 -- 지정 칼럼 뒤에 ALTER TABLE 테이블명 ADD COLUMN 칼럼이름 칼럼타입 AFTER 칼럼이름 -- 제일 앞에 추가 ALTER TABLE 테이블명 ADD COLUMN 칼럼이름 칼럼타입 FIRST 컬럼 삭제(DROP COLUMN) ALTER TABLE [테이블명] DROP COLUMN [컬럼명]; 컬럼 수정 - 컬럼명, 컬럼 데이터 타입 변경 - 컬럼 데이터 타입만 변경(MODIFY COLUMN) ALTER TABLE [테이블명] MODIFY COLUMN [컬럼이름] [새컬럼타입..