테이블 작성 CREATE TABLE 테이블명 ( 열명1 자료형 \[DEFAULT 기본값\] \[제약 조건\], //제약 조건에 대해서는 따로 설명 열명2 자료형 \[DEFAULT 기본값\] \[제약 조건\], ... ); 테이블 삭제 DROP TABLE 테이블명; 테이블 변경 ALTER TABLE 테이블명 ADD 열명 자료형 \[DEFAULT 기본값\] \[제약 조건\]; //새로운 열 추가하기 ALTER TABLE 테이블명 MODIFY 열명 자료형 \[DEFAULT 기본값\] \[제약 조건\]; //MODIFY로 기존의 열명을 입력하고 자료형, 기본값, 제약 조건을 입력한다. ALTER TABLE 테이블명 CHANGE \[기존 열 이름\] \[신규 열 정의\]; //CHANGE 명령으로는 열명까지도 바..
COUNT로 행 갯수 구하기 SELECT COUNT(*) FROM 테이블명 [WHERE 열명=조건]; //테이블에 존재하는 [조건을 만족하는] 모든 행의 갯수 SELECT COUNT(열명1), COUNT(열명2) FROM 테이블명; //열명1과 열명2의 갯수를 별도로 센다. //NULL은 집계함수가 세지 않는다. DISTINCT로 중복 제거하기 SELECT ALL 열명 FROM 테이블명; SELECT 열명 FROM 테이블명; //ALL 키워드는 기본값이다. //모든 열 조회 SELECT DISTINCT 열명 FROM 테이블명; //중복된 값을 제거하여 조회한다. SELECT COUNT(DISTINCT 열명) FROM 테이블명; //중복값을 제거하고 행의 갯수를 센다. SUM으로 합계 구하기 SELECT ..
행 추가하기 INSERT INSERT INTO 테이블명 VALUES (값1, 값2, ...); //테이블의 모든 열 구성에 맞게 입력 INSERT INTO 테이블명(열1, 열2, ...) VALUES (값1, 값2, ...); //원하는 열에만 값을 입력 //명시하지 않은 열에는 NULL이나 DEFAULT로 선언된 값이 들어간다. DEFAULT 값 Table을 통해 설정해둔 DEFAULT(기본값)으로 값 추가하기 INSERT INTO 테이블명(열1, 열2) VALUES (2, DEFAULT); //명시적으로 Default 값으로 넣기 INSERT INTO 테이블명(열1) VALUES (2); //암묵적으로 Default 값으로 넣기 삭제하기 DELETE DELETE FROM 테이블명 \[WHERE 조건식..
ORDER BY로 오름차순 정렬하기 SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명; //기본이 오름차순 SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 ASC;ORDER BY로 내림차순 정렬하기 SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 DESC; 문자는 사전식 순서에 의해 대소관계가 결정된다. 참고로 숫자를 문자열 형식으로 저장하게 되면 '10'은 '2'보다 작은것으로 판단된다. (사전식 정렬에 의해) 복수의 열을 지정해 정렬하기 앞에 명시한 열기준으로 먼저 정렬된다. SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명1 정렬방식, 열명2 정렬방식; //정렬방식엔 ..
데이터조회하기 (SELECT) SELECT * FROM 테이블명; // 애스터리스크(*)는 모든 열을 의미한다. SELECT 열명1, 열명2 FROM 테이블명; // 테이블의 열명1 열명2에 대한 행을 조회 예약어의 데이터베이스 객체명은 대소문자를 구별하지 않는다. 표 형식의 데이터는 '행(레코드)'와 '열(컬럼/필드)'로 구성된다. 테이블 구조 참조하기 (DESC) DESC 테이블명;검색 조건 지정하기 (WHERE) SELECT 열1, 열2 FROM 테이블명 WHERE 조건식; WHERE절 예제 SELECT * FROM 테이블명 WHERE no = 2; //no열의 값이 2인 경우만 조회 SELECT * FROM 테이블명 WHERE no 2; //no열의 값이 2가 아닌 경..
검색엔진 검색엔진을 이용하다보면, 검색어를 타이핑 하는 순간 연관된 추천 검색어들이 나오는 것을 알 수 있습니다. 어떻게 사용자가 타이핑을 하는 그 '찰나'에 추천 검색어를 찾아 낼 수 있었을까요? 그리고 많은 인터넷 문서들 가운데, 검색 키워드에 맞는 문서들을 찾아 낼 수 있을까요? 일반적인 선형검색을 떠올린다면 절대로 불가능한 속도라는 것을 알 수 있습니다. 엘라스틱 서치는 왜 빠를까? 엘라스틱 서치는 Apache Lucene기반의 오픈소스 '검색엔진'입니다. 그럼 엘라스틱 서치와 같은 검색엔진들은 왜 그렇게 빠른 걸까요? MySQL과 같은 관계형 데이터베이스에 익숙하다면, 테이블이 인덱싱(색인작업) 되면 복잡한 쿼리에서 훨씬 더 나은 성능을 보여준다는 것을 잘 알고 계실겁니다. (인덱싱은 빠른 검색..
※이 포스팅은 academind의 SQL vs. NoSQL을 번역한 포스팅입니다. [개요]웹 애플리케이션 개발을 위한 첫 걸음을 내딛은 이후에 한가지 선택사항을 마주하게 됩니다. MySQL와 같은 SQL을 사용할 것인가? 아니면 MongoDB같은 NoSQL을 사용할 것인가?Node.js에 익숙하신 분들이라면 NoSQL (MongoDB)이 더 좋다는 인상을 가지고 계실지도 모르겠지만 잘못된 생각입니다.이 글에서는 SQL과 NoSQL 데이터베이스의 핵심적인 개념을 소개하고 각 솔루션의 차이점 그리고 장단점을 설명하도록 하겠습니다. [SQL (관계형 데이터베이스)]SQL은 '구조화 된 쿼리 언어 (Structured Query Language)'의 약자입니다. 그러므로 데이터베이스 자체를 나타내는 것이 아니라..
셀프조인 (self join) 일반적으로 JOIN은 연관된 두 개의 테이블을 연결하기 위해서 사용되지만, 자신의 테이블을 참조하는 셀프조인도 가능합니다.예제로 사용될 테이블은 사원의 정보를 담고 있는 테이블로 아래와 같습니다. SELECT * FROM employee; +----+-----------+-------------+ | id | name | superior_id | +----+-----------+-------------+ | 1 | 김사장 | NULL | | 2 | 정과장 | 1 | | 3 | 최대리 | 2 | | 4 | 이대리 | 2 | | 5 | 박고문 | NULL | +----+-----------+-------------+ 사원의 id와 이름 그리고 직속상관(superior)의 id를..