[혼공S_2주]chapter03 SQL기본 문법

study_record·2024년 7월 14일
0

혼공S

목록 보기
3/9

2주차 진도🐥

✨기본숙제✨

P.138 2번문제 빈칸에 알맞은것 쓰기

1) SELECT FROM member [ORDER BY] height
2) SELECT
FROM member [LIMIT] 5,2
3) SELECT [DISTINCT] phone1 FROM member

✨추가숙제✨

데이터 입력 기본형식

INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...)

데이터 여러개 입력할때 사용
INSERT INTO 테이블이름 VALUES (값1, 값2..), (값3, 값4..), (값5, 값6.. );

데이터 삭제 기본형식

DELET FROM 테이블이름 WHERE 조건;

📚정리

03-1 SELECT ~ FROM ~ WHERE

실습용 데이터베이스 구축하기

1) 예제파일 워크벤치로 열기
sql파일이 왜 pdf로 연결되있는지 모르겠지만 저 파일 맞음

2) result grid 창에서 member1과 buy 확인하기

파일 내용 확인해보기

  • 데이터베이스 만들기
    • DROP DATABASE : 데이터 베이스 삭제하기
    • CREAT DATABASE : 데이터베이스 만들기

DROP DATABASE IF EXISTS 파일이름
CREAT DATABASE 파일이름

  • 회원테이블 만들기
    • USE : 데이터베이스 선택
    • VARXHAR : 입력데이터를 문자입력 지정
    • --^주석을 쓰자: 주석쓰고 싶을때 하이픈 두개(--) 쓰고 한칸 띄우고 쓴다

USE market_db;
CREATE TABLE member -- 회원 테이블
( mem_id CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
mem_name VARCHAR(10) NOT NULL, -- 이름
mem_number INT NOT NULL, -- 인원수
addr CHAR(2) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
phone1 CHAR(3), -- 연락처의 국번(02, 031, 055 등)
phone2 CHAR(8), -- 연락처의 나머지 전화번호(하이픈제외)
height SMALLINT, -- 평균 키
debut_date DATE -- 데뷔 일자
);

  • 구매 테이블 만들기
    • AUTO_INCREMENT : 숫자를 자동으로 입력된다
    • FOREIGN KEY : 외래키 지정

CREATE TABLE buy -- 구매 테이블
( num INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
mem_id CHAR(8) NOT NULL, -- 아이디(FK)
prod_name CHAR(6) NOT NULL, -- 제품이름
group_name CHAR(4) , -- 분류
price INT NOT NULL, -- 가격
amount SMALLINT NOT NULL, -- 수량
FOREIGN KEY (mem_id) REFERENCES member(mem_id)
);

  • 데이터 입력하기
    • INSERT : 각 테이블에 값을 입력할때 사용함. CHRA, VARCHAR, DATE형은 데이터를 입력할때 작은따음표를 같이 써야한다. INT형은 작은따음표 없이 쓰면된다
    • NULL : 여기서 NULL은 [AUTO_INCREMENT]로 숫자가 자동입력되는 곳이라서 NULL을 입력했음

INSERT INTO member VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, '2015.10.19');
INSERT INTO buy VALUES(NULL, 'BLK', '지갑', NULL, 30, 2);

  • 데이터 조회하기
    • SELECT : 데이터 조회문

SELECT FROM member;
SELECT
FROM buy;

조회하기

  • USE 데이터베이스이름

    • 사용할 데이터베이스 선택하기. SELECT 실행전에 써야함.
    • 다른 USE문을 쓰지 않으면 처음 쓴 USE문 데이터베이스에서 계속 쿼리를 실항하게 된다
    • 쿼리창, 워크벤치를 다시시작할때는 다시 실행해야 함

  • SELECT문 기본

  • SELECT, FROM 문

    • SELECT : 테이블에서 데이터를 가져와라
    • [*] : 모든 것
    • FROM 테이블이름 : 테이블 데이터를 가져와라

  • SELECT 열이름 : 특정열만 가져오기

    • SELECT 열이름 순서대로 결과가 나옴
  • SELECT문의 원칙은 "데이터베이스이름.테이블이름" 으로 써야 한다. USE문을 먼저쓰는 경우 데이터베이스가 선택되서 같은 결과가 나옴

  • 열 이름 별칭 지정하기
    열 이름 [별칭] 순서로 쓰면 결과에 별칭으로 나옴
    별칭에 공백이 있을때 큰따음표를 써주면 됨

특정 조건만 조회하기

  • WHERE 없이 조회하면 데이터가 많을때 어려움

  • 기본 WHERE절

    SELECT 열이름 FROM 테이블이름 WHRER 조건식

  • 문자형 검색시 작은따음표 사용

  • 숫자형 검색시 그대로 입력

  • 관계연산자 사용
    숫자데이터는 관계연산자(작거나 같다)를 사용해서 검색할수 있음

  • 논리연산자
    논리연산자(AND, OR)사용해서 조회하기

  • BETWEEB~AND
    숫자 범위가 있는 값을 구하는 경우에 사용

  • IN
    문자형 데이터에서 검색하고싶은 문자형은 OR 이나 IN 을 사용해서 여러개를 검색하면 된다

  • LIKE
    문자열의 일부를 검색할때 사용한다
    [%]는 검색하기 원하는 글자외에 아무글자나 와도 괜찮을때 사용한다 EX) [우%] 는 '우' 뒤에 아무 글자나 와도 된다는 의미

    [_] 를 사용하면 한 글자와 매치하여 검색한다

  • 서브쿼리
    SELECT 안에 다른 SELECT문을 서브쿼리라고 함

03-2 깊게 보는 SELECT문

ORDER BY 절

  • ORDER BY
    결과가 출력되는 순서를 조절해줌
    기본값은 ASC(오름차순) / DESC(내림차순) 필요할경우 써줘야 함

  • OREDER BY와 WHERE절 순서
    WHERE절 다음에 OREDER BY절을 적어야 한다

  • 정렬 기준 여러개일 경우
    첫번째 조건으로 정렬한후 두번째 조건으로 정렬함

  • LIMIT
    출력할 개수를 제한함

    LIMIT 시작, 개수
    (LIMIT 개수 OFFSER 시작 ← 같은 결과가 나옴)

  • LIMIT 3 = LIMIT 0,3 같은의미 (0번째 부터 3건을 나타내라)

  • LIMIT 3,2

  • DISTINCT
    검색한 결과에 중복이 있는 데이터는 제거하고 하나만 남겨줌

GROUP BY절

  • 그룹으로 묶어주는 역할을 함

  • 집계함수와 GROUP BY절을 같이 쓰면서 그룹화를 해줌

  • 집계함수

    SUM() 합계
    AVG() 평균
    MIN() 최소값
    MAX() 최대값
    COUNT() 행의 개수
    COUNT(DISTINCT) 중복을 제거한 행의 개수

  • GROUP BY로 회원을 묶고 SUM으로 구매개수를 합하기(별칭 사용가능)

  • 회원이 구매한 총 금액 구하기 (가격X수량=총 금액)

  • 회원이 구매한 물품의 평균 개수

  • 연락처가 있는 회원수 개수
    COUNT(*)는 모든 행의 개수를 세어줌

    COUNT(열이름) 열에서 값이 NULL인것은 제외하고 세어줌

  • HAVING 절
    WHERE 절과 비슷하게 조건을 걸어주지만 집계함수에 대한 조건을 제한하는 절
    GROUP BY절 뒤에 작성한다

    총 구매액이 1000 이상인 회원을 구할때 WHERE절에 집계함수를 쓰면 오류가 발생한다

    GROUP BY절에 집계함수 조건을 적어주고 ORDER BY로 정렬해줌

03-3 데이터 변경을 위한 SQL문

데이터 입력 INSERT문

  • INSERT문 기본형태

    INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...)

    데이터 여러개 입력할때 사용
    INSERT INTO 테이블이름 VALUES (값1, 값2..), (값3, 값4..), (값5, 값6.. );

  • 열이름은 생략이 가능하고 생략할 경우 VALUES 다음에 적는 값의 순서와 개수는 테이블을 정의 할때 나오는 순서와 개수를 맞춰서 적어야함 -> 아니면 오류가 발생

  • 테이블의 열이 3개면 데이터도 3개 입력하기

  • 값을 입력하지 않을때는 열의 이름을 써줘야 함

  • 열 이름의 순서를 바꾸면 값의 순서도 바꿔서 입력해야 함

AUTO_INCREMENT

  • 열을 정의 할때 1부터 증가 하는 값이 입력된다

  • AUTO_INCERMENT로 지정하는 열은 꼭 PRIMARY KEY로 지정해야 함

  • 숫자가 몇가지 자동 입력되었는지 확인

    LAST_INSERT_ID()

  • 자동 입력되는 숫자를 지정할수 있음

    ALTER TABLE 테이블 이름 AUTO_INCREMENT=원하는 숫자

  • 증가되는 숫자를 지정할수 있음

    SET @@auto_increment_increment = 숫자

INSERT INTO ~ SELECT

  • 테이블에 데이터를 한번에 입력하는 방법이다.
  • SELECT문의 열개수 와 INSERT 열개수가 동일해야함

    INSERT INTO 테이블이름(열이름1, 열이름2, ...)
    SELECT문 ;

  • DESC : 테이블 구조 확인
  • 새로운 테이블 생성해서 데이터 한꺼번에 입력하기

UPDATE문

  • 기존에 입력되어있는 데이터를 수정할때 사용함

    UPDATE 테이블이름
    SET 열1=값1, 열2=값2 ...
    WHERE 조건;

  • UPDATE로 하나의 값 바꾸기

  • UPDATE로 여러개 값 바꾸기

  • WHERE 없는 UPDATE문
    WHRER절을 생략하면 테이블의 모든 값이 변경됨 따라서 주의해서 사용해야 함

DELET문

  • 데이터 행을 삭제할때는 DELET를 사용함

    DELET FROM 테이블이름 WHERE 조건;

  • 'LIMIT 숫자' 로 원하는 건수만 삭제 가능

0개의 댓글