정리하고기록하자

SQL 본문

Database - 데이터베이스 ( DB )

SQL

정리하고기록하자 2022. 6. 24. 22:32
반응형

SQL

SQL 이란 Structrued Query Language 이고, 데이터베이스에서 데이터를 저장하거나 얻기 위해서 사용하는 표준화된 언어이다.

Mysql 공식 매뉴얼

SQL 언어의 특성

  • SQL은 대소문자를 가리지 않는다.
  • SQL 명령은 반드시 세미콜론(;)으로 끝나야 한다.
  • 고유의 값은 따옴표('')로 감싸준다.
  • SQL에서 객체를 나타낼 때는 백틱(``) 으로 감싸준다.
  • 주석은 일종의 도움말로, 주석 처리된 문장은 프로그램에서 동작하지 않는다. ( 한 줄 주석은 문장 앞에 -- 를 붙여서 사용한다. 여러줄 주석은 /* */ 으로 감싸준다

SQL 문법 

DML ( Data Manipulation Language, 데이터 정의 언어 )

  • select
/* 모든 컬럼 조회 */
SELECT * FROM 테이블명
/* 필요한 컬럼 조회 */
SELECT 컬럼명, 컬럼명, 컬럼명 FROM 테이블명

/* SELECT 문법 순서 */
1. SELECT
2. FROM
3. WHERE
4. GROUP BY
5. HAVING
6. ORDER BY
// 쿼리 실행 순서는 FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY
  • Insert
Insert into 
	테이블명
values (
	컬럼 명
);
  • update
/* 데이터 내용 수정 */
UPDATE 테이블명 SET 컬럼명 = '변경할 값' WHERE 조건;
  • delete
/* 데이터 삭제 */
DELETE FROM 테이블명 WHERE 조건;

DDL ( Data Definition Language,  데이터 조작 언어 )

  • create
/* 테이블 생성 */
CREATE TABLE 테이블명 (
컬럼명 타입 조건 (NOT NULL 등..) ,
컬럼명 타입 조건 (NOT NULL 등..) ,
컬럼명 타입 조건 (NOT NULL 등..) ,
PRIMARY KEY ~ );
  • alter
/* 컬럼 추가 */
/* ALTER TABLE 테이블명 ADD COLUMN 컬럼명 타입 NOT NULL; */
ALTER TABLE A ADD COLUMN exCoulmn varchar(20) NOT NULL;

/* 컬럼 변경 */
/* ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 타입 NOT NULL; */
ALTER TABLE A MODIFY COLUMN exCoulmn varchar(10) NOT NULL;

/* 컬럼 이름까지 변경 */
/* ALTER TABLE 테이블명 CHANGE COLUMN 컬럼명 변경할컬럼명 타입 NOT NULL; */
ALTER TABLE A CHANGE COLUMN exCoulmn exCoulmn2 varchar(10) NOT NULL;

/* 컬럼 삭제 */
/* ALTER TABLE 테이블명 DROP COLUMN 컬럼명; */
ALTER TABLE A DROP COLUMN exCoulmn;

/* 테이블 이름 변경 */
/* ALTER TABLE 테이블명 RENAME 변경할테이블명; */
ALTER TABLE A RENAME AAA;
  • drop
/* 컬럼 삭제 */
DROP TABLE 테이블명;
  • truncate
/* 테이블 초기화 */
TRUNCATE TABLE 테이블명;
  • rename
/* 테이블 이름 변경 */
RENAME TABLE 테이블명 TO 변경할테이블명;

/* 단일 테이블 이름 변경 */
ALTER TABLE 테이블명 RENAME 변경할테이블명;

/* 다수 테이블 이름 변경 */
RENAME TABLE 테이블명 TO 변경할테이블명,
			 테이블명 TO 변경할테이블명,
             테이블명 TO 변경할테이블명;
             
/* 다른 데이터베이스로 테이블 이동 */
/* RENAME TABLE DB명.테이블명 TO 이동할DB명.테이블명; */
RENAME TABLE A_DB.A_TABLE TO B_DB.A_TABLE;

DCL ( Data Control Language, 데이터 제어 언어 )

  • grant
/* 새로운 계정을 생성하고 권한을 부여하는 GRANT 쿼리 */
GRNAT 권한종류 ON 대상 TO 계정명 IDENTIFIED BY 암호 [WITH GRANT OPTION];

/* 계정을 생성 후에는 변경된 내용을 적용하기 위해 아래의 쿼리를 실행해야 한다 */
FLUSH privileges;

권한 종류

권한 내용  
CREATE, ALTER, DROPO 테이블 생성, 변경, 삭제 일반 사용자, 관리자
SELECT, INSERT, UPDATE, DELETE 테이블 조회,입력,수정,삭제
RELOAD 권한 부여된 내용을 리로드 관리자
SHUTDOWN 서버 종료 작업 실행
ALL 모든 권한 허용 관리자와 동급
USAGE 권한 없이 계정만 생성  

대상

  • *.* : 서버의 모든 데이터베이스, 테이블에 대한 접근을 허용한다.
  • 데이터베이스명.* : 특정 데이터베이스의 모든 내용에 대한 접근을 허용한다.
  • 데이터베이스명.테이블명 : 특정 데이터베이스의 특정 테이블에 대한 접근을 허용한다.

계정명 : MySQL 서버에 접속시 지정하는 이름이다. ( 계정명과 호스트로 구성 )

암호 : IDENTIFIED BY 구문을 넣지 않으면 비밀번호 없는 계정을 생성한다.

  • revoke
/* 데이터베이스 사용자에게 권한을 취소 한다. */
REVOKE [권한종류] ON DB.테이블명 FROM 유저ID@호스트

JOIN

INNER JOIN

  • 교집합으로 기준 테이블과 JOIN 테이블의 중복된 값을 보여준다.
SELECT 
    A.a,
    A.b,
    B.c
FROM A 
INNER JOIN B
ON A.a = B.a;

/* INNER JOIN 대신에 JOIN 을
   ON 대신 WHERE 을 사용할 수 있다. */

LEFT OUTER JOIN

  • 기준테이블값과 조인테이블과 중복된 값을 보여준다. ( 왼쪽테이블 기준으로 JOIN을 한다고 생각하면 편하다 )
SELECT
    A.a,
    A.b,
    B.c
FROM A
LEFT OUTER JOIN B
ON A.a = B.a

 

RIGHT OUTER JOIN

  • LEFT JOIN과는 반댈로 오른쪽 테이블 기준으로 JOIN 하는 것이다
SELECT
    A.a,
    A.b,
    B.c
FROM A
RIGHT OUTER JOIN B
ON A.a = B.a

 

FULL OUTER JOIN

  • 합집합을 말한다. A와 B 테이블의 모든 데이터가 검색된다
SELECT
    A.a,
    A.b,
    B.c
FROM A
FULL OUTER JOIN B
ON A.a = B.a

CROSS JOIN

  • 모든 경우의 수를 전부 표현해주는 방식이다. ( ex : A가 3개, B가 3개면 총 3*3 = 9개의 데이터가 검색된다.
SELECT
    A.a,
    A.b,
    A.c,
    B.a,
    B.b,
    B.c
FROM A
CROSS OUTER JOIN B
ON A.a = B.a
반응형