본문으로 바로가기

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

category Database 2018. 11. 5. 20:18

2 SQL (Structured Query Language)  구조화 질의 언어



2.1 정의

- 관계형 DB를 이용하기 위한 표준 언어이다.

-질의어라고 하니 좀 어려워 보인다. 간단하게 묘사해 보자면 DB와 서로 통신을해서 원하는 결과를 얻기위해 대화하는(질문하고 답하는??)언어정도로 생각하면 될 것 같다.



2.2 종류

- DDL (Data Definition Language) 데이터 정의어 - Table의 구조를 정의

- DML (Data Manipulation Language) 데이터 조작어 - Table에 Data를 삽입, 수정, 삭제

- DCL (Data Control Language) 데이터 제어어 - Data의 사용 권한을 관리



2.2.1 DDL 

Data를 저장, 관리, 이용하려면 먼저 Data를 저장할 Table의 구조를 만들어야 한다.

(관계형 데이터베이스는 Table을 베이스로 Data를 이용하기 때문. 데이터 정의어는 이 구조를 만드는 명령어들이다.)


종류

1. CREATE 

1) 기능 : Table 생성

2) 문법 

CREATE TABLE Table(

 Column DataType(size),

 Column DataType(size),

 Column DataType(size) 

);

예)

 CREATE TABLE member(

NAME VARCHAR2(20),

NICKNAME VARCHAR2(20),

AGE VARCHAR2(20),

BELONG VARCHAR2(20),

GENDER VARCHAR2(20)

);


2. ALTER

1) 기능 : 생성된 Table의 구조를 수정

2) 종류

ADD - Column을 추가

  - ALTER TABLE Table Name ADD Column DataType;

    ALTER TABLE member ADD age number;

DROP - Column을 삭제

   - ALTER TABLE Table Name DROP Column;

       ALTER TABLE member DROP age;

MODIFY - Column의 DataType 수정

          - ALTER TABLE Table Name MODEFY Column DataType;

    ALTER TABLE member MODEFY age VARCHAR2(20);

RENAME - Column의 Name 수정

    - ALTER TABLE TableName RENAME 기존Column TO  새로운ColumnName;

              ALTER TABLE member RENAME COUN  TO COUNT ;


3. DROP

1) 기능 - 기존 Table 삭제

     - Table구조와 Data 모두를 삭제     *Data만 지우고 싶을경우 DML의 DELETE 사용

     - 삭제하려는 Table의 키를 다른 Table에서 참조 중이면 삭제가 거절된다. 

   - DROP TABLE TableName;

DRIP TABLE member;



2.2.2 DML

데이터 조작어는 만들어진 Table에 Data를 삽입, 수정, 삭제하는 명령어들이다.


종류

1. INSERT 

1) Table에 데이터(행) 추가

2) 문자타입이면 홑따옴표로 묶어주고 숫자이면 그냥 적어준다.

2) 모든 Column에 Data를 넣는 방법과 지정한 Column에만 Data를 넣는 방법 두 가지가 있다.


a. Column을 선택하여 값을 넣으며 행 생성하기

            (Table의 실제 Cloumn순서와 상관 없다)


ex)  INSERT INTO Table명(Column1, Column2, Column3) VALUES(Value1, Value2, Value3);

       INSERT INTO advanced(NAME, AGE, BELONG) VALUES('박성욱', 24, '고급');

               


b. 모든 Column에 값을 넣으며 행 생성하기

     (Table의 실제 Cloumn순서에 맞추어서 입력해야 한다.)


ex)    INSERT INTO Table명 VALUES(Values);

                 INSERT INTO advanced VALUES('박성욱',24,'고급');            


2. UPDATE

1) 기능 :

2) 종류


2. DELETE

1) 기능 :

2) 종류



2.2.3 DCL

정의

종류




2.2.4 그 외

- DESC 명령어 

1. 기능 : Table에 어떤 Column이 있는지 조회해서 출력 

2. 문법 : DESC Table;

               DESC MEMBER;

*describe (설명)

*문장의 끝에 항상 세미콜론(;)을 붙여줘야 한다.



- SELECT 명령어 

1. 기능 : 원하는 Data를 조회해서 출력 

              *조회라는 용어가 와닿지 않아 지금부터 select라고 이름그대로 명명하겠다.


2. 문법 : SELECT Column or Expression FROM Table or View;

               SELECT USERNAME FROM MEMBER


3. 복수의 Column select 

   1) SELECT Column1Column2 FROM Table or View

   2) Comma(,)로 구분한다.


4. 모든 Column에 해당하는 Data를 select해서 출력한다.   

   1) SELECT *(모든) FROM Table or View; 

   2) SELECT * FROM TABLE

   3) Table의 모든 Data를 꺼내온다.


5. Column name 대신 Expression(=리터럴 문자)으로 조회        

   1) Column에 해당하는 값이 아닌, 원하는 문자열 데이터들을 조회할 때 사용한다.

   2) 실제 우리가 Programing으로 Database를 조회할때 많이 이용했던 방식이다.

   3) 홑따옴표 (' ')로 묶어서 표현한다. 

*Expression : 표현식


6. select시 Column name을 별명으로 바꾸어서 출력하기

   1) 컬럼 별칭 (Column Alias)

   2) 출력 결과를 볼때 Column name 대신에  임시로 부여한 별명으로 출력되게 할 수 있다.

   3) SELECT Column "별명", Column AS "별명FROM Table or View;

      SELECT TELEPHONE_NUM "tel", EMAIL_ADDRESS AS "EMAIL" FROM MEMBER;

   4) Column 뒤 공백을 주고 별명을 " "로 감싼다. 또는 Column 뒤에 AS 키워드 사용



- 연결 연산자

1. 연결 연산자로 연결한 컬럼은 1개의 Column으로 인식한다.

2. 서로 다른 Column을 마치 하나의 Column인 것처럼 연결해서 출력할때 사용  EX) 성(Column1) + 이름(Column2)

3. SELECT Column1 || Column2 FROM Table;

    SELECT FIRSTNAME || LASTNAME FROM MEMBER;



- Distinct 키워드

1. select 결과에 중복된 Data가 있을경우 제거하고 출력

2. SELECT DISTINCT Column FROM Table;

    SELECT DISTINCT GRADE FROM EXAM;

3. Distinct를 1개의 Column에만 적어도 모든 Column에 적용되기 때문에 주의가 필요하다. 




- WHERE 키워드

1. 원하는 조건에 해당하는 Data만 골라서 select

    (if와 유사)

2. SELECT Column or Expression FROM Table or View WHERE 조건문

3. 문자와 날짜를 조회시 홑따옴표로 감싸야 한다.



- TRUNCATE 명령어 

1. 기능 : Table의 모든 데이터를 삭제

2. 문법 : TRUNCATE TABLE 테이블 명;







 


  





'Database' 카테고리의 다른 글

Join  (0) 2018.11.08
Dual Table 이란  (0) 2018.11.08
함수  (0) 2018.11.07
1. Database  (0) 2018.11.05