본문 바로가기

MySQL

(7)
GROUP BY와 HAVING의 차이점 책을 통해 MySQL에 대한 공부를 하던 중 GROUP BY와 HAVING이 등장했다. 처음에 둘의 기능을 이해하기 어려워 포스팅으로 남긴다. GROUP BY SELECT문을 활용해 정보를 조회할 때 결과값을 그룹화 하여 나타내는 기능이다. //ex) 학교에서 각 학년별 인원수를 조회하고 싶다. SELECT grade, count(*) FROM school GROUP BY grade; 실행 결과 grade | count(*) ---------------- 1 | 1,094 ---------------- 2 | 984 ---------------- 3 | 1,002 HAVING HAVING은 SELECT문에서 그룹화나 집계가 수행된 후에 레코드를 필터링해서 조건에 맞는 데이터만 나타낸다. //ex) 학교에..
MySQL Index? Index란 생성, 수정, 삭제의 속도가 느려지는 대신, 조회(읽기)의 속도를 올려주는 자료구조다. Index가 테이블에 꼭 있어야만 하는 것은 아니다. 테이블에 Index가 없어도 작동하는데는 문제가 없다. 하지만 데이터가 늘 수록 Index의 필요가 절실해진다. SELECT문으로 정보를 조회할 때 평소에는 몇 초 걸리던 작업이 Index를 사용할 수 있다면 소숫점 이하의 시간으로도 작업을 수행할 수 있다. 현재 Real MySQL 8.0 2편으로 데이터베이스를 공부하고 있는데, 이제 시작한 단계여서 Index에 대해 더 서술하기가 어렵다. 인터넷을 통해 찾아보면 인덱스 알고리즘, 인덱스 타입 등 더 많은 정보가 있다. 그 것들은 책에서 알려줄 때에 포스팅할 것이다.
MySql ErrorCode: 1046 오랜만에 MySql로 테이블을 짜려하니 제목과 같은 오류가 자꾸 떴다. 생각해 보니 USE MYSQL; 입력을 안하고 CREATE TABLE만 자꾸 했던 거였다. 깨닫고 어처구니가 없었다. 오류는 생각보다 장황한 이유에서 나오지 않으며 사소한 실수 혹은 오타가 큰 여파를 불러올 수도 있다는 것을 명심하고 주의해야겠다.
[MySQL] TABLE 구조 잡기 CREATE TABLE ush_user ( user_seq int auto_increment PRIMARY KEY , user_name varchar (32) , user_id varchar (32) , user_pwd varchar (50) , user_call_num int , user_email varchar (50) , user_hobby int , user_sex int , user_blog_name varchar (50) ); CREATE TABLE ush_hobby ( hobby_seq int auto_increment PRIMARY KEY , hobby_title int , hobby_major int ); CREATE TABLE ush_blog_writing ( blog_seq int a..
FOREIGN KEY 맛보기 이전 글에서 다른 테이블의 필드를 참조할 때 join 예약어를 사용했었다. 이번에는 필드 자체가 다른 테이블의 필드를 참조하는 예약어 FOREIGN KEY를 사용해 볼 것이다. 우선, employee 테이블을 생성했다. 그리고 part 테이블을 생성했는데, part 테이블에 처음 보는 예약어가 있다. 이것이 바로 다른 테이블의 필드를 참조하는 FOREIGN KEY다. 위 내용은 part 테이블의 employee_id 필드는 employee 테이블의 id 필드를 참조한다는 뜻이다. 사용 방법은 아래와 같다. FOREIGN KEY (필드명) REFERENCES 참조테이블명 (참조필드명) 이 외에도 제약조건이라는 것이 있던데, 잘못된 지식을 쌓는 것 보다 올바른 방향을 추구하기 위해 조력자를 만나 직접 배울 ..
TABLE JOIN 오늘은 지난 시간에 배운 CRATE TABLE을 이용해 TABLE을 생성하고, 컬럼을 삽입했다. PLAYER_INFO PLAYER_INFO_MAJOR PLAYER_INFO 테이블은 선수들의 정보를 관리하기 위한 테이블로, 선수 이름, 나이, 번호, 전공 컬럼이 있다. PALYER_INFO의 PLAYER_MAJOR를 varchar가 아닌 int형으로 받은 이유는, PLAYER_INFO_MAJOR 테이블에서 더 세분화 하기 위해서다. PLAYER_INFO_MAJOR 테이블에는 PIM_SEQ와 PIM_MAJOR 컬럼이 있다. PIM_SEQ는 PLAYER_INFO의 PLAYER_MAJOR와 대칭되는 컬럼이며, PIM_MAJOR에는 전공명이 써져 있다. ※ 테이블을 다 만들고 누나한테 들은 바로는, primary..
CREATE TABLE - 테이블 생성하기 MySQL은 자바와는 조금 다르게, 테이블을 생성하고 그 테이블 안에 컬럼을 넣는다. 아래는 필자가 만약 인터넷 사이트를 운영한다면 사용자들에게 입력 받을 정보이다. USER_INFO라는 테이블을 생성했다. 테이블 안에는 UI_SEQ, UI_NAME, UI_HOBBY, UI_ID, UI_PWD 컬럼이 있다. int는 java의 int와 같은 정수를 뜻하고, VARCHAR은 java의 String과 같은 문자열이다. VARCHAR 뒤 괄호 안의 숫자는 해당 컬럼이 받을 문자열의 길이를 뜻한다. 또, UI_SEQ 뒤에 붙은 auto_increment는 자동으로 증가한다는 것을 의미하며 primary KEY는 "중복될 수 없는"을 뜻한다. 네트워크 관리사 공부하다가 MySQL하니 재미지다.