
SELECT 문은 구축이 완료된 테이블에서 데이터를 추출하는 기능을 함.
SELECT의 가장 기본 형식 --> SELECT ~ FROM ~ WHERE
SELECT문은 데이터베이스의 테이블을 조회한 후 결과를 보여줌.
DROP DATABASE IF EXISTS market_db;
CREATE DATABASE market_db;
USE market_db;
CHAR : Character의 약자로, 고정길이 문자형. 즉 자릿수가 고정 되어 있음.
VARCHAR : Variable Character의 약자로, 가변길이 문자형.
CREATE TABLE buy
num INT AUTO_INCREMENT NOT NULL PRIMARY KEY
데이터 조회하기
USE 문
SELECT문의 기본형식 ( ) 묶인 부분은 생략 가능
핵심만 표현
기본적인 형식
SELECT : 테이블에서 데이터를 가져올 때 사용하는 예약어.
별표(*)
FROM : FROM 다음에 테이블 이름이 나옴. 테이블에서 내용을 가져온다는 의미.
원래 테이블의 전체 이름은 데이터베이스이름.테이블이름 형식으로 표현 함 (여기서 _는 띄어쓰기를 표현)
테이블에서 전체 열이 아닌 필요한 열만 가져오기
별칭(Alias)
필요한 것들만 골라서 결과를 보는 효과관계연산자, 논리연산자
BETWEEN ~ AND : 범위에 있는 값을 구하는 경우 사용 (ex 숫자의 범위)
IN() : 조건식에서 여러 문자중 하나에 포함되는 지 비교할 때 사용
LIKE 와 언더바 '_'
SELECT 안에는 또 다른 SELECT문이 들어갈 수 있음.
이것을 서브 쿼리(Sub Query) 또는 하위 쿼리라 부름
Ex) 홍길동의 키보다 큰 회원을 검색
SELECT height From member WHERE mem_name = '홍길동';
출력 결과 height : 164
Ex) 164보다 큰 회원 조회
SELECT mem_name, height From member WHERE height > 164;
이때 이 두 SQL을 하나로 결합 하는 걸 서브 쿼리.
LIMIT : 출력하는 개수를 제한 함.
DISTINCT : 조회된 결과에서 중복된 데이터를 1개만 남김.
GROUP BY, HAVING
COUNT(*)은 모든 행의 개수를 셈 (NULL 포함)COUNT(열 이름)은 열 이름의 값이 NULL인 것을 제외한 행의 갯수를 셈HAVING : WHERE와 비슷한 개념으로 조건을 제한하는 것이지만 집계 함수에 대해서 조건을 제한 하는 것.
데이터를 입력/수정/삭제하는 기능
INSERT : 새로운 값을 입력할 때
UPDATE : 정보를 수정할때
DELETE : 삭제할 때
INSERT : 테이블에 행 데이터를 입력하는 기본적인 SQL문
INSERT INTO 테이블 {(열1, 열2, ...)} VALUES (값1, 값2, ...)
만약 아이디와 이름만 입력하고 나이를 생략한다면 테이블 이름 뒤에 입력할 열의 이름을 써줘야 함.
이 경우 나이 열에는 아무것도 없다는 의미의 NULL값이 들어감.
AUTO_INCREMENT : 열을 정의할 때 1부터 증가하는 값을 입력해줌.
만약 AUTO_INCREMENT로 입력되는 다음 값을 100부터 시작하도록 변경
시스템 변수인 @@auto_increment_increment를 변경시켜야 함.시스템 변수
다른 테이블의 데이터를 한 번에 입력하는 INSERT INTO ~ SELECT
다른 테이블에 이미 데이터가 입력되어 있다면
INSERT INTO ~ SELECT 구문을 사용해 해당 테이블의 데이터를 가져와서 한 번에 입력할 수 있음.
INSERT INTO 테이블이름 (열이름1, 열_이름2, ...) SELECT 문 ;
주의할 점은 SELECT문의 열 개수는 INSERT할 테이블의 열 개수와 같아야 함.
데이터베이스이름.테이블이름으로 다른 데이터베이스의 테이블에 접근할 수 있음
UPDATE : 기존에 입력되어 있는 값을 수정하는 명령어
콤마로 분리해서 여러개의 열을 변경DELETE : 행 단위로 데이터 삭제
DELETE 문은 삭제가 오래 걸림.
DROP 문은 테이블 자체를 삭제 함.
TRUNCATE 문도 DELETE와 동일한 효과를 내지만 속도가 엄청 빠름.
DROP은 테이블이 아예 없어지지만 DELETE, TRUNCATE는 빈 테이블 남김.