Database 76

[Ubuntu] PostgreSQL 설치 및 실행

PostgreSQL 오픈 소스 객체 관계형 데이터베이스 관리 시스템 (object-relational database management system; ORDBMS). 미국 캘리포니아에 있는 버클리 대학 컴퓨터 과학부에서 개발한 POSTGRES, Version 4.2를 기반으로 개발되었다. 북미와 일본에서 인지도가 높은 데이터베이스 시스템으로 기능적인 면에서는 Oracle과 유사한 점이 많다. 유연한 객체 생성, 상속, 함수를 지원하는 것이 특징이다. 포스트그레스큐엘로 발음하면 된다. 이전에는 Postgres라고 불렀지만 표준 SQL을 지원하면서 이름에 SQL을 덧붙인 것으로 공식적인 명칭은 post-ingres 데이터베이스다. 💡 객체 관계형 데이터베이스 관리 시스템 (ORDBMS) 객체지향 데이터베이..

Database 2023.04.04

[MySQL] CHECK TABLE - 테이블 상태 확인

CHECK TABLE View DDL에서 존재하지 않는 테이블을 참조하는 등의 문제를 가진 테이블이 있는지 확인한다. 확인할 테이블에 대한 권한이 있어야 CHECK 명령을 수행할 시 있다. 개발자보다는 DBA가 주로 사용하는 명령어지만, DB 업그레이드 사전 작업 중 확인 요청이 와서 정리한다. SQL CHECK TABLE tbl_name [, tbl_name] ... [option] ... option: { FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED } 옵션은 다음과 같다. FOR UPGRADE : 테이블이 현재 MySQL 버전과 호환되는지 확인한다. QUICK : 잘못된 링크를 확인하기 위한 행 스캔 금지 FAST : 적절히 CLOSE 되지 ..

Database 2023.04.03

[MySQL] View 목록 확인

개요 2021.09.17 - [MySQL] View에서 View의 개념과 생성, 삭제, 수정 방법은 정리했었다. 정작 목록을 확인하는 방법을 적어두지 않아 정리한다. 1. SHOW FULL TABLES SHOW FULL TABLES IN WHERE table_type LIKE 'VIEW'; FULL 키워드를 붙이지 않으면 table_type 컬럼이 없어 조회되지 않는다. 2. SELECT ~ FROM information_schema SHOW FULL TABLES 명령과 달리 모든 데이터베이스 내에 존재하는 View 목록을 확인할 수 있다. SELECT table_schema, table_name, table_type FROM information_schema.TABLES WHERE table_type ..

Database 2023.04.02

[MySQL/MariaDB] 서버 원격 접속 허용

개요 AWS EC2에 MySQL 서버를 설치하고 다른 서버에 접속을 시도했다. EC2에 적용한 보안 그룹은 아웃바운드와 인바운드 모두 허용되어 있고 MySQL 서버도 실행 중이고, 접속을 시도한 계정은 모든 대역의 IP를 허용하고 있었다. 하지만 접속이 되지 않았다……. telnet 연결조차 되고 있지 않은 상태다. 원인 MySQL은 기본적으로 localhost의 연결만 수신하기 때문에 같은 서버 내에서만 접근할 수 있다. 원격 접속이 필요하다면 아래 두 가지 방법 중 하나를 선택할 수 있다. SSH 터널을 통한 접속 MySQL 서버가 원격 연결을 허용하도록 구성 이 글에서는 MySQL 서버가 원격 연결을 허용하도록 구성해보려고 한다. MySQL 서버 구성 변경 MySQL 서버와 클라이언트가 전용 네트워..

Database 2023.03.25

[MySQL] 데이터형 변환 (CAST/CONVERT)

개요 MySQL은 비교나 검색을 수행할 때 데이터 타입이 다른 경우 내부적으로 같은 타입으로 변환하여 처리한다. 또 사용자가 명시적으로 데이터 타입을 변환할 수 있도록 연산자와 함수를 제공하고 있다. CAST 인수로 전달받은 값을 지정한 데이터 타입으로 변환한다. 변환할 타입은 AS 절로 명시하며, 사용할 수 있는 타입은 BINARY, CHAR, DATE, DATETIME, TIME, DECIMAL, JSON (MySQL 5.7.8 이상), NCHAR, SIGNED [INTEGER], UNSIGNED [INTEGER]이다. CAST(expr AS type) 예시 ) SELECT 4 / 2, 4 / '2', 4 / CAST('2' AS UNSIGNED); # 실행 결과 | 4 / 2 | 4 / '2' | ..

Database 2023.02.09

[MySQL] 접속 명령어

개요 어째 매번 mysql-client로 접속할 때마다 접속 명령어를 검색하고 있는 것 같아 기록한다. mysql-client 설치 먼저 mysql-client 설치가 필요하다. OS에 따라 yum, apt 등으로 설치한다. # CentOS/Linux2 yum install mysql # Ubuntu apt install mysql-client 접속 mysql 명령어를 통해 MySQL 서버에 접속한다. mysql # -u, --user : MySQL 서버에 접속할 계정 # -p, --password : MySQL 서버에 접속할 때 사용할 비밀번호. 지정하지 않으면 대화형으로 입력한다. # -h, --host=name: 접속할 MySQL 서버 # -P, --port : MySQL 서버에 접속할 때 사용할 ..

Database 2022.12.12

[MySQL] JOIN/UNION을 사용한 FULL OUTER JOIN

개요 2022.06.12 - [MySQL] JOIN에서 정리했지만 MySQL에서는 FULL OUTER JOIN을 지원하지 않는다. 하지만 OUTER JOIN과 UNION을 이용하면 FULL OUTER JOIN을 할 수 있다. SQL SQL은 다음과 같은 구조이다. 2개 테이블 JOIN SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.id UNION SELECT * FROM t1 RIGHT OUTER JOIN t2 ON t1.id = t2.id 3개 테이블 JOIN SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.id LEFT OUTER JOIN t3 ON t2.id = t3.id UNION SELECT * FROM t1 R..

Database 2022.12.08

[MySQL] SubQuery - 스칼라 서브 쿼리

SubQuery 서브 쿼리란 다른 쿼리 내에 포함되어 있는 SELECT 쿼리문을 의미한다. 서브쿼리를 포함하고 있는 쿼리를 외부 쿼리, 부모 쿼리, 메인 쿼리라고 부르고 서브 쿼리를 내부 쿼리, 자식 쿼리라고 부른다. 서브 쿼리는 괄호로 감싸서 표현된다. 예시 ) SELECT name, height FROM userTbl WHERE height > (SELECT height FROM userTbl WHERE name in ('김경호') ); 서브쿼리에서는 메인 쿼리의 컬럼을 사용할 수 있지만, 메인 쿼리에서는 서브 쿼리의 컬럼을 사용할 수 없다. 서브 쿼리 장점 쿼리를 구조화하여, 쿼리의 부분을 명확히 구분할 수 있다. 복잡한 JOIN, UNION과 같은 동작을 수행할 수 있는 방법을 제공한다. 복잡한 ..

Database 2022.12.07

[MySQL] DDL 조회

개요 데이터베이스에서 이미 생성되어 있는 테이블, View의 DDL을 추출하려고 한다. 방법을 정리해둔다. Table DDL 테이블은 CREATE TABLE 문으로 생성할 수 있다. CREATE TABLE 문 앞에 SHOW를 붙이면 해당 테이블의 DDL을 추출할 수 있다. SHOW CREATE TABLE -- 예시 SHOW CREATE TABLE docs; View DDL VIEW의 DDL도 같은 명령으로 확인할 수 있다. SHOW CREATE TABLE -- 예시 SHOW CREATE TABLE view_docs; 참고 문서 https://rangstv.tistory.com/6

Database 2022.11.30

[MySQL] 사용자 정의 변수 (@)

사용자 정의 변수 사용자가 직접 정의하는 변수로, 한 명령문에서 값을 저장하고 다른 명령문에서 참조할 수 있다. 이를 통해 한 명령문에서 다른 명령문으로 값을 전달할 수 있다. 사용자 정의 변수는 @var_name으로 작성하며, 변수 이름은 영문, 숫자, ., _, 등으로 구성될 수 있다. 그리고 대소문자를 구분하지 않는다. 또한 세션(session) 단위로 유지되기 때문에, 한 클라이언트에서 정의한 사용자 변수는 다른 클라이언트에서 사용할 수 없다. 선언 (SET) SET 문을 실행해서 사용자 졍의 변수를 선언할 수 있다. SET @var_name = VALUE # 예시 SET @var = 1; 선언 (SELECT) SELECT 문을 실행해서 사용자 정의 변수를 선언할 수도 있다. SET문을 실행할 때..

Database 2022.11.02
1 2 3 4 5 6 7 8