❓SQL이란
SQL은 Structured Query Language의 약자로, 관계형 데이터베이스에서 데이터를 관리하고 조작하는 데 사용되는 프로그래밍 언어입니다.
SQL의 역사는 1970년대 초에 시작되었습니다.
IBM의 도널드 챔버린과 레이몬드 보이스가 관계형 데이터베이스 관리 시스템(RDBMS)인 System R을 개발하면서 SQL이 처음 개발되었습니다.
1980년대 중반부터는 ANSI(American National Standards Institute)에서 SQL 표준을 제정하기 시작했습니다. 이로 인해 SQL은 다양한 RDBMS에서 사용되는 표준 언어가 되었습니다.
⚡SQL문법의 종류
📌DDL (Data Definition Language)SQL
데이터베이스에서 데이터를 정의하거나 제어하는 데 사용되는 SQL 명령어의 하나입니다.
DDL은 데이터베이스 구조를 정의하고 변경하는 데 사용되며, 주로 데이터베이스, 테이블, 뷰, 인덱스 등을 생성, 수정, 삭제하는 데 사용됩니다.
🔎CREATE
데이터베이스 객체(테이블, 뷰 , 인덱스 등)를 생성하는 데 사용됩니다.
CREATE SCHEMA
CREATE SCHEMA는 스키마를 정의하는 명령문입니다.
👉스키마의 식별을 위해 스키마 이름과 소유권자나 허가권자를 정의합니다.
CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id;
예시))사용자_id가 samsmago이고 스키마가 "name"을 정의하는 SQL문은 다음과 같습니다.
CREATE CCHEMA name AUTHORIZATION samsmago;
CREATE DOMAIN
CREATE DOMAIN은 SQL에서 사용자 정의 데이터형을 만드는 데 사용되는 명령어입니다.
👉데이터베이스 테이블의 열에 대한 제약 조건을 정의하는 데 사용됩니다.
CREATE DOMAIN domain_name data_type
[DEFAULT default_expr]
[CHECK constraint_expr]
예시))'성별'을 '남'또는 '여'와 같이 정해진 1개의 문자로 표현되는 도메인 gender를
정의하는 SQL문은 다음과 같습니다.
CREATE DOMAIN gender CHAR(1)
DEFAULT "남"
CHECK (VALUE IN ('남', '여'))
CREATE TABLE
CREATE TABLE은 SQL에서 테이블을 만들 때 정의하는 명령문입니다.
👉새로운 데이블을 만들고, 해당 테이블의 열(필드)및 제약 조건을 정의할 수 있습니다.
CREATE TABLE table_name (
column1 datatype1 [constraint1],
column2 datatype2 [constraint2],
...
[table_constraint]
);
예시))'이름','학번','전공','나이'로 구성된 학생 테이블을 정의하시오
CREATE TABLE 학생 (
이름 VACHAR(15) NOTNULL,
학번 CHAR(8),
전공 CHAR(5),
나이 INTEGER CHECK (age >= 18),
);
CREATE VIEW
CREATE VIEW는 하나 이상의 테이블을 기반으로 새로운 가상 테이블인 VIEW를 만드는 명령문입니다.
👉뷰는 실제 데이터를 저장하지 않으며, 쿼리를 통해 데이터를 검색하는 데 사용됩니다.
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
예시))고객 테이블에서 '주소'가 '안산시'인
고객들의 '성명'과 '전화번호'를 '안산고객'이라는 뷰로 정의하시오
CREATE VIEW 안산고객 AS
SELECT 성명, 전화번호, ...
FROM 고객
WHERE 주소 = '안산시';
CREATE INDEX
CREATE INDEX문은 데이터베이스에서 인덱스를 생성하는 데 사용됩니다.
👉인덱스는 검색 조건에 맞는 데이터를 빠르게 찾을 수 있도록 데이터를 정렬하고 구조화합니다.
CREATE INDEX index_name ON table_name (column1, column2, ...);
예시))고객 테이블에서 UNQUE한 특성을 같는 '고객번호'속성에 대해
내림차순으로 정렬하여 고객번호_IDX라는 이름으로 인덱스를 정의하시오
CREATE UNQUE INDEX 고객번호_IDX
ON 고객 (고객번호 DESC);
/*ASC 오름차순*/
/*DESC 내림차순*/
🔎ALTER
데이터 베이스 객체를 수정하는 데 사용됩니다.
📍예시))데이블의 칼럼을 추가, 수정, 삭제할 때 사용
ALTER TABLE
ALTER TABLE문은 기존 테이블의 구조를 변경하는 데 사용됩니다.
👉테이블의 새로운 열을 추가하거나 삭제하거나, 기존 열의 데이터 유형을 변경하거나, 기본값을 설정하거나, 키를 추가 또는 삭제하거나, 제약 조건을 추가 또는 삭제할 수 있습니다.
ALTER TABLE table_name action;
열추가
ALTER TABLE table_name ADD COLUMN column_name data_type;
열삭제
ALTER TABLE table_name DROP COLUMN column_name;
열 이름 변경
ALTER TABLE table_name RENAME COLUMN old_name TO new_name;
열 데이터 유형 변경
ALTER TABLE table_name ALTER COLUMN column_name TYPE new_data_type;
기본값 추가
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_value;
키 추가
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column_name);
키 삭제
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
🔎DROP
데이터베이스 객체를 삭제하는 데 사용됩니다.
테이블 삭제
DROP TABLE table_name;
뷰 삭제
DROP VIEW view_name;
인덱스 삭제
DROP INDEX index_name;
함수 삭제
DROP FUNCTION function_name;
🔎TRUNCATE
테이블의 모든 데이터를 삭제하는 데 사용됩니다. DROP과는 달리 데이블 구조는 유지됩니다.
🔎RENAME
데이터베이스 객체의 이름을 변경하는 데 사용됩니다.
🔎COMMENT
데이터베이스 객체에 대한 주석을 추가하는 데 사용됩니다.
📌DML(Data Manipulation Language) SQL
데이터를 검색, 삽입, 업데이트, 삭제하는 SQL 쿼리를 말합니다. DML쿼리는 데이터베이스의 테이블에서 데이터를 조작하는 데 사용됩니다.
🔎SELECT문
SELECT문은 데이터베이스에서 데이터를 검색하는 데 사용됩니다. SELECT문을 사용하여 데이버베이스에서 특정 열의 데이터를 반환하거나 조건에 따라 데이터를 필터링할 수 있습니다.
🔎INSERT문
INSERT문은 새로운 데이터를 데이터베이스에 삽입하는 데 사용됩니다., INSERT문을 사용하여 데이블에 새로운 행을 추가할 수 있습니다.
INSERT INTO 테이블명([속성명1, 속성명2, ...])
VALUES(데이터1, 데이터2, ...)
🔎UPDATE문
UPDATE문은 데이터베이스에서 기존 데이터를 업데이트하는 데 사용됩니다. UPDATE문을 사용하여 테이블의 특정 행을 업데이트하거나 조건에 따라 여러 행을 일괄적으로 업데이트할 수 있습니다.
UPDATE 테이블명
SET 속성명 = 데이터[,송성명 = 데이터, ...]
[WHERE 조건]
🔎DELETE문
DELETE문은 데이터베이스에서 데이터를 삭제하는 데 사용됩니다. DELETE문을 사용하여 테이블에서 특정 행을 삭제하거나 조건에 따라 여러 행을 일괄적으로 삭제할 수 있습니다.
DELETE
FROM 테이블명
[WHERE 조건]
📌DCL (Data Control Language) SQL
데이터베이스 사용 권한을 관리하는 데 사용되는 SQL쿼리입니다. DCL은 데이터 베이스 사용자에 대한 권한을 설정하거나 변경하고, 데이터 베이스의 보안을 유지하는데 사용됩니다.
🔎GRANT문
데이터베이스 사용자에게 특정 데이터 베이스개체(테이블, 뷰 등)에 대한 액세스 권한을 부여합니다.
GRANT 사용자 등급 TO 사용자_ID_리스트 [IDENTIIFED BY 암호]
🔎REVOKE문
데이터베이스 사용자의 특정 데이터베이스 개체 엑세스 권한을 취소합니다.
REVOKE 사용자 등급 FROM 사용자_ID_리스트
🔎DENY문
데이터베이스 사용자에게 특정 데이터베이스 개체 액세스를 거부합니다.
📌TCL (Transaction Control Language) SQL
데이터베이스에서 트랜잭션을 관리하는 데 사용되는 SQL쿼리입니다. TCL은 데이터 베이스의 트랜잭션의 처리와 관리를 담당하며, 데이터의 무결성과 일관성을 유지하는데 중요한 역할을 합니다.
트랜잭션이란❓
👉데이터베이스에서 수행되는 작업의 단위를 말합니다
🔎트랜잭션은 다믕과 같은 특징을 가지고 있습니다.
➡원자성 : 모든 작업이 완전하게 수행되지 않는 다면 전체 트랜잭션을 롤백하여 이전 상태로 복원
➡일관성 : 트랜잭션이 실행된 후에도 데이터베이스의 제약조건이 계속 유지됨
➡격리성 : 여러 개의 트랜잭션이 동시에 실행될 때 각 트랜잭션은 다른 트랜잭션과 격리되어 수행됩니다.
➡지속성 : 트랜잭션이 성공적으로 완료되면, 해당 트랜잭션에 의해 변경된 데이터는 영구적으로 유지됨
🔎COMMIT
트랜잭션의 모든 변경 사항을 데이터베이스에 반영하고, 트랜잭션을 종료합니다.
🔎ROLLBACK
트랜잭션을 취소하고, 트랜잭션이 시작되기 전 상태로 되돌립니다.
🔎SAVEPOINT
트랜잭션 내에서 저장 지점을 설정하고, 이후 ROLLBACK문에서 저장 지점 이전 상태로 트랜잭션을 되돌릴 수 있습니다.
728x90
반응형