SQL이란?

    설명

    데이터베이스에서 정보를 관리하기 위해 사용되는 특수한 언어다

    DML, DDL, DCL 이 있다.



    DML (Data Manipulation Language)
    - 데이터 조작어 - SELECT, UPDATE, INSERT, DELETE

    DDL (Data Definition Language)
    - 데이터 정의어 - CREATE, ALTER, DROP

    DCL (Data Control Language)
    - 데이터 제어어 - GRNAT, REVOKE

     

    Key

    키(Key)"는 특정한 레코드(행)를 식별하거나 정렬하기 위해 사용되는 열(칼럼)이다.
    키는 데이터를 구분하고 찾는 데 사용된다.




    기본 키/PK (Primary Key)
    - 테이블의 특정 열에 대해 고유한 값만 사용하도록 제한을 함                       #  ex. 주민등록번호
    - NULL 데이터를 사용할 수 없음

    외래 키/FK (Foreign Key)
    - 다른 테이블의 기본키 값이 있는 열간의 관계를 만들기 위해 사용
    - 부모 테이블에 존재하는 값만을 사용할 수 있도록 제한을 함

     

    제약 조건

    NOT NULL
    - 열에 NULL 값을 사용할 수 없도록 제한
    - PK 제약 조건에는 NOT NULL 제약도 포함되어 있음

    UNIQUE
    - 열에 고유한 값만을 사용하도록 제한
    - 단, NULL 은 중복 사용 가능
    - PK 제약 조건에는 UNIQUE 제약도 포함되어 있음

    CHECK
    - 열에 지정된 값 및 값의 범위만 사용하도록 제한

    명령어

    테이블 명령어

    SELECT user, host FROM mysql.user;
    # 생성된 유저 목록 확인
    
    
    CREATE TABLE <테이블명>(
    	<열 이름> <데이터 타입> [<제약조건>]
    	<열 이름> <데이터 타입> [<제약조건>]
    	<열 이름> <데이터 타입> [<제약조건>]
    	......
    );
    # 테이블 생성
    
    DROP TABLE <테이블명>;
    # 테이블 삭제
    
    ALTER TABLE <테이블명> ADD <열 이름> <데이터 타입> [<제약조건>]   
                          DROP <열 이름>
                          MODIFY <열 이름> <데이터 타입>
                          RENAME COLUM <이전 열이름> TO <새로운 열 이름>
                          RENAME TO <새로운 테이블 이름>
    # 테이블 변경
    # 테이블에 데이터가 존재할 경우, 위 명령어를 사용해 스키마 정보를 수정하는 것은 권장X
    
    
    
    INSERT INTO 테이블명 (열1, 열2, ...) VALUES (값1, 값2, ...);
    # 데이터 추가
    
    
    UPDATE <테이블명> SET <열이름> = <값>;  
    # where 이 없으면 전체 행 데이터 수정
    UPDATE <테이블명> SET <열이름> = <값> WHERE <열 이름> = <값>;
    # 데이터 수정 ex) UPDATE student SET 나이 = 23 WHERE 이름 = '홍길동';
    
    
    DELETE FROM <테이블 명>;                         
    # DROP 은 테이블 자체를 삭제
    DELETE FROM <테이블 명> WHERE <열 이름> = <값>;  
    # DELETE는 저장된 데이터를 삭제
    # SELECT 결과를 확인 후 삭제 및 수정 할것

     

    함수

    SELECT CHAR_LENGTH('안녕하세요');
    # 글자 수 세기
    SELECT CONCAT('a','b');
    # 텍스트 합치기
    SELECT concat(YEAR,'년') FROM country_stats LIMIT 5;
    # 1959년 처럼 뒤에 말 붙일 수 있음
    SELECT LOWER('ABC');
    # 소문자로 출력
    SELECT UPPER('abcd');
    # 대문자로 출력
    SELECT REPLACE('안녕하세요','하세요','?'); // 결과 : 안녕?
    # 문자열에서 문자를 찾아 대체
    SELECT SUBSTRING('안녕하세요',1,2), SUBSTRING('안녕하세요',3,3);// 안녕, 하세요
    # 텍스트의 n번째에서 m번까지 
    
    
    
    -- 날짜 관련 함수
    
    SELECT NOW();
    # 현재 날짜 및 시간을 반환 하는 함수
    SELECT STR_TO_DATE('2022-01-16', '%Y-%m-%d');
    # 문자열로 만들어진 날짜 및 시간 형식을 날짜 타입으로 변환
    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
    # 날짜 타입을 문자열로 변환
    SELECT TIMEDIFF('2022-01-16 12:00:00', '2022-01-15 10:30:00');
    # 두 날짜 및 시간의 차이를 구하는 함수 
    SELECT YEAR(NOW()), MONTH(NOW()), DAY(NOW());
    # 날짜 타입에서 원하는 년, 월, 일 을 추출하는 함수 
    SELECT ADDDATE(NOW(),7); 
    # 현재에서 일주일 후 
    SELECT ADDDATE(NOW(),-7); 
    # 현재에서 일주일 전
    SELECT ADDDATE(NOW(), INTERVAL 3 MONTH);
    # 현재 날짜에서 3개월 후
    SELECT ADDDATE(NOW(), INTERVAL -3 MONTH); 
    # 현재 날짜에서 3개월 전
    
    
    
    
    
    -- 집계 함수
    조회한 결과의 정보가 집계되어 1개의 행 정보로 만들어 짐
    행 정보가 공통된 열을 기준으로 묶일 수 있도록 SQL 구문을 작성해야 함
    
    COUNT()
    # SELECT COUNT(*) FROM country_stats;
    # SELECT COUNT(*) FROM country_stats WHERE country_id = 117;
    # SELECT country_id, COUNT(*) FROM country_stats GROUP BY country_id;
    # 전체 행 수를 구하기 위해 사용
    # 특정 값을 가지는 레코드의 행 수를 구할 때에도 사용
    SUM() 
    # SELECT country_id, SUM(population) FROM country_stats GROUP BY country_id;
    MAX()
    # SELECT country_id, MAX(gdp) FROM country_stats GROUP BY country_id;
    MIN()
    # SELECT country_id, MIN(gdp) FROM country_stats GROUP BY country_id;
    AVG()
    # SELECT country_id, AVG(gdp) FROM country_stats GROUP BY country_id;
    
    # SQL 질의문 실행 순서
    # FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY
    # from 으로 테이블 을 보고 where절로 추출
    # group by 에 의해 그룹화 되어 having 조건으로 추출 
    # select 로 지정한 테이블을 나오고 order by로 정렬

    'DataBase' 카테고리의 다른 글

    DataBase 란?  (1) 2024.02.10

    댓글