-
SQL (Query문)스프링 2023. 4. 14. 23:46
Database : Database를 한 마디로 정의하면 ‘데이터의 집합’ 이라고 할 수 있습니다.
DBMS : Database를 관리하고 운영하는 소프트웨어를 의미합니다. (Database Management System)
RDBMS : RDBMS는 ‘Relational DBMS’의 약자로 관계형 데이터베이스라고 불립니다.
RDBMS는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있습니다.
열(column) 열(column) 열(column) 열(column) 열(column) 행(row) 행(row) 사용할 RDBMS
H2 : H2를, 앞으로 연습용으로 사용할 것입니다. 인메모리 DB란 서버가 작동하는 동안에만 내용을 저장하고, 서버가 작 동을 멈추면 데이터가 모두 삭제되는 데이터베이스를 말합니다.
MySQL : MySQL은 우리가 서비스를 배포할 때 사용할 데이터베이스입니다.
SQL
SQL은 ‘Structured Query Language’ 의 약자로 RDBMS에서 사용되는 언어입니다. 수 많은 정보를 Database에서 조작하고 관리하기 위해서는 SQL 언어를 사용해야합니다.
DDL : ‘Data Definition Language’ 의 약자로 테이블이나 관계의 구조를 생성하는데 사용합니다 (테이블 생성)
DCL : ‘Data Control Language’ 의 약자로 데이터의 사용 권한을 관리하는데 사용합니다.(권한주기)
DML : ‘Data Manipulation Language’ 의 약자로 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용합니다.
DDL : ‘Data Definition Language’ 의 약자로 테이블이나 관계의 구조를 생성하는데 사용합니다 (테이블 생성)
CREATE : 새로운 데이터베이스 및 테이블을 생성해 줍니다.
CREATE DATABASE 데이터베이스이름;
CREATE TABLE 테이블이름
(
필드이름1 필드타입1,
필드이름2 필드타입2,
...
);ALTER : 데이터베이스와 테이블의 내용을 수정할 수 있습니다.
ALTER TABLE 테이블이름 ADD 필드이름 필드타입;
ALTER TABLE 테이블이름 DROP 필드이름;
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입;DROP : 데이터베이스와 테이블을 삭제할 수 있습니다. 데이터 및 테이블 전체를 삭제합니다.
DROP DATABASE 데이터베이스이름;
DROP TABLE 테이블이름;TRUNCATE : 데이터베이스와 테이블을 삭제할 수 있습니다. 최초 테이블이 만들어졌던 상태 즉, 컬럼값만 남깁니다.
TRUNCATE DATABASE 데이터베이스이름;
TRUNCATE TABLE 테이블이름;
DCL : ‘Data Control Language’ 의 약자로 데이터의 사용 권한을 관리하는데 사용합니다.
GRANT : 사용자 또는 ROLE에 대해 권한을 부여할 수 있습니다.
GRANT [객체권한명] (컬럼)
ON [객체명]
TO { 유저명 | 롤명 | PUBLC} [WITH GRANT OPTION];
//ex
GRANT SELECT ,INSERT
ON mp
TO scott WITH GRANT OPTION;REVOKE : 사용자 또는 ROLE에 부여한 권한을 회수할 수 있습니다.
REVOKE { 권한명 [, 권한명...] ALL}
ON 객체명
FROM {유저명 [, 유저명...] | 롤명(ROLE) | PUBLIC}
[CASCADE CONSTRAINTS];
//ex
REVOKE SELECT , INSERT
ON emp
FROM scott
[CASCADE CONSTRAINTS];
DML : ‘Data Manipulation Language’ 의 약자로 테이블에 데이터를 검색, 삽입, 수정, 삭제하는데 사용합니다.
INSERT : 테이블에 새로운 row를 추가할 수 있습니다.
INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...) VALUES(데이터값1, 데이터값2, 데이터값3, ...);
INSERT INTO 테이블이름 VALUES(데이터값1, 데이터값2, 데이터값3, ...);SELECT : 테이블의 row를 선택할 수 있습니다.
SELECT 필드이름 FROM 테이블이름 [WHERE 조건];
UPDATE : 테이블의 row의 내용을 수정할 수 있습니다.
UPDATE 테이블이름 SET 필드이름1=데이터값1, 필드이름2=데이터값2, ... WHERE 필드이름=데이터값;
DELETE : 테이블의 row를 삭제할 수 있습니다.
DELETE FROM 테이블이름 WHERE 필드이름=데이터값;
SQL 연습하기
AUTO_INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성해 줍니다.
CREATE TABLE 테이블이름
(
필드이름 필드타입 AUTO_INCREMENT,
// id bigint AUTO_INCREMENT,
...
);NOT NULL : 해당 필드는 NULL 값을 저장할 수 없게 됩니다.
CREATE TABLE 테이블이름
(
필드이름 필드타입 NOT NULL,
...
);UNIQUE : 해당 필드는 서로 다른 값을 가져야만 합니다.
CREATE TABLE 테이블이름
(
필드이름 필드타입 UNIQUE,
...
);PRIMARY KEY : 해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 됩니다.
CREATE TABLE 테이블이름
(
필드이름 필드타입 PRIMARY KEY,
...
);FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장해 줍니다.
(FK 를 가지는 테이블이 참조하는 기준 테이블의 열은 반드시 PK, UNIQUE 제약조건이 설정되어 있어야 합니다.)
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...
FOREIGN KEY(필드이름)
REFERENCES 테이블이름(필드이름)
);CASCADE : FOREIGN KEY 로 연관된 데이터를 삭제,변경할 수 있습니다.
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...
FOREIGN KEY(필드이름)
REFERENCES 테이블이름(필드이름) ON DELETE CASCADE
//ON UPDATE CASCADE
);'스프링' 카테고리의 다른 글
스프링부트 (타임스탬프,오전 1시 마다 가격 업데이트) (0) 2023.04.20 스프링 부트 (메모장만들기) * (0) 2023.04.17 IoC 와 DI 용어 이해하기 (0) 2023.04.15 스프링 ㅡMVC (Response, Request) (0) 2023.04.15 JPA (Java와 DB 연동) (0) 2023.04.15