[정리] SQL

성철민·2023년 2월 17일
0

요약노트

목록 보기
1/2

1. DataBase Management System ( DBMS )


다수의 사용자들이 데이터베이스 내의 데이터에 접근할 수 있도록 하는 소프트웨어 도구의 집합

  • DBMS의 분류
  1. 계층형(Hierarchiral) : 처음 등장한 DBMS 개념으로 각 계층이 Tree구조를 가짐, 비효율적
  2. 망형(Network) : 계층형 DBMS를 개선하기 위해 등장, 같은 계층끼리도 유기적으로 연결돼 있는 구조, 비효율적
  3. *관계형(Relational) : table이라는 최소 단위로 구성되며 table은 column과 row로 이루어짐, MySQL 등이 포함
  4. 객체지향형(Object-Oriented)
  5. 객체관계형(Object-Relational)

-* 관계형 모델(Relational Model): 다음의 세 핵심 포인트와 함께 고안되었다.
1. 데이터베이스를 단순한 자료구조에 저장
2. high-level language로 데이터에 접근
3. 물리적 저장소는 구현에 맡겨짐
+. **릴레이션(Relation)이라는 구조가 사용


-** 릴레이션(Relation) : 각 개체를 표현하는 속성들의 관계들로 이루어짐

1. 튜플(Tuple) : 행(row)과 유사하고, 레코드(Record)라고도 부른다. 한 행을 구성하는 속성들의 집합. NULL이라는 특별한 값을 가질 수 있다.
2. 속성(Attribute) : 열(column)과 유사하다.
3. 스키마(Schema) : 릴레이션의 이름과 릴레이션에 포함된 모든 속성의 이름으로 정의하는 릴레이션의 논리적 구조
4. ***키(Key) : 릴레이션에서 튜플을 구별하기 위해서 사용하는 속성의 집합. 유일성최소성에 따라서 종류가 구분된다.

-***키(Key)
1. Primary Key (기본키) : NULL값을 갖지 않는 속성이면서, 데이터의 빠른 검색을 위해 간단한 값을 갖는 속성
2. Alternate Key (대체키) : Primary Key를 제외한 나머지 Candidate Key
5. Foreign Key (외래키) : 한 릴레이션으로부터 다른 릴레이션의 튜플을 참조하는 데 사용되는 속성



2. SQL (Structured Query Language, 구조적 질의 언어)


RDBMS의 데이터를 관리 및 처리하기 위해 설계된 프로그래밍 언어. 3가지 DBMS 제품(Oracle, SQL Server, MySQL)이 모두 표준 SQL을 포함하나 추가적으로 자신만의 기능을 가지고 있다.



3. SQL 명령어


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

데이터 검색, 등록, 삭제, 갱신을 위한 데이터베이스 언어


  • SELECT
    DB에 있는 데이터를 조회하거나 검색하기 위한 명령어
SELECT * FROM users;
  • INSERT
    DB에 데이터를 삽입할 때 사용하는 명령어
INSERT INTO users(field1, field2, field3)
       VALUES(data1, data2, data3);

*field는 생략 가능, 이 경우 데이터베이스의 스키마와 같은 순서대로 필드 값 자동 대입

  • UPDATE
    DB에 있는 데이터를 갱신(내용 변경)할 때 사용하는 명령어
UPDATE users
	SET field1 = 'data1',
        field2 = 'data2'
    WHERE field99 = 'data99';
  • DELETE
    DB에 있는 데이터를 삭제할 때 사용하는 명령어
DELETE FROM users
WHERE field1 = '1';

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

데이터 베이스 객체(테이블, 뷰, 인덱스 등)을 정의하는 언어


  • CREATE
    DB에 새로운 테이블 구조를 생성하기 위한 명령어
CREATE table users( table1 VARCHAR(8),
                    table2 TIMESTAMP,
                    table3 DATE,
                    table4 NUMBER(6));

*INT(?) : ?는 ZF(zerofill)속성으로 데이터의 남은 빈칸을 0으로 채워준다. 예를 들어 INT(5), 데이터 값이 12라면 00012로 보여짐


  • ALTER
    DB에 있는 테이블 구조를 변경할 때 사용하는 명령어
  1. ADD COLUMN : 테이블에 새로운 속성을 추가한다
ALTER TABLE 테이블명 ADD(추가할 칼럼명, 데이터타입);
  1. MODIFY COLUMN : 테이블의 속성을 수정한다
ALTER TABLE 테이블명 MODIFY(변경할 칼럼명, 변경할 데이터 TYPE);
  1. DROP COLUMN : 테이블에 속성을 삭제한다
ALTER TABLE 테이블명 DROP COLUMN 삭제할 칼럼명;
  1. RENAME TO : 테이블명을 새로운 이름으로 변경한다
ALTER TABLE 기존 테이블명 RENAME TO 새로운 테이블명;

  • DROP
    DB의 테이블을 삭제할 때 사용하는 명령어
DROP TABLE 테이블명
  • TRUNCATE
    DB의 테이블 내부의 모든 내용을 삭제하는 명령어. 내용만 삭제하므로 구조는 남는다
profile
developer

0개의 댓글