Oracle 1일차 : 계정관리 및 테이블 생성과 수정

계정관리

> cd \ 
> sqlplus sys/oracle as sysdba

💡만일 테이블스페이스 ‘USERS’에 대한 권한이없습니다 가 뜬다면

SYSTEM 유저에서 이 명령어를 사용하자

> ALTER USER [유저명] default tablespace users quota unlimited on users;

계정 관리 명렁어

역할 명령어
현재 연결된계정 확인 Show user;
시스템 계정에서 생성된 계정들과 락 여부확인 select username, account_status from dba_users;
hr 계정의 락을 해제함 alter user hr account unlock;
hr계정의 비번을 a1234로 설정 alter user hr identified by a1234;
현재 계정에서hr계정으로 연결 conn hr/a1234;
현재 계정 로그아웃 exit;
system계정의비번을 잊어버렸을때(비번없이 접속하기) sqlplus “/as sysdba”
현재 db의database명 확인 select name from v$datavase;
hr계정 다시 락걸기 alter user hr account lock;
hr계정의 락상태 확인 select username, account_status from dba_users where username = ‘HR’; (반드시대문자)

권한 부여 명령어

역할 명령어
현재 계정에 등록된table 확인 select * from tab;
특정 테이블의구조를보고싶을때 desc 테이블명;
system계정에서새로운계정 생성 create user 새 계정이름identified by 비번;
system계정에서특정계정에 권한부여 grant connect, resource to 특정계정이름; ->최소권한
system계정에서특정계정을 삭제 drop user 삭제할계정명;
특정 게정에 새로운계정을 생성,수정,삭제 권한 부여 grant create user, alter user, drop user to 계정;
부여받은 권한을 다른사용자에게부여할 수있다 grant create user, alter user, drop user to 계정with admin option;
dba 권한을부여(system과동일한 권한) grant dba to 계정명;
dba권한 회수 -> 심지어 conn 도 안됨 revoke dba from 계정명;
resource권한만 회수 revoke resource from 계정명;

권한 범위

권한명 권한
connect 데이터베이스에 접속할수 있는 기본권한
resource 테이블, 인덱스, 뷰 등을 생성,변경,삭제할수 있는 권한
dba 모든시스템권한

테이블 생성

데이터 타입

타입 설명
Varchar2(n) 가변 길이문자 데이터(1~4000 바이트)
Char(n) 고정 길이문자 데이터(1~2000 바이트)
Number(p,s) 전체 p자리, 소수점 이하 s 자리
Date 7byte 날짜타입
Long 가변 길이문자 데이터(1~2 Gbyte)
Clob 단일바이트 가변길이 문자데이타(1~4gb)
Blob 가변 길이이진 데이터(1~4gb)

제약 조건

조건 설명
Not null 무조건 값을 입력(필수입력)
Default 데이터 입력을 하지 않아도 지정되는 기본값(예 : default ‘서울’Default 100
Primary key not null + unique (기본키지정)
Unique 중복허용안함
Check 컬럼의 값을 특정범위로 제한(예: check (컬럼명in(‘M’,’F’))Check (컬럼명between 100 and 200)

테이블 생성

CREATE TABLE 테이블명 (컬럼명 타입[제약 조건]..)

테이블 삭제

DROP TABLE 테이블명;

🐣 실습하기

> CREATE TABLE sawon (name varchar2(10) NOT NULL, age NUMBER(5), addr VARCHAR2(30), gender VARCHAR2(10) CHECK (gender IN('남자','여자')));
> DESC sawon; //테이블 구조 확인하기

DML

  • 데이타 조작어

데이타 추가하기

INSERT INTO 테이블명(컬럼명) VALUES ();
  • 컬럼명 컬럼 순서 그대로 값을 넣어줄 땐 (컬럼명)을 생략할 수 있다

데이타 조회하기

SELECT 컬럼명 FROM 테이블명;

데이타 수정하기

-- 모든 데이타가 값1, 값2로 통일됨
UPDATE 테이블명 SET 컬럼명1 = 1, 컬럼명2 = 2; 
-- where 조건에 해당하는 데이타만 수정됨
UPDATE 테이블명 SET 컬럼명1 = 1, 컬럼명2 = 2 WHERE 조건; 

데이타 삭제하기

-- 모든 데이타 삭제 (주의!!!)
DELETE FROM 테이블명;
-- where 조건에 해당하는 데이타만 삭제
DELETE FROM 테이블명 WHERE 조건;

🐣 실습하기

INSERT INTO sawon (name,age) VALUES ('강호동', 12);
SELECT * FROM sawon;

-- 컬럼명 생략시에는 모든 데이타를 모두 삽입해야한다.
INSERT INTO sawon VALUES ('chris', 25, 'busan', 'female'); 
-- 컬럼명은 순서에 상관없이 나열해도 된다. 나열된 순서대로 데이타를 넣으면 됨
INSERT INTO sawon (age, addr, name) VALUES (34, 'jeju', 'bob'); 

-- 나이가 30 이상인 사람의 pay를 500000 으로 수정
UPDATE sawon SET pay = 500000 WHERE myage > 30;
-- Pay가 null 값인 데이타에 200000 으로 수정
UPDATE sawon SET pay = 200000 WHERE pay IS NULL;
-- Pay가 null 값이 아닌 경우에만 주소를 변경
UPDATE sawon SET address='jeju' WHERE pay IS NOT NULL;

--이름이 이씨성을 가진 사람 모두 삭제
DELETE FROM sawon WHERE name LIKE '이%';

테이블 구조 수정

새로운 컬럼 추가하기

ALTER TABLE 테이블명 ADD 컬럼명 타입;

기존 컬럼 제거하기

ALTER TABLE sawon DROM COLUMN 컬럼명;

기존 컬럼의 타입 변경하기

ALTER TABLE 테이블명 MODIFY 컬럼명 타입지정;

컬럼 이름 변경하기

ALTER TABLE 테이블명 RENAME COLUMN 기존명 TO 새로운명;

🐣 실습하기

ALTER TABLE sawon ADD ipsaday date;
ALTER TABLE sawon DROP COLUMN bonus;
ALTER TABLE sawon MODIFY name VARCHAR2(20);

Categories:

Updated:

Comments