database/sql

[sqld] SQL 기본

테토 2022. 3. 4. 15:29
반응형

 

 

sql 문장들의 종류

명령어의 종류 명령어 설명
데이터 조작어
(DML: Data Manipulation Language)
SELECT 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE라고도 한다.
INSERT
UPDATE
DELETE
데이터베이스의 테이블에 들어있는 데이터에 변형을 가하는 종류의 명령어들을 말한다. 예를 들어 테이블에 새로운 행을 집어넣거나, 원하지 않는 데이터를 삭제하거나 수정하는 것들의 명령어들을 DML이라고 부른다.
데이터 정의어
(DCL: Data Definition
Language)
CREATE
ALTER
DROP
RENAME
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 그러한 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들을 DDL이라고 부른다.
데이터 제어어
(DCL: Data Control
Language)
GRANT
REVOKE
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어를 DCL이라고 부른다.
트랜잭션 제어어
(TCL: Transaction Control
Language)
COMMIT
ROLLBACK
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 명령어를 말한다.

 

 

 

테이블 용어

테이블 - 행과 칼럼의 2차원 구조를 가진 데이터의 저장 장소이며, 데이터베이스의 가장 기본적인 개념

칼럼/열(Column) - 2차원 구조를 가진 테이블에서 세로 방향으로 이루어진 하나하나의 특정 속성(더 이상 나눌 수 없는 특성)

행(Row) - 2차원 구조를 가진 테이블에서 가로 방향으로 이루어진 연결된 데이터

정규화(Nomalization) - 테이블을 분할하여 데이터의 정합성을 확보하고, 불필요한 중복을 줄이는 프로세스

기본키(Primary Key) - 테이블에 존재하는 각 행을 한 가지 의미로 특정할 수 있는 한 개 이상의 칼럼

외부키(Foreign Key) - 다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 칼럼

 

 

 

ERD(Entity Relationship Diagram)

IE 표기법에서 실선은 식별관계, 점선은 비식별관계를 나타낸다.

Barker 표기법에서 수직바가 있을 경우 식별관계이다.

 

DDL (데이터 정의어)

CHAR과 VARCHAR의 차이

CHAR은 길이를 지정하면 고정길이가 되어 더 짧은 길이의 문자열을 저장하면 나머지는 빈 공간이 된다.

VARCHAR은 최대 길이를 지정하지만 그보다 짧은 길이의 문자열이 입력되면 그 데이터의 크기만큼만 자리를 차지한다.

CHAR의 경우 다른 길이의 데이터를 비교할 때 짧은 쪽 데이터에 공백을 넣어서 길이를 맞춘 후 비교한다.

VARCHAR은 공백도 하나의 문자로 취급하기 때문에 공백이 다르면 다른 문자로 판단한다.

=> CHAR의 경우 'AA' = 'AA  ' 

     VARCHAR의 경우 'AA' = 'AA  '

 

CREATE TABLE

테이블 생성시에 주의해야 할 규칙

- 테이블명은 객체를 의미할 수 있는 적절한 이름을 사용한다. 가능한 단수형을 권고한다.

- 테이블 명은 다른 테이블의 이름과 중복되지 않아야 한다.

- 한 테이블 내에서는 칼럼명이 중복되게 지정될 수 없다.

- 테이블 이름을 지정하고 각 칼럼들은 괄호 "( )" 로 묶어 지정한다.

- 각 칼럼들은 콤마로 구분되고, 테이블 생성문의 끝은 항상 세미콜론으로 끝난다.

- 칼럼에 대해서는 다른 테이블까지 고려하여 데이터베이스 내에서는 일관성 있게 사용하는 것이 좋다. (데이터 표준화 관점)

- 칼럼 뒤에 데이터 유형은 꼭 지정되어야 한다.

- 테이블명과 칼럼명은 반드시 문자로 시작해야 하고, 벤더별로 길이에 대한 한계가 있다. 

- 벤더에서 사전에 정의한 예약어(Reserved word)는 쓸 수 없다.

- A-Z, a-z, 0-9, _, $, # 문자만 허용된다. 

- 테이블 생성시 대/소문자 구분은 하지 않는다. 기본적으로 테이블이나 칼럼명은 대문자로 만들어진다.

- DATETIME 데이터 유형에는 별도로 크기를 지정하지 않는다.

- 문자 데이터 유형은 반드시 가질 수 있는 최대 길이를 표시한다.

- 칼럼에 대한 제약조건이 있으면 CONSTRAINT를 이용하여 추가할 수 있다.

 

 

제약조건

PRIMARY KEY - 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 기본키를 정의한다. 하나의 테이블에 한나의 기본키 제약만 정의할 수 있다. 기본키 제약은 고유키제약+NOT NULL 제약과 같다.

UNIQUE KEY - 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키를 정의한다. 단, NULL은 고유키 제약의 대상이 아니므로, NULL 값을 가진 행은 여러 개가 있더라도 고유키 제약 위반이 아니다.

NOT NULL - NULL 값의 입력을 금지한다.

CHECK - 입력할 수 있는 값의 범위 등을 제한한다.

FORIEGN KEY - 관계형 데이터베이스에서 테이블 간의 관계를 정의하기 위해 기본키를 다른 테이블의 외래키로 복사하는 경우 외래키가 생성된다.

 

 

 

반응형