명령어 모음

@_@·2021년 5월 27일

Database

목록 보기
34/39




ㅇ 데이터 구축
1. 테이블 생성
2. 데이터 삽입 : 인서트
3. 데이터 저장 : 커밋

ㅇ 셀렉트문

SELECT DISTINCT * 컬럼
FROM 테이블
WHERE 조건식 연산자 값
GROUP BY 셀렉트절에 그룹함수가 쓰일 때 그룹함수 사용 안한 컬럼들 (섞여있지 않으면 쓸 필요 없어!!)
HAVING 그룹화한 컬럼에 대한 조건절
ORDER BY 정렬
  • 문자와 날짜는 ' '

  • 값에다가 써브쿼리 가능

  • 웨어절에 그룹함수 사용하고 싶을 때 서브쿼리 이용

  • 조건절(웨어절, 해빙절)에 서브쿼리 사용 (배운데까지는)

  • 이름 찾을 때는 항상 중복 생각. =말고 IN사용

  • 테이블 조인하게 되면 항상 조인조건★ 내가 자꾸 까먹는거!!

  • 오더바이의 조건도 은근 잘 보기
    알파벳 순이라고 하면 문자데이터에 해당하는 컬럼
    그룹함수 사용한 결과를 해야 하는데 그 안의 컬럼만 할 때도 있었어

  • 문제 꼼꼼히 읽기. 특히 알리아스 알아채기

  • ~~와 '다른' 있으면 검색했던 조건의 사람 빼줘야지




ㅇ DML : 테이블을 대상으로 행 단위 삽입 / 변경 / 삭제

  • 커밋으로 저장

행 삽입

INSERT INTO 테이블 (컬럼1, 컬럼2, 컬럼3) <- 컬럼은 선택사항
VALUES (각 컬럼에 맞는 데이터 값). 널은 NULL
  • 각 컬럼에 맞는 순서, 데이터 타입, 길이
  • 밸류스 대신 서브쿼리 사용 가능

행 변경

UPDATE 테이블
SET 컬럼이름 = 변경 값
WHERE 수행할 특정 행 (선택사항)
  • 대상은 '행'이지만 결과적으로는 특정 '컬럼'의 데이터가 변해

행 삭제

DELETE FROM 테이블
WHERE 조건 (선택사항) 웨어절 생략되면 모든 행 삭제

  • 자식테이블의 FK는
    • 포린키가 참조하는 PK의 존재성에 주의
      그 값이 존재하면 가능 / 아니면 불가

  • 부모테이블의 PK는
    • 포린키가 그걸 사용하고 있는지 주의
      사용하고 있으면 수정, 삭제 안돼
    • 삽입, 수정 시 PK안에서 이미 사용되고 있는 값인지 주의
      PK는 중복허용 안 되니까



ㅇ DDL : 테이블 생성 및 관리

  • 한 번 실행마다 자동저장. 조심히 사용하기

테이블 생성

CREATE TABLE 테이블명
(컬럼이름 데이터타입(크기),
 deptno number(2),
 dname varchar2(14),
 loc varchar2(13)
 )

테이블 생성 : 서브쿼리 이용 (통계성 자료)

CREATE TABLE dept80
AS
SELECT employee_id, last_name, salary*12 annsal, hire_date
FROM employees               (컬럼이름 규칙 주의 : 알리아스로 해결)   
WHERE department_id = 80


(테이블에) 열 추가

ALTER TABLE 테이블명
ADD (추가할 컬럼이름 데이터타입(크기))
  • 얘는 열 추가야. 데이터는 널 값 들어가
  • 안에 데이터 추가하고 싶으면 update (insert사용하면 행 추가돼)

열 수정

ALTER TABLE 테이블이름
MODIFY (컬럼이름 바꿀데이터타입(바꿀길이))

열 삭제 (지우는데 시간 걸려)

ALTER TABLE 테이블이름
DROP COLUMN 컬럼이름

상태 정보를 언유스드로 만들어서 삭제한 것 처럼 사용

ALTER TABLE 테이블이름
SET UNUSED (컬럼이름)

테이블 삭제

DROP TABLE 테이블이름

테이블 절단

TRUNCATE TABLE 테이블이름



ㅇ 제약조건 주기

테이블 레벨에서 선언

CREATE TABLE 테이블이름
(컬럼이름 데이터타입(길이),
 dname varchar2(10) NOT NULL,
 CONSTRAINT 제약조건이름 제약조건유형(제약조건을 설치할 컬럼)
            (제약조건이름 = 테이블이름_컬럼이름_제약조건)
 CONSTRAINT dept_did_pk PRIMARY KEY(did)
 CONSTRAINT dept_email_uk UNIQUE(email)
 CONSTRAINT dept_dname_fk FOREIN KEY(dname) - 자식테이블
  REFERENCE 테이블이름(참조할컬럼이름) - 부모테이블
  ON DELETE CASCADE 부모테이블의 행 삭제되는 경우 자식테이블의 종속 행 삭제하겠다
  ON DELETE SET NULL            〃                       참조 값을 NULL로 변형
 CONSTRAINT dept_salary_min CHECK(salary>0)
)
  • PK, UK, FK, CK는 테이블 레벨에서 선언하는 게 관례
  • NOT NULL 은 컬럼 레벨에서 선언하는 게 관례

컬럼 레벨에서 선언

CREATE TABLE dept
(did number(5) constraint dept_did_pk primary key,
 dname varchar2(10)
)



  • 무언가 한 번은 실행 한 뒤 SQL> SAVE test.sql (메모장 만들어져)
  • .sql 메모장 실행 : SQL> @메모장이름.sql
  • 내PC -> 드라이브C(혹은D) -> 오라클xe -> 앱 -> 오라클 -> 프러덕트 -> 11.2.0 -> 서버 -> 빈 -> 내가 저장한 test.sql 메모장으로 열어
  • 메모장 작성할 때 : 끝에 ; 붙이기 . 끝에 / 빼기(이건 버퍼실행명령어라서 마지막 명령어 다시 실행돼)
DROP TABLE test cascade constraints;
DROP TABLE test1 cascade constraints;

CREATE TABLE test
(a number(5),
 b number(5) not null,
 c number(5),
 CONSTRAINT test_a_pk PRIMAYR KEY(a)
);

CREATE TABLE test1
(d number(5),
 e number(5),
 f number(5),
 a number(5),
 CONSTRAINT test1_d_pk PRIMAYR KEY(d),
 CONSTRAINT test1_e_uk UNIQUE(e),
 CONSTRAINT test1_f_ck CHECK(f IN(0,1)),
 CONSTRAINT test1_a_fk FOREIGN KEY(a)
 REFERENCES test(a)
);
profile
STEP BY STEP

0개의 댓글