- Today
- Total
목록Database (8)
개발하는 고라니
MySQL Architecture MySQL 서버 MySQL 엔진 (머리) 스토리지 엔진 (손, 발) InnoDB 스토리지 엔진 MyISAM 스토리지 엔진 ※ MySQL 엔진? - 클라이언트로부터 접속 및 쿼리 요청을 처리하는 Connection Handler와 SQL Parser 및 전처리기, 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이루며, MySQL은 ANSI SQL을 지원하기 때문에 표준 문법에 따라 작성된 쿼리는 타 DBMS와 호환되어 실행 O ※ 스토리지 엔진? - MySQL 엔진은 요청된 SQL을 분석하거나 최적화하는 처리를 수행한다. - 이에 반해 스토리지 엔진은 실제 데이터를 디스크 스토리지에 저장하거나, 디스크 스토리지로부터 데이터를 읽어오는 부분을 전담한다. - MySQL 서버..
MySQL 설치 [environment] Mac OS (M1) mysql (latest) linux/amd64 Docker가 이미 설치되어 있다는 가정하에 진행해본다. $ docker run -p 3306:3306 \ --platform linux/amd64 \ --name mysql-db \ -e MYSQL_ROOT_PASSWORD=[password] \ -e MYSQL_DATABASE=[database] \ -e MYSQL_USER=[username] \ -e MYSQL_PASSWORD=[password] \ -d mysql MySQL 컨테이너가 실행된 것을 확인하고 컨테이너에 들어가보자. $ docker ps -a $ docker exec -it mysql-db [MySQL 실행 파일 위치 및 설정..
Transaction 트랜잭션이란 여러 쿼리를 하나의 업무단위로 묶는 것이다. START TRANSACTION; SELECT * FROM users WHERE id = '1'; UPDATE users SET NAME = 'first' WHERE id = '1'; SELECT * FROM users WHERE id = '1'; COMMIT; Transaction의 성질 트랜잭션의 성질은 흔히 ACID라고 말한다. Atomicity(원자성) : 트랜잭션의 결과는 100% 모두 반영되거나 반영되지 않아야 한다. Consistency(일관성) : 트랜잭션의 결과는 일관성 있어야하고, 데이터베이스는 트랜잭션의 결과를 반영한 후에도 일관적이어야 한다. 여기서 일관적이란 데이터의 타입 등이 바뀌지 않는 것이다. Is..
집계 함수 COUNT 컬럼의 개수를 집계해준다. SELECT WRITER_ID, COUNT(ID) FROM NOTICE GROUP BY WRITER_ID //회원별 게시글 수를 조회. 단 게시글 수가 2 미만인 레코드만 출력 SELECT COUNT(WRITER_ID) CNT, WRITER_ID FROM NOTICE GROUP BY WRITER_ID HAVING COUNT(WRITER_ID) < 2; SUM 특정 컬럼의 합계를 집계 MIN 특정 컬럼의 최소값을 반환 MAX 특정 컬럼의 최대값 반환 AVG 특정 컬럼의 평균값 집계 문자열 관련 함수 LOWER (X) : X를 모두 소문자로 변경 LOWER ('GOOD MORNING') : good morning UPPER (X) : X를 모두 대문자로 변경 ..
데이터베이스에 접속하기 이번엔 서버를 설치하는 것이 아닌, 클라이언트 프로그램을 다운받아 서버에 접속하는 형태로 진행해보자. www.oracle.com/database/technologies/appdev/sqldeveloper-landing.html 상단 링크에서 'SQL Developer'를 각 OS에 맞게 설치한다. Oracle SQL Data Types Oracle Built-in Date Types Character 형식 Numeric 형식 Date 형식 LOB 형식 CHAR(10) : 10개의 공간에 10개의 문자 - 고정길이 [HI ][OK ] VARCHAR2(50) : max 50, 50을 쓰지 않으면 남은 공간 반환 - 가변 길이 [HI,OK,] ------------------------..
Database와 DBMS 사실 데이터베이스가 존재하기 전부터 데이터를 관리하고 있었다. 위의 그림을 대학 캠퍼스라고 보면, 행정실, 도서관, 과사무실 이라고 보았을 때, 데이터를 각각 관리하였다. 그런데 학생의 데이터는 모든 곳에서 사용이 되는데, 동기화가 잘 안되는 것이다. 예를 들어 책을 빌리는 과정을 생각해보면, 휴학생에게는 도서 대출이 안된다. 유재석 학생이 오늘 복학했고, 도서관에서 도서를 대출하려고 했는데, 아직 데이터상 처리가 안되어있는 것이다. 행정실과 도서관의 데이터 동기화(복사본)는 그날 저녁에 이루어지므로 아직 휴학생처리가 되어있는 것이다. 이처럼 데이터가 실시간으로 반영이 안되는 것, 그리고 데이터의 복사본을 갖고있는 문제가 데이터 결함으로 이어질 수 있다는 문제점이 있다. 이를 ..
[MariaDB] 데이터베이스 생성 MariaDB Foundation - MariaDB.org […] mariadb.org * MariaDB 설치가 안되어있다면 위 링크에서 설치할 수 있다. MariaDB를 설치했다면 HeidiSQL이라는 관리도구가 같이 설치된다. 이를 통해서 GUI로 데이터베이.. dev-gorany.tistory.com 이전 글에서 생성한 'MYUSER' 데이터베이스를 사용하는 계정을 생성한다. HeidiSQL에서 사이좋은 사람 아이콘(사용자 인증 및 권한 관리)를 누른다. 사용자 계정 추가(+) 를 누르면 우측에 빈 칸을 채울 수 있게 열린다. 이름과 암호를 적당하게 지어주고 객체 추가(+)를 눌러서 'myuser' 데이터베이스를 추가하여 모든 권한을 부여하도록 한다. HeidiS..
MariaDB Foundation - MariaDB.org […] mariadb.org * MariaDB 설치가 안되어있다면 위 링크에서 설치할 수 있다. MariaDB를 설치했다면 HeidiSQL이라는 관리도구가 같이 설치된다. 이를 통해서 GUI로 데이터베이스를 관리할 수 있다 HeidiSQL를 실행하여 'ROOT'계정으로 접속한다. Password는 MariaDB를 설치할 때 설정한 Password를 사용한다. ROOT 계정으로 접속을 했다면 좌측 빈 공간에서 마우스 우클릭 하여 새로 생성 - 데이터베이스를 클릭한다. 'MYUSER'라는 이름의 새 데이터베이스를 생성하였다. 최종적으로 다음과 같이 'myuser'라는 이름의 데이터베이스가 생성된 것을 확인할 수 있다. # References 코드로 ..