SQL

[ORACLE] Table 명령어 및 기본 개념

Journey Jeong 2023. 3. 7. 14:34

SQL (Structered Query Language) 

 : 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다. 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었다. SQL은 데이터베이스로부터 정보를 얻거나 갱신하기 위한 표준 대화식 프로그래밍 언어이다. 많은 수의 데이터베이스 관련 프로그램들이 SQL을 표준으로 채택하고 있다.

 

01. SQL 문법의 종류 3가지 

 

1. 데이터 정의 언어 - ( DDL : Data Definition Language )

 └ 테이블이나 관계의 구조를 생성하는데 사용하며 CREATE, ALTER, DROP,TRUNCATE 문 등이 있다.

 

(1) CREATE - 새로운 데이터베이스 관계 (테이블) View, 인덱스 , 저장 프로시저 만들기.

(2) DROP - 이미 존재하는 데이터베이스 관계 ( 테이블 ) , 뷰 , 인덱스 , 저장 프로시저를 삭제한다.

(3) ALTER - 이미 존재하는 데이터베이스 개체에 대한 변경 , RENAME의 역할을 한다.

(4) TRUNCATE - 관계 ( 테이블 )에서 데이터를 제거한다. ( 한번 삭제시 돌이킬 수 없음.)

 

 

2. 데이터 조작 언어 - ( DML : Data Manipulation Language ) 

 └ 테이블에 데이터 검색, 삽입, 수정, 삭제하는 데 사용하며 SELECT, UPDATE, DELETE, INSERT문 등이 있다.

 

(1) SELECT - 검색(질의)

(2) INSERT - 삽입(등록)

(3) UPDATE - 업데이트(수정)

(4) DELETE - 삭제

 

 

3. 데이터 제어 언어 - ( DCL : Data Control Language)

 └ 데이터의 사용 권한을 관리하는 데 사용하며 GRANT, REVOKE 문 등이 있다.

 

(1) GRANT - 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 부여한다.

(2) REVOKE - 특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 박탈 or 회수 한다.

 --------- 데이터베이스 사용자에게 GRANT 및 REVOKE로 설정 할 수 있는 권한.

CONNECT - 데이터베이스 or 스키마에 연결하는 권한.

SELECT - 데이터베이스에서 데이터를 검색할 수 있는 권한

INSERT - 데이터베이스에서 데이터를 등록(삽입)할 수 있는 권한

UPDATE - 데이터베이스의 데이터를 업데이트 할 수 있는 권한

DELETE - 데이터베이스의 데이터를 삭제할 수 있는 권한.

USAGE - 스키마 또는 함수와 같은 데이터베이스 개체를 사용할 수 있는 권한

 

4. DELETE, TRUNCATE, DROP의 차이

DELETE : 데이터는 지워지지만 테이블 용량은 줄어 들지 않는다. 원하는 데이터만 지울 수 있다. 잘못 삭제 한 경우 삭제한것을 되돌릴 수 있다.

TRUNCATE : 삭제후 용량이 줄어들고 인덱스 등도 모두 삭제된다. 테이블이 삭제 되지는 않으나 데이터만 삭제한다. 선택해서 지울 수 없다. 삭제 후 절대 되돌릴 수 없다.(구조는 남기어 둔다)

DROP : 테이블 전체를 삭제, 공간, 객체를 삭제한다, 삭제 후 절대로 되돌릴 수 없다.

 

* varchar2(n) , number(p,s), timestamp, date, clob

create table abank(
    cif number, 
    name varchar2(20),
    money number
);
insert into abank values(1, 'aaa', 10000);
select * from abank; 
truncate TABLE abank;
drop table abank;
create table bankbc(
    cifs number unique,  -- unique 유일성 null 값 허용, + not null 가능 
    names varchar2(20),
    moneys number
);
insert into bankbc values(null, 'aaa', 1000); 
select * from bankbc;

delete bankbc; -- 조건 없으면 모든 행 삭제 됨

 

02. UNIQUE KEY

*PRIMARY KEY(기본키) 

-- 모든 테이블에 Primary key 가 존재하나요? --> 아니욥 
-- 여러 컬럼을 조합하여 행을 구분가능한 구조라면 괜찮다. 

-- 제약조건
-- primary key : 유일성O , Null 불가
-- unique : 유일성O, Null 허용
-- Not Null : null 불가 

 

 

03. ALTER

- modify 는 있는 컬럼을 수정

- add는 없는 컬럼을 추가함 

alter Table bankd MODIFY name varchar2(20) not null;
alter Table bankd ADD email varchar2(30); -- null 가능 
alter Table bankd ADD UNIQUE(email);
alter Table bankd MOdify money number default 0;

 

04. CONSTRAINT 

-------------------------
create table banke(
    cif number CONSTRAINT banke_pk PRIMARY key, -- 컬럼 라인 정의 방법 
    name varchar2(20) CONSTRAINT banke_name_nn not null,
    email varchar(20) CONSTRAINT banke_email_uk UNIQUE,
    money number default 0
);
desc banke;
SELECT *FROM banke;
drop table banke;

create table banke(
    cif number, 
    name varchar2(20),
    email varchar2(20),
    money number default 0, 
    -- 컬럼 정의 후 테이블 마지막에 제약조건 성립 가능 
    primary key(cif)
);

또는 

create table banke(
    cif number, 
    name varchar2(20),
    email varchar2(20),
    money number default 0, 
    -- 컬럼 정의 후 테이블 마지막에 제약조건 성립 가능 
   CONSTRAINT bank_pk primary key(cif)
);

또는

create table banke(
    cif number, 
    name varchar2(20),
    email varchar2(20),
    money number default 0 check(money >= 0),
    -- 컬럼 정의 후 테이블 마지막에 제약조건 성립 가능 
    -- 테이블 정의 방법 
   CONSTRAINT bank_pk primary key(cif),
   CONSTRAINT bank_email_uk Unique(email)
   -- CONSTRAINT bank_name_nn not null(name) -- notnull 은 컬럼 라인에서만 가능 
);

insert into banke values(1, 'aaa', null, -1000);

 

https://developjuns.tistory.com/34

 

[MSSQL] 제약조건(CONSTRAINT)이란 ?

제약 조건 ( Constraint )이란 데이터의 무결성을 지키기 위해 제한된(한) 조건을 말한다. 즉, 데이터를 삽입, 수정 등을 할 때 무조건 삽입하고 수정하는 것이 아니고 제한된 조건을 만족해야지만

developjuns.tistory.com

 

또는 

create table banke(
    cif number, 
    name varchar2(20),
    email varchar2(20),
    money number,  
    CONSTRAINT aaa check(money >= 0),
 --    CONSTRAINT bbbb default(money), -- 디폴트 불가능
    CONSTRAINT banke_email_uk unique(email),
    CONSTRAINT bank_pk primary key(cif)
--    CONSTRAINT e_nn not null(email) 불가능 
);

 

'SQL' 카테고리의 다른 글

[ORACLE] LIKE 사용 방법  (0) 2023.07.26
[ORACLE] SQL - Sub Query (하위 쿼리)  (0) 2023.03.14
[ORACLE] SQL - ORACLE 사용법  (0) 2023.03.10