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 테이블명 ( 컬럼명 타입 [ 제약 조건 ] … ..)
테이블 삭제
🐣 실습하기
> 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 ( 값 );
컬럼명 컬럼 순서 그대로 값을 넣어줄 땐 (컬럼명)을 생략할 수 있다
데이타 조회하기
데이타 수정하기
-- 모든 데이타가 값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:
SQL
Updated: March 20, 2019
Comments