2013년 1월 22일 화요일

SQL 기본 명령어

SQL 문장 - 관계형 데이터 베이스를 유일하게 조작하고 관리한다.
SQL은 정확한 데이터를 출력하는 것이 목표

SQL문장의 종류























정규화(Normalization) - 테이블을 분할하여 데이터의 불필요한 중복을 줄이는것


ERD(Entity Relationship Diagram)
- 테이블 간 서로의 상관관계를 그림으로 도식화한것 (E-R 다이어그램)
- 구성요소 : 엔티티(Entity), 관계(Relationship), 속성(Attribute)

==============================================================================

자주 쓰이는 데이터 유형

- CHARACTER(s) : 고정길이 문자열 정보, s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당된 변수 값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채움
- VARCHAR(s) : 가변길이 문자열 정보, s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다.
- NUMERIC : 정수, 실수 등 숫자정보, 정수 부분이 6자리 이고 소수점 부분이 2자리인경우 NUMBER(8,2)와 같이 표시
- DATETIME : 날짜와 시각 정보, 오라클은 1초 단위, SQL SERVER는 3.33 ms 단위관리


==============================================================================


테이블 생성시 주의해야할 몇 가지 규칙
- 테이블명은 객체를 의미할 수 있는 적절한 이름 사용, 가능한 단수형 권고
- 테이블 명은 다른 테이블의 이름과 중복되지 않아야 한다.
- 한 테이블 내에서는 칼럼명이 중복되게 지정될 수 없다.
- 테이블 이름을 지정하고 각 칼럼들은 괄호 "()"로 묶어 지정한다.
- 각 칼럼들은 콤마 ","로 구분되고, 테이블 생성문의 끝은 항상 세미콜론 ";" 으로 끝난다
- 칼럼에 대해서는 다른 테이블까지 고려하여 데이터 베이스 내에서는 일관성 있게 사용하는 것이 좋다.
- 칼럼 뒤에 데이터 유형은 꼭 지정되어야 한다.
-테이블명과 칼럼명은 반드시 문자로 시작해야 하고, 벤더별로 길이에 대한 한계가 있다.
- 벤더에서 사전에 정의한 예약어는 쓸 수 없다.

테이블 생성시 주의사항
- 테이블 생성시 대/소문자 구분은 하지 않는다. 기본적으로 테이블이나 칼럼명은 대문자로 만들어진다.
- DATETIME 데이터 유형에는 별도로 크기를 지정하지 않는다.
- 문자 데이터 유형은 반드시 가질 수 있는 최대 길이를 표시해야 한다.
- 칼럼과 칼럼의 구분은 콤마로 하되, 마지막 칼럼은 콤마를 찍지 않는다.
- 칼럼에 대한 제약조건이 있으면 CONSTRAINT를 이용하여 추가할 수 있다.


==============================================================================


CREATE TABLE 사용법

CREATE TABLE 테이블 이름 (
    칼럼명1    DATATYPE    [DEFAULT 형식],
    칼럼명2    DATATYPE    [DEFAULT 형식],
    칼럼명3    DATATYPE    [DEFAULT 형식]
);


==============================================================================

생성된 테이블 구조 확인

ORACLE : "DESC 테이블명;"
SQL SERVER : "sp_help 'dbo.테이블명'"

==============================================================================

테이블의 칼럼 추가

ADD COLUMN : 기존 테이블에 필요한 칼럼을 추가하는 명령

ALTER    TABLE    테이블명
ADD    추가할 칼럼명    데이터 유형;

주의사항: 새롭게 추가된 칼럼은 테이블의 마지막 칼럼이 되며 칼럼의 위치를 지정할 수는 없다.

==============================================================================

테이블에서 필요없는 칼럼 삭제

DROP COLUMN : 데이터가 있거나 없거나 모두 삭제 가능. 한번에 하나의 칼럼만 삭제 가능, 칼럼 삭제후 최소 하나 이상의 칼럼이 테이블에 존재해야 한다. 한번 삭제된 칼럼은 복구가 불가능.

ALTER    TABLE    테이블명
DROP    COLUMN    삭제할 칼럼명;

==============================================================================

칼럼명 변경

RENAME COLUMN : 테이블을 생성하면서 만들어졌던 칼럼명을 어떤 이유로 불가피하게 변경해야 하는 경우에 사용. 칼럼명이 변경되면, 해당 칼럼과 관계된 제약조건에 대해서도 자동으로 변경되는 장점이 있지만 오라클등 일부 DBMS에서만 지원하는 기능이다.

ALTER    TABLE    테이블명
RENAME    COLUMN    변경해야 할 칼럼명 TO 새로운 칼럼명;


SQL SERVER :sp_rename 저장 프로시저를 이용하여 칼럼 이름 변경가능
sp_rename 변경해야 할 칼럼명, 새로운 칼럼명, 'COLUMN';
주의점: 엔터티 이름 부분을 변경하면 스크립트 및 저장 프로시저를 손상시킬 수 있다.


==============================================================================

테이블 생성 시 부여했던 제약 조건 삭제

DROP CONSTRAINT

ALTER    TABLE    테이블명
DROP    CONSTRAINT    제약조건명;

==============================================================================

테이블 이름 변경

RENAME    변경전 테이블명    TO    변경 후 테이블명;

SQL
sp_rename 변경전 테이블명, 변경후 테이블명;

==============================================================================

테이블 삭제

DROP TABLE : 테이블을 잘못 만들었거나 테이블이 더 이상 필요 없을 경우 해당 테이블을 삭제

DROP     TABLE    테이블명    [CASCADE CONSTRAINT];

==============================================================================

테이블에 데이터를 입력
 - 테이블에데이터를 입력하는 방법은 두 가지 유형이 있으며 한 번에 한 건만 입력된다.

INSERT

INSERT    INTO    테이블명    (COLUMN_LIST)
VALUES    (COLUMN_LIST에 넣을 VALUE_LIST)

INSERT    INTO    테이블명
VALUES    (전체 COLUMN에 넣을 VALUE_LIST);


EX) 테이블명 : PLAYER

INSERT    INTO    PLAYER (PLAYER_ID, PLAYER_NAME, TEAD_ID, POSITION)
VALUES ('2002007', 'QKRWLTJD', 'K07, 'MF');

칼럼명이 정의 되지 않은 경우 NULL값 입력, NOT NULL로 설정된 경우 에러출력


==============================================================================


정보 수정

UPDATE : 입력한 정보 중에 잘못 입력되거나 변경이 발생하여 정보를 수정해야 하는 경우가 발생할 수 있다. UPDATE 다음에 수정되어야 할 칼럼이 존재하는 테이블명을 입력하고 SET 다음에 수정되어야 할 칼럼명과 해당 칼럼에 수정되는 값으로 수정이 이루어진다.

UPDATE    테이블명
SET    수정되어야 할 칼럼명 = 수정되기를 원하는 새로운 값;


==============================================================================

데이터 삭제

DELETE : 테이블의 정보가 필요 없게 되었을 경우 데이터 삭제를 수행한다. DELETE FROM 다음에 삭제를 원하는 자료가 저장되어 있는 테이블명을 입력하고 실행. FROM 문구는 생략이 가능한 키워드이며, WHERE 절을 사용하지 않으면 테이블의 전체 데이터가 삭제된다.

DELETE    [FROM] 삭제를 원하는 정보가 들어있는 테이블명;

 
==============================================================================

조회

SELECT : 사용자가 입력한 데이터는 언제라도 조회가 가능하다. 앞에서 입력한 자료들을 조회해 보는 명령어

SELECT     [ALL/DISTINCT]    보고 싶은 칼럼명, 보고 싶은 칼럼명, ....
FROM    해당 칼럼들이 있는 테이블명;

- ALL : Default 옵션 이므로 별도로 표시 하지 않아도 된다. 중복된 데이터가 있어도 모두 출력한다.
- Distinct : 중복된 데이터가 있는 경우 1건으로 처리해서 출력한다.



==============================================================================

사용자 리스트 보기

SQL> conn /as sysdba
Connected.
SQL> select username from all_users;




사용자 테이블 리스트 보기

SQL> select table_name from user_tables;




쿼리 수행 시간 보기

SQL> set timing on
SQL> select table_name , constraint_name, constraint_type





테이블 제약 조건 보기

SQL> select table_name, constraint_name, constraint_type
  2  from user_constraints
  3  where table_name='EMP3';




모든 테이블 리스트 보기

select * from tab; -> table list 보는 명령
select * from ALL_ALL_TABLES; -> TABLE LIST 상세 보기
select * from DBA_TAB_COLUMNS; -> TABLE COLUMN 보기





테이블 생성후 삭제 했을때 삭제한 테이블이

BIN$T1vV3mMkTAa3USG6tvo+Vg==$0  TABLE
BIN$9jh0k2i7RhK1JRw6nN3b+g==$0    TABLE
BIN$d4uXW0s7T2qic2nYaGoDtw==$0  TABLE

이런식으로 보일때 안보이게 하는법..

이것은 오라클이 새롭게 추가한 '휴지통' 이라는 기능때문 혹시 모를 복구를 위해..


purge recyclebin;

명령어를 사용하면 완전삭제됨


또는 삭제시 drop table 테이블 purge;  
이렇게 하면 위의 작업을 해줄 일이 없으나 위험.




오라클에서 vi환경 사용법

DEFINE_EDITOR=VI
ED


댓글 없음:

댓글 쓰기