-
SQL 개요 & SQL 구문 종류(DDL, DML, DCL)Data Base_Oracle/SQL 2019. 12. 30. 22:36
191230 수업 내용 정리
SQL (Structured Query Language)
▶ 구조적인 쿼리(=검색) 언어 관계 DB를 처리하기 위해 고안된 언어
독자적인 문법을 갖는 DB 표준 언어 (전세계 표준)
데이터 관리 언어
▶ CRUD : 입력, 조회, 수정, 삭제(Create Read Update Delete)SQL 구문 종류
- 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에서 다룸 */
- 테이블 생성
- 자료형 지정
- 문자형 (계산이 불가능한 항목)
- char(저장 길이) : 고정길이, 데이터의 저장 길이가 정해져 있음 ex) 이름(보통 3글자)
- varchar(저장 길이) : 가변길이, 데이터의 저장 길이가 다 다름 ex) 집주소, 메일주소, 주민등록번호
※ varchar(8) : 알파벳(1byte) 8글자 저장
한글(2byte) 4글자 저장 - varchar2() : 오라클에서만 사용
- 숫자형 (계산이 가능한 항목)
- number(a) : 정수형 데이터 ex) 나이
- number(a, b) : 실수형 데이터,
a자리수 정수의 소수점 b자리까지 저장 ex) 몸무게, 키
- 문자형 (계산이 불가능한 항목)
- 테이블 생성 형식
SQL> create table 생성 테이블명( 컬럼명(=필드명) 자료형 제약조건, 컬럼명(=필드명) 자료형 제약조건, ,,,);
- 테이블 생성 예제
SQL> create table prtest(id number(3),name varchar2(10)); /*prtest라는 table을 생성, 3자리수 숫자값을 갖는 id 필드와 10바이트 용량의 문자를 담는 name 필드를 갖음 */
- 테이블 구조 확인
SQL> desc(ribe) 구조를 확인할 테이블명 SQL> desc prtest -- MySQL에서도 동일한 기능
- 테이블 내용 확인(저장된 Data 확인)
SQL> select 확인할 필드명,,,(*) from 테이블명; SQL> select * from prtest; -- 실무에서는 잘 사용 X -- '선택된 레코드가 없습니다.'
- 자료형 지정
- 계정 생성
- alter : 수정
- drop : 삭제
- create : 생성
- DML (Data Manipulation Language 데이터 조작어)
데이터 내용을 변경할 때 사용- insert : 데이터 입력
형식)
예제)SQL> insert into 테이블명 values(); /*필드순으로 저장 숫자: 숫자 문자열: '문자열' 작은따옴표만 사용!! 날짜 : '2019-12-30' ex) 회원가입, 게시판 글쓰기*/
SQL> insert into prtest values(1, '홍길동'); -- 1개의 행이 만들어졌습니다. (정상적으로 자료가 저장됨)
- insert : 데이터 입력
- 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 테이블명; /* * : 전체선택자, 필드명을 사용하면 해당 필드의 값들을 보여줌 */
- DCL (Data control Language 데이터 권한 부여어)
- 계정 생성, 암호 부여
- 적절한 권한 부여
- 로그인 (create session[connect] 권한)
- 컴퓨터 작업 : 데이터 CRUD (Resource 권한 = 롤[group])
- grant : 권한 부여
형식) grant 권한종류1,권한종류2,,, to 계정명1,계정명2 ,,,,
to public : 모든 계정들에게 부여할 경우에 사용, 잘 사용XSQL> 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 명령어들을 익혀야 앞으로의 과정도 수월하게 따라갈 수 있을 것입니다.
'Data Base_Oracle > SQL' 카테고리의 다른 글
SQL Dual Table (0) 2020.01.02 SQL Order by(정렬), Parameter Query(매개변수 검색) (0) 2019.12.31 SQL Select & 연산자 (2) + 연산자 우선순위 (0) 2019.12.31 SQL Select & 연산자 (1) (0) 2019.12.31 SQL Select 개요 & Desc & Distinct (0) 2019.12.31 - DDL (Data Definition Language 데이터 정의어)