MySQL_02 SQL 기본

aggapang·2025년 5월 19일

kb IT's Your Life

목록 보기
15/20
  • 관계형 데이터베이스에서 사용되는 언어
  • 다른 시스템으로 이식성이 좋음
  • 대화식 언어

주석

  • 한줄 : -- 주석 내용
  • 여러줄 : /* 주석 내용 */

DB, Table, 열이름 조회

  • SHOW DATABASES; : 현재 서버에 있는 DB 출력
  • SHOW TABLES; : 현재 서버에 있는 TABLE 이름만 출력
  • DESC 테이블명; : 테이블의 열이 무엇인지 출력 (DESCRIBE)
  • USE 데이터베이스명; : 쿼리 실행을 할 데이터 베이스 지정

SQL

용어DDL (Data Definition Language)DML (Data Manipulation Language)DCL (Data Control Language)TCL (Transaction Control Language)
역할데이터 항목 정의데이터 조작DBMS 제어 (계정관리, 백업/복원)트랜잭션 제어
SQLcreate, alter, drop, truncateinsert, select, update, deletegrant, revoke, backup, restorecommit, rollback

조작 CRUD

조작CreateReadUpdateDelete
sqlinsertselectupdatedelete

SQL 분류

DML

  • Data Manipulation Language 데이터 조작 언어
  • 데이터 조작(선택, 삽입, 수정, 삭제)
  • DML 구문의 대상은 테이블의 행
  • SELECT, INSERT, UPDATE, DELETE
  • 트랜잭션이 발생하는 SQL도 DML에 속함

USE 구문

USE 데이터베이스명;

  • 사용할 데이터베이스 지정
  • Workbench에서 직접 선택 가능
    • 원하는 데이터베이스 오른쪽 버튼🖱️ OR 더블클릭 -> [Set as Default Schema] 선택

SELECT

SELECT * FROM 테이블명
SELECT 열이름 FROM 테이블명

  • 테이블 값 출력

INSERT

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

  • 기본 키가 중복으로 입력하면 오류!
    INSERT IGNORE : 에러 발생해도 다음 구문으로 넘어가게 처리
  • auto_increment : 자동으로 값 입력
    • insert할때 null 값으로 지정하면 자동으로 값 입력
    • PRIMARY KEY 또는 UNIQUE 일 때만 사용 가능

UPDATE

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

  • 안전모드에서 키 컬럼이 아닌 컬럼으로 수정 시 에러발생
    • Edit > preferences.. > SQL Editor > Othor 의 safe updates 체크 해제
  • WHERE 절 생략하면 테이블의 전체 행 변경됨
  • ON DUPLICATE KEY UPDATE : 기본키가 중복되면 데이터 수정하도록 함

DELETE

DELETE FROM 테이블이름 WHERE 조건;

  • WHERE 절 생략되면 전체 데이터 삭제
  • LIMIT로 삭제 행 수 지정 가능
  • 트랜잭션 로그 기록 작업 때문에 DDL(DROP,TRUNCATE)보다 속도가 느림
    • DROP : 테이블

SELECT

SELECTFROM 테이블명
    WHERE 조건
    GROUP BY 정렬
    HAVING
    ORDER BY

SELECT

  • * : 전체 조회
  • 특정 열만 지정해서 조회할 수 있음
    • AS : 열 이름 별칭 설정 가능
  • DISTNCT : 중복 제거

WHERE

WHERE 조건식
-> 특정한 조건을 통해 원하는 데이터만 조회

  • 연산자
    • 조건 연산자 (<>,!=,..등)
      • <>,!= 모두 같지 않음을 의미
        • <>은 표준 sql
    • 관계 연산자 (NOT,OR,AND)
  WHERE city <> '서울' AND num < 60 
  • BETWEEN A AND B : A이상 B 이하의 값일때
  WHERE num >= 5 AND num <= 10
  WHERE num BETWEEN 5 AND 10
  • IN() : IN 안에 있는 값이랑 같을 때
  WHERE city IN('서울','파리','런던')
  • LIKE
    • % : 무엇이든 허용
    • _ : 글자수 하나와 매치
  WHERE name LIKE '김%'; -- 첫글자가 김인 값
  WHERE name LIKE '김__'; -- 첫글자가 김이면서 3글자인 값 (__ : 두글자를 의미)                           
  • 서브쿼리
    • 쿼리 안에 또 다른 쿼리문
    • 여러개 조건을 설정할 수 있음
    • ANY
      • 서브쿼리의 결과 중 하나만 만족해도 가능
      • SOME과 동일한 의미
      • = ANY(서브쿼리)IN(서브쿼리)와 동일한 의미
    • ALL
      • 서브쿼리의 결과 모두를 만족해야함
    • SOME
    • 비교 조건의미
      > ANY, >= ANY최소값보다 경우
      < ANY, <= ANY최대값보다 작은 경우
      = ANYIN과 같은 경우
      > ALL, >= ALL최대값보다 경우
      < ALL, <= ALL최소값보다 작은 경우

ORDER BY

ORDER BY 열이름 (ASC or DESC)

  • 결과물에 영향을 미치지 않고 출력되는 순서 정렬
  • 기본 : ASC 오름차순
  • DESC 내림차순
  • 여러개 열 지정 가능 앞에서부터 우선순위

LIMIT

  • LIMIT n; : 상위 n개만 출력
  • LIMIT 시작, n;
  • LIMIT n OFFSET 시작;

GROUP BY

GROUP BY 특정열

  • 그룹으로 묶어주는 역할
  • 직계함수와 함께 사용
  • 함수명설명
    AVG( )평균
    MIN( )최소값
    MAX( )최대값
    COUNT( )행의 개수
    COUNT(DISTINCT)행의 개수를 센다(중복제거)
    STDEV( )표준편차
    VAR_SAMP( )분산
    • AS로 읽기 좋게 별칭 만들어 주는게 좋음

HAVING

  • 집계 함수에 대해서 조건을 제한
  • GROUP BY 다음에 나와야함!!!!!(순서 중요)
SELECT userID AS '사용자', SUM(price*amount) AS '종구매액'
FROM buytbl
GROUP BY userID
HAVING SUM(price * amount) > 1000;

ROLLUP

  • GROUP BY로 그룹된 열마다 중간 합계와 총합 제공

DDL

  • Data Definition Language 데이터 정의 언어
  • 데이터베이스 개체(데이터베이스, 테이블, 뷰, 인덱스)를 생성/삭제/변경
  • CREATE, DROP, ALTER
  • 트렌젝션 발생 X
  • ROLLBACK, COMMIT 사용 불가

CREATE

  • CREATE TABLE 새로운 테이블 (SELECT 복사할 열 FROM 기존테이블)
    • 테이블을 복사
    • PK나 FK 같은 제약 조건 복사 X

DCL

  • Data control Language 데이터 제어 언어
  • 사용자에게 권한을 부여하거나 빼앗을 때 주로 사용
  • GRANT/REVOKE

0개의 댓글