본문 바로가기
DataBase

SQL기초

by 스파이디웹 2020. 2. 26.
728x90

※SQL(Structered Query Language)

-관계형 데이터베이스 언어

-완전한 프로그래밍 언어가 아니라, 데이터 부속어이다.(데이터베이스의 데이터와 메타 데티어를 생성하고 처리하는 문법만 가지고 있기 때문)

-DBMS에 직접 입력해 사용할 수 있고, 자바나 C로 작성된 클라이언트/서버 응용 프로그램에 삽입하여 사용할 수도 있다.

-HTML 웹 페이지 문서에 삽입할 수 있고, 보고서나 데이터 추출 프로그램에서도 사용할 수 있다.

-Visual Studio.NET이나 다른 개발 도구에서 직접 실행 할 수 있다.

-실행 순서가 없는 비절차적인 언어

-SQL문에서는 ""대신에 ''를 사용하여 문자열을 표현,다른 프로그래밍 언어에 삽입될 때 혼란을 방지 하기 위함.

 

1.Data Definition Language(DDL)

-테이블이나 관계의 구조를 생성하는 데 사용

 

1)CREATE

-테이블을 구성하고, 속성과 속성에 관한 제약을 정의하며, 기본키 및 외래키를 정의하는 명령

 

-CREATE 문법

 CREATE TABLE 테이블이름

( {속성이름 데이터타입

    [NULL | NOT NULL | UNIQUE | DEFAULT 기본값 | CHECK 체크조건]

  }

    [PRIMARY KEY 속성이름(들)]

    [FOREIGN KEY 속성이름 REFERENCES 테이블이름(속성이름)]

                 [ON DELETE {CASCADE | SET NULL}]

    [CONSTRATINT 이름] [CHECK(조건)]

)

 

-NOT NULL은 NULL값을 허용하지 않는 제약

-UNIQUE는 유일한 값에 대한 제약(대체키에 사용)

-DEFAULT는 기본값 설정

-CHECK는 값에 대한 조건을 부여

-PRIMARY KEY는 기본키를 정할 때

-FOREIGN KEY는 외래키를 지정할 때

-ON DELETE는 투플의 삭제 시 외래키 속성에 대한 동작을 나타냄(ON DELETE에는 CASCADE,SET NULL,RESTRICT,SET DEFAULT가 있음)

-CASCADE는 관련 투플들에 적용

-SET NULL는 관련 투플의 외래키값을 NULL로 변경

-RESTRICT(NO ACTION)는 투플을 삭제하지 못하게 함

-SET DEFAULT는 관련 투플의 외래키값을 미리 지정한 기본 값으로 변경함

 

EX)

CREATE TABLE NewOrders(

orderid INTEGER,

custid INTEGER NOT NULL,

bookid INTEGER NOT NULL,

saleprice INTEGER,

orderdate DATE,

PRIMARY KEY(orderid),

FOREIGN KEY(custid) REFERENCES NewCustomer(custid) ON DELETE CASCADE);

 

2)ALTER

-생성된 테이블의 속성과 속성에 관한 제약을 변경하며,기본키 및 외래키를 변경한다.

 

-ALTER 문법

 ALTER TABLE 테이블이름

          [ADD 속성이름 데이터타입]

          [DROP COLUMN 속성이름]

          [ALTER COLUMN 속성이름 데이터타입]

          [ALTER COLUMN 속성이름 [ NULL | NOT NULL]]

          [ADD PRIMARY KEY(속성이름)]

          [[ADD | DROP] 제약이름]

 

-ADD,DROP은 속성을 추가하거나 제거할 때 사용

-MODIFY는 속성을 변경할 때 사용

-ADD <제약이름>(속성),DROP<제약이름>(속성)은 제약사항을 추가하거나 삭제할 때 사용

 

EX)

1.ALTER TABLE NewBook DROP COLUMN isbn;

2.ALTER TABLE NewBook MODIFY bookid INTEGER NOT NULL;

 

3)DROP

-테이블을 삭제하는 명령

-테이블의 구조와 데이터를 모두 삭제함

-데이터만 삭제하려면 DELETE문

 

-DROP문법

DROP TABLE 테이블이름

 

EX)

1.DROP TABLE NewCustomer;

 

2.Data Manipulation Language(DML)

-테이블에 데이터를 검색,삽입,수정,삭제하는 데 사용

 

1)SELECT(질의어,Query)(데이터 검색)

 

-SELECT 문법

 SELECT [ALL | DISTINCT] 속성 이름(들)

           [테이블 이름.]{ * | 속성이름 [[AS] 속성이름별칭]}

 FROM {테이블이름(들) [AS 테이블이름별칭]}

          [INNER JOIN |

          LEFT [OUTER] JOIN |

          RIGHT [OUTER] JOIN{테이블이름 [ON 검색조건]}|

          FULL [OUTER] JOIN {테이블이름}]]

          

 [WHERE 조건(들)]

 [GROUP BY 속성이름]-속성이 같은 것 끼리묶는다

 [HAVING 검색조건(들)]

 [질의 UNION 질의  질의 UNION ALL 질의]-UNION같은 테이블 같은속성의 다른조건을 합침,UNION ALL UNION에서 중복도 허옹

 [ORDER BY 속성이름[ASC | DESC]]

 

-문법에 적힌 순서대로 기술해야 함.

 

-like에 쓰이는 와일드 문자

-집계함수

-조인문법

EX)

SELECT name,saleprice

FROM Customer,Orders

WHERE Customer.custid=Orders.custid

처럼 조인으로 2개의 테이블을 합체할때는 where절에 테이블이름.열이름 형식으로 표현한다.

 

-EXIST(SELECT *

         FROM Orders od

         WHERE cs.custid=od.custid

EXIST는 상관 부속질의문 형식이기 때문에 SELECT 문 처리는 내포된다.

참일때,조건에 맞는 속성들이 반환.

 

2)INSERT

 

-테이블에 새로운 투플을 삽입하는 명령

 

-INSERT 문법

INSERT INTO 테이블이름[(속성리스트)]

           VALUES (값리스트);

 

EX)

1.Book 테이블에 새로운 도서 '스포츠 의학'을 삽입,스포츠 의학은 한솔의학서적에서 출간,90000원

INSERT INTO Book(bookid,bookname,publisher,price)

                VALUES(11,'스포츠 의학','한솔의학서적',90000);

 

3)DELETE

 

-테이블에 있는 기존 투플을 삭제하는 명령

 

-DELETE문법

DELETE FROM 테이블이름

[WHERE 검색조건];

 

EX)

1.Book테이블에서 도서번호가 11인 도서 삭제

DELETE FROM Book

WHERE bookid = '11';

 

2.모든 고객을 삭제

DELETE FROM Customer;

 

4)UPDATE

 

-특정 속성 값을 수정하는 명령

 

-UPDATE 문법

UPDATE 테이블이름

SET 속성이름 1=값 1[,속성이름 2= 값2, ...]

[WHERE <검색조건>];

 

EX)

1.Book 테이블에서 14번 '스포츠 의학'의 출판사를 imported_book 테이블의 21번 책의 출판사와 동일하게 변경

UPDATE Book

SET publisher = (SELECT publisher

                      FROM imported_book

                      WHERE bookid = '21')

WHERE bookid = '14';

 

3.Data Control Language(DCL)

-데이터의 사용 권한을 관리하는 데 사용

 

1)GRANT

-객체를 생성한 소유자가 대상 객체에 대한 권한을 다른 사용자에게 허가하는 명령

 

-GRANT 문법

GRANT 권한 [(컬럼리스트)]

     [ON 객체] TO {사용자 | 롤}

     [WITH GRANT OPTION]

 

-권한: 허가할 권한을 지정

-컬럼리스트: 사용 권한을 부여할 테이블의 열 이름들을 지정,꼭()안에 표시해야 한다.

 

-객체: 사용 권한을 부여할 객체를 지정, 테이블이나 뷰 등의 이름이 옴

 

-TO 사용자: 권한을 부여할 사용자를 지정, 권한의 묶음인 롤(ROLE)에 권한을 추가할 수도 있다.

 

-WITH GRANT OPTION: 허가받은 권한을 다른 사용자에게 다시 부여할 수 있다. 

 

2)REVOKE

-GRANT 문으로 허가한 권한을 취소, 회수하는 명령이다. 권한을 부여한 사용자는 부여한 권한의 범위 내에서 권한을 취소

 

-REVOKE 문법

REVOKE 권한 [권한리스트]

   [ON 객체] FROM {사용자 | 롤}

 

728x90

'DataBase' 카테고리의 다른 글

oracle DBMS와 MySQL DBMS의 문법차이  (0) 2020.04.16
데이터베이스 프로그래밍  (1) 2020.03.06
SQL 고급  (0) 2020.03.03
관계 데이터 모델의 개념  (0) 2020.02.26
데이터베이스와 데이터베이스 시스템  (0) 2020.02.25

댓글