Structured Query Language(SQL)은 관계형 데이터베이스를 관리하고 조작하기 위해 설계된 프로그래밍 언어입니다. 이는 데이터 분석가와 데이터 과학자가 대규모 데이터셋에서 통찰을 추출하기 위해 널리 사용됩니다. SQL은 데이터를 필터링, 정렬, 그룹화, 집계하는 등 다양한 데이터 조작 작업을 수행할 수 있는 강력한 도구입니다. 이 글에서는 데이터 과학 작업의 90%를 수행할 수 있는 13가지 필수 SQL 문법에 대해 다룹니다. 이러한 문법은 이해하기 쉽고 구현하기 쉬우며, SQL 작업의 기초를 다지는 데에 도움을 줍니다.1. SELECTSELECT 문은 데이터베이스에서 하나 이상의 테이블에서 데이터를 조회하는 데 사용됩니다. WHERE, ORDER BY, GROUP BY와 같은 다양한 ..
MYSQL을 사용하여 5분 단위로 그룹핑하여 평균값 계산하는 방법에 대해 알아보겠습니다. 테이블 생성 먼저 분 단위로 그룹핑과 평균값 계산을 위해 DATETIME, FLOAT 타입이 포함된 테이블을 생성합니다. CREATE TABLE test ( id INT NOT NULL AUTO_INCREMENT, sensor_value FLOAT, log_time DATETIME, PRIMARY KEY(id), ) ENGINE=MYISAM CHARSET=utf8; 테이블이 생성되면 값을 입력합니다. 첫 번째 방법 시간 단위로 먼저 그룹핑한 후 분단위를 5로 나누어 그룹핑합니다. SELECT date_format(log_time, '%Y%m%d%H%i%S'), AVG(sensor_value) FROM test GRO..
MySQL 스토리지 엔진 종류 및 간단 비교 내용입니다. MyISAM 정적인 테이블, 로그 테이블 쓰기 작업이 별로 없는 select 위주의 테이블 다수의 세션이 동시 작업을 하는 경우 성능이 저하됨 InnoDB 민감한 정보를 갖는 테이블 (회원 등) 갱신 (읽기 / 쓰기) 위주의 트랜잭션이 요구되는 테이블 인덱스가 많이 걸린 대량의 테이블 Archive 로그 수집에 적합 데이터가 메모리상에서 압축된 후 압축된 상태로 디스크에 저장 Memory 일시적으로만 사용되는 임시 테이블
Help HELP SHOW; HELP {SELECT | DELETE | UPDATE}; HELP ALTER; HELP ALTER {DATABASE | TABLE}; Show SHOW PRIVILEGES; SHOW OPEN TABLES; SHOW TABLE STATUS; 테이블 칼럼 조회 명령어입니다. (코멘트 포함) SHOW FULL COLUMNS FROM 테이블명; Select -- 왜래키 규약 SELECT * FROM information_schema.REFERENTIAL_CONSTRAINTS; -- PRIMARY KEY, UNIQUE 규악 등 SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE table_schema = 데이터베이스명; 백업 $ my..
MySQL에서 사용하는 ALTER TABLE 구문에 대해 알아보겠습니다. 테이블 관련 테이블 생성 테이블 2개를 생성합니다. CREATE TABLE test ( id INTEGER, age INTEGER, name VARCHAR(50), jumin VARCAHR(15), PRIMARY KEY(id), UNIQUE(age), INDEX(name), KEY(jumin), INDEX(name, jumin) ); CREATE TABLE test2 ( id INTEGER, parent_id INTEGER, FOREIGN KEY (parent_id) REFERENCES test(id) ON DELETE CASCADE ON UIPDATE CASCADE ); INDEX를 KEY로 바꿔도 됩니다. INDEX(name, ..
인덱스(index)란? 인덱스(index)는 테이블에서 원하는 데이터를 쉽고 빠르게 찾기 위해 사용합니다. 이러한 인덱스는 자주 사용되는 필드 값으로 만들어진 원본 테이블의 사본이라고 생각할 수 있습니다. MySQL은 데이터를 검색할 때 첫 번째 필드부터 차례대로 테이블 전체를 검색합니다. 따라서 테이블이 크면 클수록 데이터를 탐색하는 시간도 많이 늘어나게 됩니다. 장점 MIN(), MAX() 등의 함수를 사용하는 쿼리에 대해 해당 필드에 인덱스가 있는 경우 빠르게 찾을 수 있습니다. ORDER BY와 GROUP BY를 빠르게 수행할 수 있습니다. 단점 ISAM, MyISAM 테이블 인덱스를 무겁게 만들면 인덱스 파일이 데이터 파일보다 더 빠르게 최대 크기에 도달됩니다. BDB(Berkeley DB) 테..
MySQL에서 계정 생성 및 권한 부여와 계정 정보 수정하는 방법에 대해 알아보겠습니다. 로그인 root의 패스워드를 입력하여 로그인합니다. $ sudo mysql -u root -p 계정 확인 MySQL [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | | triplet_db | +--------------------+ 6 rows in set (0.435 sec) MySQL [(none)]> use mysql; Database changed 다음 명령어를 실하여 사용자 계..
MySQL 서버에 접속 시도 시 다음과 같은 에러가 발생할 경우 해결 방법입니다. $ sudo mysql -u root ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) MySQL 사용자로 접속 시도 시 /var/lib/mysql/ 경로에서 mysql.sock 파일을 찾을 수 없어서 나오는 오류입니다. 먼저 mysql.sock 파일을 찾습니다. $ find / -name "mysql.sock" /db/mysql_data/mysql.sock 해결 1 my.cnf 파일을 열고 아래 항목을 추가합니다. $ vi /etc/my.cnf [client] socket=/db/mys..
MariaDB에서 계정을 생성하고 권한을 부여하는 방법입니다. 로그인 root의 패스워드를 입력하여 로그인합니다. $ sudo mysql -u root -p 계정 확인 MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | | triplet_db | +--------------------+ 6 rows in set (0.435 sec) MariaDB [(none)]> use mysql; Database changed 다음 명령어를 실행하여 사용자 계정들을 확인합니다...
MySQL을 사용하여 개발 중 4MB가 넘는 파일을 업로드 시 다음과 같은 패킷 에러가 발생하였다. com.mysql.jdbc.PacketTooBigException: Packet for query is too large (9,523,277 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable 기본적으로 할당된 패킷 사이즈 값이 너무 작기 때문에 에러가 발생했기 때문에 수정이 필요하다. MySQL 설정에서 max_allowed_packet 값을 변경하여 해결하였다. max_allowed_packet은 서버로 질의하거나 받게 되는 패킷의 최대 길이를 나타내는 시스템 변수 다음은 해결방..