[SQL] 테이블 생성/ 제약 조건/ 칼럼 추가/ 테이블 삭제

kafa·2023년 2월 23일
0

Java 복습

목록 보기
1/7

erd
https://choiseungyoun.github.io/posts/what-is-erd/

SQL

구조적 쿼리 언어(SQL)는 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어입니다. 관계형 데이터베이스는 정보를 표 형식으로 저장하며, 행과 열은 다양한 데이터 속성과 데이터 값 간의 다양한 관계를 나타냅니다. SQL 문을 사용하여 데이터베이스에서 정보를 저장, 업데이트, 제거, 검색 및 검색할 수 있습니다. 데이터베이스 성능을 유지 관리하고 최적화하는 데 SQL을 사용할 수도 있습니다.

SQL은 어떻게 작동하나요?

구조적 쿼리 언어(SQL) 구현에는 데이터베이스 쿼리를 처리하고 결과를 반환하는 서버 시스템이 필요합니다. SQL 프로세스는 다음을 포함한 여러 소프트웨어 구성 요소를 거칩니다.

오라클

오라클?

오라클(Oracle Corporation)은 미국 텍사스에 본사를 둔 매출 규모 세계 2위의 소프트웨어 회사이다. 이 회사의 대표적인 제품인 데이터베이스 제품, 오라클 RDBMS는 세계 최고의 점유율을 차지하고 있다. 2014년 오라클은 마이크로소프트에 이어 소득 기준으로 2번째로 큰 소프트웨어 제조사였다.[1] 2009년 4월 20일, 오라클은 자사가 세계 4대 컴퓨터 서버 업체인 미국 썬 마이크로시스템즈를 74억 달러(약 10조 원)에 인수했다는 것을 발표했다.[2]
주석문은 --를 이용한다.

....필요없어

DCL 데이터 제어어

사용자를 생성하고 권한을 부여, 삭제하는 명령어
미리 데이터베이스에 세팅 되어있어야 하는 부분이라 맨 처음 해야한다.
처음엔 시스템 아이디를 가지는 DVA라는 권한을 줌.

DDL(데이터정의어)

자료를 저장하기 전에 설정하는 구조적인 것. 테이블 생성가거나 하는거.

소문자 바뀌는 부분
GRANT CONNECT, RESOURCE, DBA TO DS204; -- 접근 리소스사용, dba권한 부여
지울때는
REVOKE CONNECT, RESOURCE, DBA FROM DS204; -- 권한 제거
DROP USER DS204 CASCADE; --사용자삭제
ALTER USER DS204 ACCOUNT UNLOCK; --암호 3번 오류에 따른 락 풀기
-- 절대실행X

써먹은 거

  • CREATE
    새로운 테이블(표)를 만들때 앞에 쓴다.
CREATE TABLE membertbl(

오라클은 VARCHAR2, SQL은 VARCHAR로 쓰고 가변 가능할때 사용한다.
CHAR은 불변길이다. CHAR(3) 'A' != 'A' 고 'A' != 'A '다. A뒤에 공백이 두개 들어간다.

userid VARCHAR2(50),

  • NUMBER
    정수 및 실수를 저장
userage NUMBER(3),

  • DATE
    날짜와 시각정보
    오라클은 1초단위
    sql서버는 3.33ms단위 관리
userdate DATE,

CONSTRAINT membertbl_pk PRIMARY KEY(userid), --기본키 
CONSTRAINT membertbl_gender CHECK(usergender IN('M','F')) --성별 //둘중 하나만!

  • CHECK
    체크란 데이터를 입력할때 해당 값이 조건에 부합하는지 체크를 하는 것이다.
    부합이 되면 입력을 하고, 부합되지 않으면 입력되지 않도록 한다.
CONSTRAINT membertbl_gender CHECK(usergender IN('M','F')) 
--성별 //둘중 하나만! //어느쪽도 아니면 입력x

  • ALTER TABLE ~ ADD, MODIFY, DROP
    도중에 칼럼을 추가할때 사용한다.
    ADD, MODIFY, DROP
ALTER TABLE membertbl ADD usermail VARCHAR2(100);

  • DROP TABLE ~ CASCADE
    제약조건 걸려있는 테이블을 삭제할 때 사용.
    옵션의 CASECADE CONSTRAINTS라는 것은 현재 테이블에 제약조건이 걸려있는데 해당 테이블을 삭제하려 할 때다. 다른 테이블에 참조관계나 제약관계에 있다고 하면 CASECADE CONSTRAINTS 라는 옵션을 넣지 않을 경우 테이블이 삭제가 되지 않는다.
DROP TABLE membertbl CASCADE CONSTRAINTS; --제약조건을 포함한 테이블 삭제

  • FOREIGN KEY
    FOREIGN KEY
    외래키는 두 테이블을 서로 연결하는 데 사용되는 키이다. 외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 제공하는 테이블을 부모 테이블이라 한다.
  1. 외래키 사용시 주의 사항
    1) 외래키 값은 NULL이거나 부모 테이블의 기본키 값과 동일해야한다. (참조 무결성 제약조건)
    2) 부모 테이블의 기본키, 고유키를 외래키로 지정할 수 있다.
    3) 부모 테이블의 기본키, 고유키가 여러개의 컬럼으로 이루어져 있다면 부모가 가진 기본키, 고유키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정할 수 있다
    4) 외래키로 지정할 두 테이블의 필드는 같은 데이터 타입이어야 한다.
CONSTRAINT memberaddrtbl_fk FOREIGN KEY(userid) REFERENCES membertbl(userid)
							-- FOREIGN KEY() 외래키 / REFERENCES 참조 어디의()

  • PRIMARY KEY
    고유키로 membertbl_pk와 같이 많이들 pk라는 표식을 붙여주는 편이다.
CONSTRAINT membertbl_pk PRIMARY KEY(userid), --기본키 
CONSTRAINT membertbl_gender CHECK(usergender IN('M','F')) --성별 //둘중 하나만!

전체코드 확인

-- 회원 테이블 membertbl

CREATE TABLE membertbl(

userid VARCHAR2(50), -- VARCHAR2 = String //몇자인가:50자
userpw VARCHAR2(200), -- 암호화 되므로 200자 //aaa라고 비번을 넣으면 fndjkwoijoi3u14h3i5...로 
username VARCHAR2(15), -- 2바이트(= 한 15자 ) //한글은 길어서
userage NUMBER(3), -- NUMBER = Integer //100세 넘어가는 사람 잘 없으니 3자리
userphone VARCHAR2(15), --'010-0000-0000' //-가 들어있어서 문자열로 취급
usergender VARCHAR2(1), -- M or F 
userdate DATE, --가입일자 DATE 연월일

-- 위에 것들 중 고유한 것을 기본키로 잡는다
-- 연락처나 아이디나 이메일 등등
-- 제약조건 걸기 (아래)

CONSTRAINT membertbl_pk PRIMARY KEY(userid), --기본키 
CONSTRAINT membertbl_gender CHECK(usergender IN('M','F')) --성별 //둘중 하나만!

);

--세미클론 있는거 하나씩 실행(세미콜론 영향안에 커서 올리고 컨트롤+엔터)

-- 테이블 만든 후 컬럼추가하기 : ADD, MODIFY, DROP를 이용할 수 있다.
-- // 사실 이런 일은 프로젝트 도중에 일어나선 안되는 일(프로젝트 설계상 문제)
ALTER TABLE membertbl ADD usermail VARCHAR2(100);

-- 테이블 삭제
DROP TABLE membertbl CASCADE CONSTRAINTS; --제약조건을 포함한 테이블 삭제

-------------------------------------------------------------------

-- 회원 주소 테이블 memberaddrtbl

CREATE TABLE memberaddrtbl(

userno NUMBER, --int //기본키. 바꿀수 없다
useraddr VARCHAR2(100), --str
userpostcode NUMBER(5), --int
userdate TIMESTAMP, -- TIMESTAMP :연월일시
userid VARCHAR2(50), --str //외래키. 어디서 갖고와야함(어디서?) //userid에만 주소를 넣을 것이다

CONSTRAINT memberaddrtbl_pk PRIMARY KEY(userno), --기본키는 userno를 쓸거다
CONSTRAINT memberaddrtbl_fk FOREIGN KEY(userid) REFERENCES membertbl(userid)
							-- FOREIGN KEY() 외래키 / REFERENCES 참조 어디의()

);

profile
kafa is kafa. not be something other.

0개의 댓글