everydayminder
PostgreSQL을 설치한 머신내에는 psql이 기본적으로 설치가 되어 있겠지만, 리모트로 접속해야 하는 경우는 별도로 설치해 줘야 한다. 여러 GUI 기반 client들도 많지만, 간단하게 보거나 명령어로 손쉽게 조회해 보려면 psql도 충분할 경우가 많다. 특히 기본 메타 정보 등을 조회하는 명령어는 범용 GUI에서는 지원하지 않기 때문에, psql 나름의 장점이 있다. 맥북에서 psql 설치하기 다음과 같이 libpq를 설치한다. $ brew install libpq libpq 설치가 완료되었다면, $ brew link --force libpq 를 실행하여 심볼릭 링크를 생성한다. Linking /usr/local/Cellar/libpq/13.2... 372 symlinks created. If ..
MySQL에서 쿼리 타임아웃을 설정하려면? MySQL에서 쿼리를 실행하다 보면, 클라이언트쪽이 아니라 서버쪽에서 실행시간을 제어하고 싶을 때가 있다. 너무 실행시간이 길어지는 경우 kill을 하면 좋겠지만, 클라이언트와 서버간 중간 커넥션이 끊어지면 트래킹하기도 어렵다. 만약, 조건(?)만 만족한다면 다음의 옵션을 검토해 보자. 사용 옵션 - MAX_EXECUTION_TIME(n) 제목에도 썼듯이, 사용할 옵션은 MAX_EXECUTION_TIME이다. 환경 변수나, conf로 설정하게 되면 여러 쿼리들에 적용되는 부작용을 겪을 수도 있다. 따라서, 쿼리 힌트로 사용하는 것이 현실적이라고 생각한다. SELECT /*+ MAX_EXECUTION_TIME(n) */ * FROM ... 형식으로 사용하면 된다...
MySQL Information_schema로 세부 정보 확인하기 특정 어느 한 개의 테이블에 대한 스키마 정보를 알고 싶을 때, desc 테이블명 을 실행하면 테이블의 스키마를 확인할 수 있다. 그런데, 전체 스키마 중 어떤 특징을 기준으로 조회하거나 내용을 걸러서 확인해야 한다면, 모든 테이블을 대상으로 desc 하는 것은 비효율적이다. DB 테이블 구조를 쿼리로 확인할 수 있다면 도움이 될 것이므로, 어떤 정보를 조회할 수 있는지 다음과 같이 확인해 보자. 테스트스키마 및 테이블 구성 테스트를 위해, 아래와 같이 스키마를 만들고 몇 개의 테스트 데이터를 넣어보자. CREATE TABLE IF NOT EXISTS `docs` ( `id` int(6) unsigned NOT NULL, `rev` int..
Docker를 사용하여 MySQL을 설치하는 방법을 정리한다. docker-compose.yml YAML 파일의 기본 골격을 다음과 같이 작성한다. version: "3" services: db: image: mysql:8.0.20 container_name: mysql_db restart: always ports: - "3306:3306" environment: MYSQL_DATABASE: "${MYSQL_DATABASE}" MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}" MYSQL_USER: "${DB_USER_ID}" MYSQL_PASSWORD: "${DB_USER_PASSWORD}" command: - --character-set-server=utf8mb4 - --co..
쿼리로 테이블 이름 조회하려면? 테이블 이름을 조사할 일이 있을 때, DB Client에서 조회하는 것이 불편할 때가 있다. 쿼리로 테이블 이름을 추출하려면 어떻게 할까? 주요 DB별로 테이블 정보를 조회하는 쿼리는 다음과 같다. MySQL SELECT table_name FROM information_schema.tables; PostgreSQL SELECT RELNAME AS TABLE_NAME FROM PG_STAT_USER_TABLES; Oracle SELECT * FROM all_all_tables; SELECT * FROM tabs; MS-SQL SELECT * FROM INFORMATION_SCHEMA.TABLES; 간편하게 온라인으로 SQL Query 실행해 보기 베경 DB가 설치되어 있고..
DB 설치하지 않고 온라인으로 쿼리 실행해 보려면? DB가 설치되어 있고 적절한 DB client가 설치되어 있다면, 직접 접속해서 실행해 보면 제일 정확할 것이다. 그러나, 다음과 같은 상황이라면 어떨까? 기본적인 동작 구조만 확인하고 싶다. 다른 종류의 DB에서는 어떻게 동작하는지 확인하고 싶다. 다른 종류의 DB에서는 어떤 구문/ 문법으로 쓰이는지 확인하고 싶다. 실제 데이터는 아니지만, 소규모 데이터로도 동작시킬 수 있다. 대략, 이와 같은 조건이 만족된다면 굳이 해당 종류의 DB를 직접 설치할 필요는 없을 것이다. 물론, 실제 개발까지 지속적으로 한다면 설치를 하는 것이 맞는 선택일 것이다. 그러나, 요새는 docker를 적극 활용하면 예전처럼 모든 것을 처음부터 직접 설치하고 설정하는 번거로움..
1. 어떤 사용자 id가 등록되어 있는지 보려면, select * from dba_users; 2. 특정 사용자의 비밀번호를 변경하려면, alter user 사용자명 identified by 비밀번호;
만약, DB의 한글 설정이 UTF-8로 되어 있고 (show variables like 'c%' 로 확인) 웹서버든 프로그램 상에서든 인코딩을 맞춰서 넣어준다고 치자. 컴퓨터에서 HeidiSQL 같은 프로그램을 써서 DB에 접속해 보면, 한글이 문제 없이 디스플레이 된다. 그러나, command로 mySQL client 접속해보면, 한글이 깨지는 경우가 있다. 그럴 때, set names euckr 이라고 하면, 테이블의 데이터가 정상으로 디스플레이된다. 물론, 그 상태에서 update 문을 실행해도 이상없이 업데이트가 수행된다.
1. 각 클래스에 대해 table을 만든다 2. 각 속성에 대해 필드를 만들고, 적절한 타입을 할당한다. 필요시, 필드를 하위 필드의 조합으로 구성한다. 3. 한 개 또는 여러 필드의 조합으로 primary key를 선정한다. 선정 과정에서, 해당 키의 고유성이 보장되는지 충분히 검토한다. 4. Many-Many Relationship은, 한 개의 새로운 중간 클래스를 연계하여, 두 개의 1-Many relationship으로 분할하여 처리한다. 5. 1-Many relationship의 경우, 1쪽의 primary key를 Many 쪽에 foreign key로 등록하여 처리한다. 6. 1-1 relationship은 서로 비교하여, 해당 정보를 보다 필요로 하는 쪽으로 나머지 클래스의 primary k..
Feature in Model Technique Used in Relational Database Class add a table with a primary key Attribute add a field with an appropriate data type to the table Object add a row of data to the table 1-Many Relationship use a foreign key, i.e., a reference to a particular row (or object) in the table at the 1 end of the relationship Many-Many Relationshop add a new table and two 1-Many relationships ..
1. 10.0.0.1에 접속 2. cat /proc/drbd -> primary인지 secondary인지 정보가 출력됨 3. drbdadm primary mysql -> primary로 전환 4. mount /dev/drbd0 /drbd/ 5. service mysql start
mysql> select * into outfile '파일명' fields terminated by '구분자' from 테이블명