[데이터베이스/SQL] SQL 기본 문법

✨ SQL 명령어 종류

  • DDL (Data Definition Language) - 데이터 정의어
    • CREATE, ALTER, DROP, RENAME
  • DML (Data Manipulation Language) - 데이터 조작어
    • SELECT, INSERT, UPDATE, DELETE
  • DCL (Data Control Language) - 데이터 제어어
    • GRANT, REVOKE
  • TCL (Transaction Control Language) - 트랜젝션 제어어
    • COMMIT, ROLLBACK

💫 DDL

: CREATE, ALTER, DROP, RENAME

🚀 CREATE

  • 테이블 생성 시 주의사항 : 반드시 문자로 시작, A-Z, a-z, 0-9, _, $. # 문자만 허용
CREATE TABLE tbname(
  id CHAR(7) NOT NULL
  name VARCHAR(20) NOT NULL,
    
  PRIMARY KEY (id));
  • 속성의 주요 데이터 타입
    • INT or INTEGER : 정수
    • SMALLINT : INT보다 작은 정수
    • CHAR(n) or CHARACTER(n) : 길이가 n인 고정 길이의 문자열
    • VARCHAR(n) or CHARACTER VARYING(n) : 최대 길이가 n인 가변 길이의 문자열
    • NUMERIC(p,s) : 고정 소수점 실수. p는 소수점 제외 숫자 길이, s는 소수점 이하 숫자 길이
    • FLOAT(n) : 길이가 n인 부동 소수점 실수
      ex. NUMERIC(5,3) = 35.764 / FLOAT(5) = 357.23
    • DATE : 연,월,일로 표현되는 날짜
    • TIME : 시,분,초로 표현되는 시간
    • DATETIME : 날짜와 시간
  • 속성 관련 부가 명령어
    • NOT NULL : 해당 속성 값 NULL 불가
    • UNIQUE : 중복 X, 고유값
    • DEFAULT 기본값 : 입력하지 않으면 기본값으로 설정됨
    • CHECK 체크조건 : 체크 조건이 맞는지 확인
CREATE TABLE tbname(
  id CHAR(7) NOT NULL UNIQUE
  name VARCHAR(20) NOT NULL,
  grade INT NOT NULL DEFAULT 1 CHECK(grade <= 4),
    
  PRIMARY KEY (id));

🚀 ALTER

기본 문법 : ALTER TABLE 테이블이름 [ADD, DROP COLUMN, MODIFY 등]

🚀 DROP

기본 문법 : DROP TABLE 테이블이름

💫 DML

: SELECT, INSERT, UPDATE, DELETE

🚀 SELECT

SELECT [ALL(*)|DISTINCT] 속성 이름()
FROM 테이블 이름()
[WHERE 검색조건()]
[GROUP BY ... HAVING ... ORDER BY ...]
  • 검색 SQL의 내부 실행 순서
    FROM - WHERE - [GROUP BY - HAVING - ORDER BY] - SELECT

    • SELECT가 가장 마지막에 실행됨 !
  • WHERE절 주요 연산자

    연산자예시
    =, <>, <, <=, >, >=price < 20000
    BETWEENprice BETWEEN 1000 AND 200000
    IN, NOT INprice IN (10000, 20000, 300000)
    LIKEname LIKE '김%' (김으로 시작함)
    IS NULL, IS NIT NULLname IS NOT NULL
    AND, OR, NOT(price < 20000) AND (name LIKE '김%')
  • 와일드 문자 종류

    와일드 문자의미예시
    +문자열을 연결'안녕' + '하세요' : '안녕하세요'
    %0개 이상의 문자열과 일치'%구리%' : '구리'를 포함하고 있는 문자열
    [ ]1개 문자와 일치'[0-10]%' : 0-10사이 숫자로 시작하는 문자열
    [^]1개 문자와 불일치'[^0-10]%' : 0-10사이 숫자로 시작하지 않는 문자열
    _특정 위치의 1개 문자와 일치'_리%' : 두 번째 위치에 '리'가 들어가는 문자열
  • 집계 함수 종류

    집계 함수문법예시
    SUMSUM([* or DISTINCT] 속성이름)SUM( * )
    AVGAVG([* or DISTINCT] 속성이름)AVG( price )
    COUNTCOUNT({ ( [* or DISTINCT] 속성이름 ) or * } )COUNT( * )
    MAXMAX([* or DISTINCT] 속성이름)MAX( price )
    MINMIN([* or DISTINCT] 속성이름)MIN( price )
  • GROUP BY / HAVING

    • GROUP BY 속성이름 으로 속성 값에 대해 데이터를 그룹화,
      HAVING 검색 조건(들) 으로 그룹화된 데이터에 검색 조건 적용
-- 고객 별로 주문 도서의 총 수량을 구하라. 단, 두 권 이상 구매한 고객만 구하라.
SELECT custid, COUNT(*) AS 도서수량
FROM Orders
GROUP BY custid
HAVING count(*) >= 2;
  • ORDER BY
    • ORDER BY 속성이름 [ASC (default) | DESC] : 속성 이름에 대해 정렬
    • ASC는 기본값
-- 도서를 이름순으로 검색하라
SELECT *
FROM Book
ORDER BY bookname;

🚀 INSERT

기본 문법 : INSERT INTO 테이블 이름[(속성리스트)] VALUES (값 리스트);

-- book 테이블에 새로운 도서 '구리구리'을 입력하시오. 
INSERT INTO (book_id, bookname, publisher, price)
VALUES (4123, '구리구리', '구리출판사', 2000000000);

🚀 UPDATE

기본 문법 : UPDATE 테이블 이름 SET 속성이름1 = 값 [, 속성이름2 = 값2 ...] [WHERE 검색조건];

-- book 테이블에서 제목이 '구리구리'인 도서의 가격을 1000원으로 변경하시오
UPDATE book 
SET price = 1000
WHERE bookname = '구리구리';

🚀 DELETE

기본 문법 : DELETE FROM 테이블 이름 [WHERE 검색조건];

-- book 테이블에서 book_id가 4123인 도서를 삭제하시오.
DELETE FROM book
WHERE book_id = 4123;

😋😋 SQL 문법 너무 재밌음
다음 포스팅은 JOIN에 대해서 할 예정

좋은 웹페이지 즐겨찾기