테이블생성 및 변경

두부링·2024년 11월 27일

sql

목록 보기
5/5

<오라클 접속 과정>
맥은 와이파이를 통해서 1521port를 타고 오라클에 접속 / 맥용 오라클은 없음
윈도우(sqlplus)는 1521port를 오라클에 접속

<명령문 보는 관점>
where : 모든 절에 체크
having : 모든 그룹 체크
*group by 실행하면 그룹을 대표하는 값만 출력할 수 있음

<유일키 = unique key> - 중복 X, null 불가능
id emial password
primary key unique key unique key


<다른 유저의 서버에 접근하고 데이터 전송> =원격접속

<전체적인 흐름>

1.port 열기

  1. 고급설정 들어가서 인바운드 규칙 등록(외부-> 내부)

  • oracle은 1521 port로 연결됨


3. 자신 ip 확인하는 방법

IPv4 공간 안의 공간 / 모든 가상의 ip는 192.168으로 시작

  1. 프롬프트 창에
    sqlplus 계정명(scott)/비밀먼호(TIGER)@연결하기 원하는ip주소(정호T ip) : port번
    호/service(윈도우는 XE)
    =>qlplus scott/TIGER@192.168.0.107:1521/XE
  2. 원하는 테이블에 내용 작성하고 commit
  3. 그러면 정호T가 만든 테이블에 내가 만든 행이 반영됨

테이블 & 제약조건

=> 나무(row)에서 숲(table)을 보는 느낌

<제약조건, 테이블, 시퀀스 등의 정보 테이블>
user_constraints : 제약조건에 관련된 데이터를 제공
user_tables : 테이블에 관련된 데이터를 제공
user_sequences : 시퀀스에 관련된 데이터를 제공

<테이블 생성 및 변경>

  1. 테이블 및 시퀀스 생성

    DDL은 실행이후 자동으로 COMMIT 되어짐
  1. 객체(테이블, 시퀀스 등등)의 변경
    칼럼을 추가, 변경,삭제 등 한다는 것은 테이블을 변경 한다는 것!

    add : 추가
    mobify : 변경
    rename : 이름 변경 (컬럼 이름 변경은 한 번에 불가능)
    drop: 삭제

  2. 제약조건

<제약조건 활성화, 비활성화, 삭제>

  1. 테이블 칼럼 수정
  • 테이블 생성 시 최소한 하나의 속성은 정의해야 함

view

<정의>
하나 이상의 테이블에서 데이터를 조회하는 SQL쿼리를 기반으로 생성되는 가상 테이블

<특징>

  • 물리적으로 데이터 저장를 저장하지 않고 실제 테이블에서 데이터를 가져옴

<사용 목적>

  • 보여주기 싫은 정보 숨기기
  • 조인된 결과를 view로 설정하면 간편함 but read only
    (<-> 단순 뷰는 실시간으로 반영됨!)
    + 뷰의 데이터 수정 가능 여부
  • 단순 뷰는 기본적으로 데이터를 수정 가능함
  • 다음 조건을 포함하는 뷰는 데이터를 수정할 수 없습니다:
    1 GROUP BY 또는 집계 함수 사용.
    2 DISTINCT 사용.
    3 UNION, JOIN, 또는 서브쿼리 사용.
    4 읽기 전용 뷰로 생성.

<테이블 복사본 생성> - 단, 제약 조건은 복사가 안된다(하나의 제약조건이 두개 테이블도 이상)

복사본을 만드는 이유?원본 데이터 보존

  • 구조만 복사하기:WHERE 조건이 무조건 FALSE로 나오게 설정

view와 본테이블 간의 관계(실시간 반영)

  • view에서 수정된 애들은 본 테이블에도 반영됨 -> 그래서 view를 삭제하면 table도 삭제됨

DBeaver

DBeaver은 sqlplus처럼 데이터베이스와 연결하여 데이터를 관리하고 쿼리를 실행할 수 있도록 도와주는 데이터베이스 관리 도구

  • localhost :나의 컴퓨터를 뜻함
  • SQL 편집기로 스크립트 생성 후 작성하기

<정호T 과제>

  1. 테이블에 칼럼추가, 데이터 type 변경, 제약조건 추가, 활성화, 비활성화,삭제 V
  2. view 만들기,삭제하기
    create view 뷰이름 as 쿼리
    drop view 뷰이름

<질문>

테이블 생성 시, 무조건 하나의 속성은 무조건 들어가야 함?
create table member(num number);

<어려운 파트/ 헷갈>

  • 테이블 생성 후 제약 조건을 추가할 때 table level로 추가함
	alter table member
	add constraint member_num_pk primary key(num);

다시 작성해보기

--DEPT 테이블을 복사해서 DEPT2테이블을 만들어 보세요

—EMP테이블을 복사해서 EMP2 테이블을 만들어 보세요

—EMP2의 EMPNO 칼럼에 PRIMARY KEY 제약조건 걸기

-EMP2의 DEPTNO 칼럼이 DEPT2의 DEPTNO칼럼을 참조하도록 외래키 제약조건 걸기

  • not null 제약조건 추가는 테이블 수정 형식이다
    - using 사용 한 번(테이블 축약어 사용이 불가능)

-셀프조인

=> e1.manager_id (직원의 00의 매니저의 아이디 ) e2.EMPLOYEE_ID(매니저의 아이디는 ~~야)

profile
하이하잉

0개의 댓글