티스토리 뷰

SQL

[SQL] SQL 기본 문법

poopooreum 2024. 12. 30. 11:41
반응형

1. 데이터 정의 언어 (DDL: Data Definition Language)

데이터베이스의 구조를 정의하는 명령

1.1 CREATE

새로운 데이터베이스, 테이블, 인덱스 등을 생성

CREATE DATABASE my_database;
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    age INT,
    email VARCHAR(100)
);

1.2 ALTER

테이블의 구조를 변경

ALTER TABLE users ADD COLUMN phone_number VARCHAR(15);
ALTER TABLE users DROP COLUMN age;

1.3 DROP

데이터베이스나 테이블을 삭제

DROP TABLE Users
DROP DATABASE my_databse

 


2. 데이터 조작 언어(DML: Data Manipulation Language)

데이터를 추가, 조회, 수정, 삭제하는 명령어

2.1 INSERT

데이터를 추가

INSERT INTO users(name,age, email) VALUES('POOREUM', 23, 'pooreum@naver.com')

2.2 SELECT

데이터를 조회

-- 모든 열 조회
SELECT * FROM users

-- 특정 열 조회
SELECT name FROM users

-- 조건부 조회
SELECT name FROM users WHERE age > 22

-- 정렬
SELECT * FROM users ORDER BY age DESC

-- 데이터 제한
SELECT * FROM users LIMIT 10

2.3 UPDATE

데이터를 수정

UPDATE users
SET email = 'pooreum02@google.com'
WHERE id = 1

2.4 DELETE

데이터를 삭제

-- 조건부 삭제
DELETE FROM users WHERE id = 1

-- 모두 삭제
DELETE FROM users

 


3. 데이터 제어 언어(DCL: Data Control Language)

데이터베이스 사용자와 권한을 관리

3.1 GRANT

사용자에게 권한 부여

GRANT SELECT, INSERT ON users to 'pooreum'

3.2 REVOKE

사용자의 권한 회수

REVOKE INSERT ON users FROM 'pooreum'

 


4. 트랜잭션 제어 언어(TCL: Transacation Control Language)

트랜잭션의 상태를 제어

4.1 COMMIT

트랜잭션 작업을 확정

COMMIT

4.2 ROLLBACK

트랜잭션 작업을 취소

ROLLBACK

4.3 SAVEPOINT

트랜잭션 중간 상태를 저장

SAVEPOINT 'savepoint_name'

-- 특정 SAVEPOINT로 롤백
SAVEPOINT TO 'savepoint_name'

 


조건 및 집계 함수

5.1 조건절

  • WHERE: 조건을 지정
  • AND, OR: 조건 조합
  • IN: 여러 값 중 하나인지 확인
  • LIKE: 패턴 매칭
  • BETWEEN: 범위 지정
SELECT * FROM WHERE age BETWEEN 20 AND 30 

-- pooreum으로 시작하는 이름 
SELECT * FROM WHERE name LIKE 'pooreum%'

5.2 집계 함수

  • COUNT : 행 개수
  • SUM : 합계
  • AVG : 평균
  • MAX(), MIN : 최댓값, 최솟값
SELECT COUNT(*) FROM users 
SELECT AVG(age) FROM users WHERE age > 17 
SELECT MAX(age), MIN(age) FROM users

6. 조인(JOIN)

6.1 INNER JOIN

공통된 데이터를 가져옴

SELECT orders.id, users.name
FROM orders
INNER JOIN users ON orders.user_id = users.id

6.2 LEFT JOIN

왼쪽 테이블의 모든 데이터와 공통된 데이터를 가져옴

SELECT orders.id, users.name
FROM orders
LEFT JOIN users ON orders.user_id = users.id

6.3 RIGHT JOIN

오른쪽 테이블의 모든 데이터와 공통된 데이터를 가져옴

SELECT orders.id, users.name
FROM orders
RIGHT JOIN users ON orders.user_id = users.id

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함