-
[DBMS] SQL1 - Schema definition & Update & Insert 위주로개발 이야기/DB(데이터베이스) 2024. 10. 18. 13:24
본 글은 https://rebro.kr/147와 한양대학교 차제혁 교수님의 데이터베이스시스템및응용 수업을 기반으로 작성되었습니다.
수업 중에 Postsql을 사용하여 관련된 내용도 간략히 정리하였습니다SQL이란?
SQL은 Structured Query Language의 줄임말로, 관계형 데이터베이스 시스템(RDBMS)에서 데이터를 관리, 처리하기 위해 설계된 프로그래밍 언어이다.
1970년대 IBM에서 SEQUEL(Structured English Query Language)이라는 이름으로 처음 개발되었으며, 후에 Structured Query Language로 다시 이름이 지어졌다.
SQL 문법의 종류는 다음 세 가지로 분류된다.
- Data Definition Language (DDL) : Schema definition (CREATE, ALTER, RENAME, DROP,...)
- Data Manipulation Language (DML) : SELECT, INSERT, UPDATE, DELETE
- Data Control Language (DCL) : Security, access controls
DML은 데이터를 관리하기 위한 언어이고, DDL은 릴레이션을 정의하기 위한 언어이며, DCL은 사용자별로 데이터를 관리하고 접근하는 권한을 다루는 언어이다.SQL의 특징
1. Declartive!
선언형이다. 즉, 무엇을 원하는지 고르면 되고, 그 과정에서는 사용자가 데이터가 어떻게 처리되는지는 알 필요가 없다.
2. Implented widely & General pupose
릴레이션(relation), 튜플(tuple), 속성(attribute)과 같은 관계형 모델의 용어 대신 테이블(table), 행(row), 열(column)과 같은 일반적인 용어를 사용가능하고, DBMS의 종류에 얽메이지 않고 표준 SQL 문법을 사용 가능하다,.
추가적으로
- SQL은 기본적으로 대소문자를 구분하지 않는다. 다만 가독성을 위해서 주로 대문자를 사용하기도 하며, 간혹 서버 환경이나 데이터베이스 시스템에 따라 대소문자를 구분하기도 한다.
-SQL 명령은 반드시 세미콜론(;)으로 끝나야 하고, 고유의 값은 따옴표(' ')로 감싸준다.
- 한 줄 주석은 '--'를 앞에 붙여 사용하고, 여러 줄 주석은 /* */로 감싸준다.
DDL(Data Definition Language): 테이블과 index 구조를 관리
1. CREATE
데이터베이스를 만드는 방법은 아래와 같다. mydb라는 데이터베이스를 생성한 것이다, PostgreSQL는 Mysql과 다르게 데이터베이스가 다르면 완전히 물리적인 분리로 본다. 즉, Mysql에서 데이터베이스가 PostgreSQL의 스키마와 동일하다.
CREATE SCHEMA mydb;
아래와 같이 만든 mydb안에 classify라는 table을 생성할 수 있다.
datatype에는 다양한 자료형이 존재하기에 이는 ERD 설계 부분을 참고하거나 각 DBMS의 공식문서를 참고하자.
CREATE TABLE classify ( m_id integer NOT NULL, gr_id integer NOT NULL ) ;
아래와 같이 설정하면 sql에서 기본 스키마로 mydb를 설정한다(매우 편함)
SET search_path TO mydb;
추가적으로 아래의 명령어가 있다.
-- 데이터베이스 접속 -- psql dbname --데이터 베이스 목록 보기 & 접속종료 -- \l \q
2. ALTER
ALTER 문은 이미 존재하는 테이블을 수정하고 싶을 때 사용. 테이블의 이름을 변경하거나 열을 추가, 변경, 삭제 가능하다
ALTER TABLE tablename ADD COLUMN newColumn datatype; ALTER TABLE tablename DROP COLUMN column; ALTER TABLE tablename RENAME COLUMN old_name TO new_name;
3. DROP
DROP을 사용해서 테이블 혹은 데이터베이스 자체를 삭제 가능하다
DROP TABLE tablename; DROP SCHEMA schemaname;
4. INSERT
데이터를 삽입하기 위해서는 INSERT를 사용 가능하다
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); --예시-- INSERT INTO classify (m_id, gr_id) VALUES (1244386, 12);
주의해야 할 점은 숫자가 아닌 문자열인 경우에는 항상 따옴표(' ')로 감싸주어야 한다는 것이다.
5. UPDATE / DELETE
데이터를 수정할 때는 UPDATE를 삭제할 때는 DELETE를 사용한다.
UPDATE table_name SET column1='data1', column2='data2', ... [WHERE condition]
column에는 열 이름을, data에는 넣고 싶은 내용을 넣는다.
[WHERE condition]은 생략하면 행 전체에, 특정 행을 업데이트시키고 싶다면 WHERE를 이용하면 된다.DELETE의 경우는 아래와 같이 사용한다. 마찬가지로 WHERE condition을 사용하지 않으면 테이블 전체가 지워진다.
DELETE FROM table_name [WHERE condition];
'개발 이야기 > DB(데이터베이스)' 카테고리의 다른 글
[DBMS] Disk and Disk Space Management (0) 2024.11.22 [DB] SQL2: SELECT와 Relational Algebra 중심으로(조회) (2) 2024.10.19 [DB][실습] PostgreSQL 설치 및 Query사용법 (2) 2024.10.18 [DB] Relational Algebra (1) 2024.10.16 [DB][실습] ERD cloud & SQL fiddle 사용법 정리(과제 및 query script 처리를 위해) (1) 2024.10.03