ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [혼자 공부하는 SQL] 3장. SQL 기분 문법
    DB 2024. 4. 4. 01:33
    728x90
    DROP DATABASE IF EXISTS market_db; -- 만약 market_db가 존재하면 우선 삭제한다.
    CREATE DATABASE market_db;
    
    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)
    );
    

    AUTO_INCREMENT : 자동으로 숫자 입력, 순번이 자동으로 증가

     

    IN()

    조건식에서 여러 문자 중 하나에 포함되는 지 비교

    SELECT mem_name, addr
    	FROM member
    	WHERE addr IN('경기', '전남');
    

     

    LIKE

    문자열의 일부 글자 검색

    SELECT *
    	FROM member
    	WHERE mem_name LIKE '우%' -- 앞 글자가 '우'이고 그 뒤는 무엇이든 허용
    
    SELECT *
    	FROM member
    	WHERE mem_name LIKE '__핑크' -- 앞 2글자는 상관없고 뒤는 '핑크'인 데이터
    

     

    서브 쿼리

    SELECT 안에 SELECT가 들어간 쿼리

    이름이 ‘에이핑크’인 회원의 평균 키보다 큰 회원을 검색

    SELECT height FORM member WHERE mem_name = '에이핑크'; -- 결과 : 164
    SELECT mem_name, height FROM member WHERE height > 164;
    

    서브 쿼리 사용

    SELECT mem_name, height FROM member
    	WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');
    

     

    ORDER BY

    ASC(Ascending) : 기본값, 오름차순

    DESC(Descending) : 내림차순

    L

    IMIT

    -- LIMIT 시작, 개수
    LIMIT 3 -- =LIMIT 0, 3
    

     

    DISTINCT

    중복된 결과 제거

    중복된 데이터를 1개만 남김

    열 이름 앞에 사용

    SELECT DISTINCT addr FROM member;
    

     

    GROUP BY

    지정한 열의 데이터들을 같은 데이터끼리는 묶어서 결과 추출(그룹으로 묶어주는 역할)

    주로 집계함수(SUM, AVG, MIN, MAX, COUNT, COUNT(DISTINCT))와 같이 사용

    조건식은 HAVING 사용

    SELECT mem_id, amout FROM buy ORDER BY mem_id;
    

     

    데이터 변경

    INSERT

    INSERT INTO 테이블 (열1, 열2) VALUES (값1, 값2) 
    -- 열은 생략 가능, 단, 값들의 순서와 개수는 테이블의 열 순서 및 개수와 동일해야함
    

    AUTO_INCREMENT

    열을 정의할 때 1부터 증가하는 값 입력해줌. 지정된 열은 꼭 PRIMARY KEY로 지정해야 함.

    ALTER TABLE hongong2 AUTO_INCREMENT=100; -- 입력되는 값을 100부터 시작되도록 변경
    -- ALTER TABLE : 테이블 변경
    
    CREATE TABLE hongong3 {
    	toy_id, INT AUTO_INCREMENT PRIMARY KEY,
    	toy_name CHAR(4),
    	age INT);
    ALTER TABLE hongong3 AUTO_INCREMENT=1000; -- 시작값 1000으로 지정
    SET @@auto_increment_increment=3; -- 증가값 3으로 지정
    

     

    INSERT INTO ~ SELECT

    많은 양의 데이터를 한 번에 삽입

    INSERT INTO 테이블이름 (열1, 열2)
    	SELECT 문;
    
    -- world.city 테이블의 내용을 city_popul 테이블에 입력
    INSERT INTO city_popul
    	SELECT Name, Population FROM world.city;
    

     

    UPDATE

    -- city_poul 테이블의 'Seoul'을 '서울'로 변경
    UPDATE city_poul
    	SET city_name='서울'
    	WHERE city_name='Seoul';
    

    WHERE 절은 생략이 가능하나, 생략하면 모든 행의 값이 변경되므로 주의

     

    DELETE

    행 데이터 삭제

    DELETE FROM 테이블이름 WHERE 조건;
    
    -- 'New'로 시작하는 도시 삭제
    DELETE FROM city_popul
    	WHERE city_name LIKE 'New%';
    

     

    대용량 테이블 삭제

    DELETE FROM big_table1; -- 삭제가 오래 걸림
    DROP TABLE big_table2; -- 테이블 자체 삭제, 속도 빠름
    TRUNCATE TABLE big_table3; -- DELETE와 동일(빈 테이블 남김), 속도 빠름, WHERE문을 사용할 수 없어서 조건없이 전체 행을 삭제할 때 사용
    

    ⇒ 대용량 테이블의 전체 내용을 삭제할 때 테이블 자체가 필요 없을 경우에는 DROP으로 삭제, 테이블 구조를 남겨놓고 싶다면 TRUNCATE로 삭제

    728x90
Designed by Tistory.