Data Base_Oracle/SQL

SQL 개요 & SQL 구문 종류(DDL, DML, DCL)

pathas 2019. 12. 30. 22:36

191230 수업 내용 정리


SQL (Structured Query Language)

▶ 구조적인 쿼리(=검색) 언어 관계 DB를 처리하기 위해 고안된 언어
독자적인 문법을 갖는 DB 표준 언어 (전세계 표준)
데이터 관리 언어
CRUD : 입력, 조회, 수정, 삭제(Create Read Update Delete)

SQL 구문 종류

  1. DDL (Data Definition Language 데이터 정의어)
    데이터의 구조를 변경할 때 사용
    • create : 생성
      • 계정 생성
        형식) create user 생성할 계정명 identified by 암호명;
        SQL> create user test1 identified by t1234;
        
        ERROR:ORA-01031)
        /* 일반계정은 계정을 생성시킬 권한(자격)이 없기 때문에
        발생하는 에러메시지 => 관리자가 만들어줘야 함 */
        SQL> conn tets1/t1234
        ERROR:ORA-01045) user TEST1 lacks CREATE SESSION privilege; logon denied: 
        /* 권한이 부여되지 않아서 발생하는 오류
        해결책) 계정에 권한을 부여해야함 => DCL에서 다룸 */
      • 테이블 생성
        1. 자료형 지정
          • 문자형 (계산이 불가능한 항목)
            • char(저장 길이) : 고정길이, 데이터의 저장 길이가 정해져 있음 ex) 이름(보통 3글자)
            • varchar(저장 길이) : 가변길이, 데이터의 저장 길이가 다 다름 ex) 집주소, 메일주소, 주민등록번호
              ※ varchar(8) : 알파벳(1byte) 8글자 저장
              한글(2byte) 4글자 저장
            • varchar2() : 오라클에서만 사용
          • 숫자형 (계산이 가능한 항목)
            • number(a) : 정수형 데이터 ex) 나이
            • number(a, b) : 실수형 데이터,
              a자리수 정수의 소수점 b자리까지 저장 ex) 몸무게, 키
        2. 테이블 생성 형식
          SQL> create table 생성 테이블명(
          컬럼명(=필드명) 자료형 제약조건,
          컬럼명(=필드명) 자료형 제약조건,
          ,,,);
        3. 테이블 생성 예제
          SQL> create table prtest(id number(3),name varchar2(10));
          /*prtest라는 table을 생성, 3자리수 숫자값을 갖는 id 필드와 10바이트 용량의 문자를 담는 name 필드를 갖음 */
        4. 테이블 구조 확인
          SQL> desc(ribe) 구조를 확인할 테이블명
          SQL> desc prtest
          -- MySQL에서도 동일한 기능
        5. 테이블 내용 확인(저장된 Data 확인)
          SQL> select 확인할 필드명,,,(*) from 테이블명;
          SQL> select * from prtest; -- 실무에서는 잘 사용 X
          -- '선택된 레코드가 없습니다.'
    • alter : 수정
    • drop : 삭제
  2. DML (Data Manipulation Language 데이터 조작어)
    데이터 내용을 변경할 때 사용
    • insert : 데이터 입력
      형식)
       SQL> insert into 테이블명 values();
        /*필드순으로 저장
           숫자: 숫자
        문자열: '문자열' 작은따옴표만 사용!!
           날짜 : '2019-12-30'
           ex) 회원가입, 게시판 글쓰기*/
      예제)
       SQL> insert into prtest values(1, '홍길동');
       -- 1개의 행이 만들어졌습니다. (정상적으로 자료가 저장됨)
  • update : 잘못 저장 됐거나 변경되어야할 데이터 수정
    형식)
    /* 1) 선택 field 내의 모든 데이터를 하나의 값으로 수정,
        사용 빈도 낮음 */
    SQL> update 수정할table명 set 수정할field명=수정할값,
    수정할field명2=수정할값2;
    /* 2) where 조건식 : 조건에 만족하는 데이터를 찾는 방법
        주로 사용하는 방법 */
    SQL> 검색할 대상자(=주로 필드명) 연산자 찾을값
    예제)
    SQL> update prtest set name='임시테스트' where id=3;
    /* id가 3번인 데이터의 name을 '임시테스트'로 변경하라 */
    SQL> update prtest set name='임시테스트' where name='임시';
    /* name이 '임시'인 값을 '임시테스트'로 변경
        => 동명이인이 있을 경우 전부 변경됨
         ∴ 데이터가 단 하나만 나올 수 있도록 
           조건식을 잡아주는 것이 중요*/     
  • delete : 데이터 삭제
    형식)
     SQL> delete from 삭제할 테이블명;
      --해당 테이블에 저장된 모든 데이터 삭제
    SQL> delete from 삭제할 테이블명 where 조건식;
      --조건식을 만족하는 값을 삭제
    예제)
    SQL> delete from prtest where id=5;
      --id가 5인 row를 테이블에서 삭제

DQL (Data Query Language 데이터 검색어)

  • select : 데이터 조회/검색 _일반적으로 DML에 포함됨, 구분하기도 함
    SQL> select * from tab; --현재 작업중인 모든 table을 보여줌
    -- 형식)
    SQL> select * from 테이블명;
    /* * : 전체선택자,
        필드명을 사용하면 해당 필드의 값들을 보여줌 */
  1. DCL (Data control Language 데이터 권한 부여어)
    1. 계정 생성, 암호 부여
    2. 적절한 권한 부여
      • 로그인 (create session[connect] 권한)
      • 컴퓨터 작업 : 데이터 CRUD (Resource 권한 = 롤[group])
    • grant : 권한 부여
      형식) grant 권한종류1,권한종류2,,, to 계정명1,계정명2 ,,,,
      to public : 모든 계정들에게 부여할 경우에 사용, 잘 사용X
      SQL> grant create session,resource to test1;
      == SQL> grant connect,resource to test1;
      /*create session(connect) : 로그인 권한
      resource : 데이터 관리 권한(create table보다 넓은 범위)*/
    • revoke : 권한 회수
      형식) revoke 회수할 권한종류,,, from 부여한 계정명
      	SQL> revoke create session,resource from test1;
      	-- test1 계정의 로그인, 데이터 관리 권한을 회수함

※ SQL 명령을 마치기 위해서는 모든 문장 끝에 ;(세미콜론)을 사용해야 함

  • 예제
    	SQL> select * from tab; -- sql 문법
            TNAME ~  -- 반환값 

SQL 구문 종류에 따른 CRUD 명령어들을 익혀야 앞으로의 과정도 수월하게 따라갈 수 있을 것입니다.