cmd 중요한거 ed 좀전에 쓴 내용 메모장으로열어줌
수정후 cmd창에서 / 로 다시사용가능
DB에 데이터를 저장하는 방식
oracle 는 table 형식으로 저장한다
표(table ⇒ column, row)
DB에 주로 저장하는 것
숫자, 문자, 날짜, 파일data(2진으로 저장)
CREATE USER 계정이름 IDENTIFEID by 비번;
계정에 권한주기
GRANT RESOURCE, CONNECT TO 계정이름;
CREATE TABLE member ( num NUMBER, name VARCHAR2(12), addr VARCHAR2(16));
member 라는 이름의 테이블을 만든다
데이터는 num name addr 이란 제목을 각각 가지고있음
그리고 num은 넘버타입 name addr은 string 타입 (varchar2) 뒤에 (괄호)는 데이터 길이제한
DATE는 날짜
select num, name, addr from member;
member 테이블의 num, name , addr정보를 봄
보고싶은거만 볼수있음
COLUMN 칼럼명 FORMAT A10
원하는 칼럼명의 길이를 A10(=문자10개) 길이로 바꿔줌 (name이 짧아짐)
INSERT INTO member (num, name, addr) VALUES (2, ‘김2번’, ‘강남’);
member라는 테이블에
num name addr을 입력하려함
DELETE FROM member WHERE num=1;
member 테이블에서 num=1인 모든 데이터 삭제
WHERE num < > <= >= 도 가능
UPDATE member SET name=’김4번’ WHERE num=2;
member 테이블의 데이터를 수정한다
name=’김4번’ name의 내용을 ‘김4번’으로
num=2를 만족하는 모든 행에 적용
테이블 볼때 내가 원하는 순서로 보기
SELECT num,name,addr from member ORDER BY num ASC (or DESC)
ASC 오름차순 1 2 3 4 …. (ascend)
DESC 내림차순 ….. 4 3 2 1 (descend)
작업 취소
이전에 커밋한곳까지 한 모든 작업이 취소됨
ROLLBACK;
CREATE SEQUENCE members_seq;
members_seq란 이름의 시퀀스를 만듬
select members_seq.nextval from dual;
(dual은 select 를 사용하기 위해 임시로 그냥 만들어져 있는 테이블 같은 것)
nextval은 호출 될 때마다 +1씩 늘려나감
다시 되돌릴수는 없음
다시 되돌리고 싶다면
DROP SEQUENCE members_seq ;
CREATE SEQUENCE members_seq; 이럴 경우 다시 val은 0부터 시작
create 할때 start with x 이런식으로 첫 시작 숫자를 정할 수 있음
increment by y ⇒ y씩 변화함 첨쓰면 start with x 에서 시작하고
그후 한번 쓸때마다 x씩 늘어남 ex) x=2 y=4 면 2 6 10 14 18 …..
ALTER SEQUENCE members_seq
increment by x
start with y
SPOOL 기능
SPOOL ****.txt 입력시 그 이후 cmd 출력되는 모든걸 기록
SPOOL OFF 하면 종료됨 c드라이브 사용자 컴퓨터계정이름 폴더가면 txt 파일로 있음
1줄 정리
CREATE USER 계정이름 IDENTIFIED BY 계정비번
GRANT RESOURCE , CONNECT TO 계정이름
CREATE TABLE, SEQUENCE… 이름
DROP TABLE, SEQUENCE… 이름
INSERT INTO 이름 (칼럼1, 칼럼2, 칼럼3…) VALUES (데이터1, 데이터2, 데이터3)
DELETE FROM 이름 WHERE 조건
UPDATE 이름 변경할칼럼1=데이터 WHERE 조건
COLUMN 칼럼명 FORMAT A10
SPOOL *.txt
SPOOL OFF
그걸 수정하고 저장후 닫고
cmd에 / 입력하면 수정된 명령을 수행함
CONSTRAINT_NAME CO TABLE_NAME
PK_DEPT P DEPT
EMPNO P EDP
FK_DEPTNO R EMP
PK_EMP P EMP
SYS_C004005 C MEMBER
SYS_C004006 P MEMBER
SYS_C004004 C MEMBER
SYS_C004000 P MS
P C R
primary check reference
sunbun 21~30까지의 목록만 뽑아보기
select sunbun,employee_id, full_name,salary from (select e1.*,rownum sunbun from (select employee_id , first_name || ' '|| last_name full_name, salary from employees order by salary desc)e1) where sunbun >= 21 and sunbun <= 30;
create table emp2
(empno number(4),
ename varchar2(12) constraint emp2_ename_nn not null ,
deptno number(2),
constraint emp2_empno_pk primary key(empno),
constraint emp2_deptno_fk foreign key(deptno) references dept2(deptno));
ename에 들어간거는 column 레벨에서의 제약조건 not null은 column레벨밖에 안됨
아래 empno deptno는 table 레벨
primary key — 유일한 1개
foreien key — dept2테이블의 deptno에 있을때만 emp2에 생성됨
ex) dept2에 10 20 이 있을경우 emp2엔 10 20 은되는데 30 40 등등 나머지는 안됨
select constraint_name, constraint_type,status from user_constraints where table_name='EMP2';
제약조건 상태보기 (emp2 테이블의)
ALTER
ALTER TABLE emp2
add constraint - 추가
drop constraint - 삭제
enable constraint - 활성화
disable constraint - 비활성화 제약조건
alter table emp2
add ename varchar2(12) - column 추가
modify ename varchar2(20) - column 변경
rename column ename to ename2 - column 이름 변경
drop column ename2 - column 삭제
나중에 좀더 정리를해서 수정을 할예정