DDL(데이터 정의어) - 객체를 생성 : CREAT, 구조변경 : ALTER, 제거 : DROP
CREAT 객체종류
ex) CREAT TABLE, CREAT VIEW, CREAT SEQUENCE
prod_no VARCHAR2(5) xxxxx
컬럼명, 자리수, 기본값설정, 제약조건
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
1. 테이블 생성
CREAT TABLE product(
prod_no VARCHAR2(5),
prod_name VARCHAR2(20)
);
ㅡㅡ구조확인
DESC : 데이터베이스에서 쿼리 실행할때 SQL문법을 사용하여 ORDER BY절을 작성하고
해당열의 정렬방식을 DESC로 지정 - 내림차순
DESC : MYSQL에서 "DESCRIBE"문을 사용하여 테이블의 구조를 확인할때 사용한다.
DESC product
2. 테이블 구조변경 - 숫자형으로 변경
1) 컬럼추가
ALTER TABLE product
ADD prod_price NUMBER(1); -- 테이블에 prod-price라는 새로운 열 추가
가격정보저장, 1자리수
ALTER TABLE product
ADD a NUMBER(1); -- 숫자형으로 1자리
2) 컬럼이름변경
ALTER TALBE product
RENAME COLUMN a TO abc; -- 이름을 abc로 변경
3)컬럼의 자료형 또는 자릿수 변경, 기본
ALTER TABLE product
MODIFY prod_price NUMBER(6); -- 6자리
ALTER TABLE product
MODIFY prod_price DEFAULT 0;
ALTER TABLE product
MODIFY prod_name VARCHAR2(100);
4)컬럼 삭제
ALTER TABLE product
DROP COLUMN abc; -abc 컬럼 삭제
5)제약조건 추가 -- (중복,NULL - PK제약조건에 위배된다)
(테이블레벨로 추가) 테이블 추가해서 제약조건 추가
ATLER TABLE product
ADD CONSTRAINTS prod_no_pk PRIMARY KEY(prod_no);
ADD CONSTRAINTS (제약조건 이름-테이블명,제약조건약자, 제약조건)
(컬럼 레벨로 추가) 기본 컬럼 변경해서 제약조건추가
ALTER TALBE product
MODIFY prod_name CONSTRINTS prod_name_nn NOT NULL:
★★제약 조건 : PRIMARY KEY, NOT NULL★★
NULL을 넣으려해도 오류가 나고, 중복된 제품을 넣어도 오류가 난다!
3. 테이블 제거
DROP TABLE product; --product 테이블 제거
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
4. 무결성 제약조건
무결성제약조건을 설정하는 방법은 테이블레벨로 설정, 컬럼레벨로 설정하는 방법이 있다
그중 NOT NULL제약조건은 컬럼레벨로만 설정할 수 있다!
(1) 테이블레벨로 설정
CREATE TABLE t_a (컬럼, 디폴트, 제약조건이름, 제약종류 (참여컬럼명))
CREATE TABLE t_a(c_a number(5) default 0,
c_b varchar2(10),
constraint c_a_pk PRIMARY KEY(c_a),
constraint c_b_pk CHECK (c_b IN ( '남' , '여' ))
)
(2)컬럼레벨로 설정
CREATE TABLE t_A(컬럼 디폴트 제약조건
컬럼 제약조건 )
CREATE TABLE t_A(c_a number(5) default 0 constraint c_a_pk PRIMARY KEY,
c_b varchar2(10) constriant c_b_ck CHECK(c_b IN ( '남' , '여' ))
1. NOT NULL ㅡ
2. UNIQUE
3. PRIMARY KEY : NOT NULL + UNIQUE
4. CHECK
5. FOREGIN KEY : 다른테이블의 PRIMARY KEY 만 참조하겠다.
ㅡㅡㅡ참조 안하면 오류가 생김!ㅡㅡ
DML(데이터 조작어) - 추가 : INSERT, 수정:UPDATE, 삭제:DELETE
1. 데이터추가 (상품추가)
INSERT INTO TABLE명 ( DD,OO) VALUES (NO, NAME) 들어가면됨
INSERT INTO product(prod_no, prod_name) VALUES( 'C0001' , '아메리카노' );
INSERT INTO product(prod_no, prod_name) VALUES( 'C0002' , '라떼' );
INSERT INTO product(prod_no, prod_name) VALUES( 'C0003' , '핫초코' );
INSERT INTO product(prod_no, prod_name) VALUES( 'C0004' , '아이스딸기아사이' );
INSERT INTO product VALUES ( 'F0001' , '치즈케이크' , 1000);
INSERT INTO product VALUES ( 'F0002' , '치즈베이글' , NULL); --가격미정이면 NULL
INSERT INTO product VALUES ( 'F0003' , '치킨샌드위치' , ' ' ); -- NULL값 이랑 같음
INSERT INTO product VALUES ( 'F0004' , '밀박스' ); -- 상품가격입력 필수!!
NULL, null, ' '으로도 가능함!! F4처럼 상품가격을 입력안하면 출력안됨!!
INSERT INTO product VALUES( 'C0001' , '다른상품' , 0 ); -- 중복되지 않게 하려면
INSERT INTO product VALUES( ' ' , '번호없는상품1' , 0 );
INSERT INTO product VALUES( ' ' , '번호없는상품2' , 0 );
DELETE product WHERE prod_no IS NULL; -상품번호가 NULL인애들 삭제
DELETE product WHERE prod_name = '다른상품'; --이름이 다른상품인 애들 삭제
DELETE product WHERE prod_name IS NULL; --삼품이름이 NULL인애들 삭제
INSERT INTO product(prod_no, prod_name) VALUES ( 'D0001' , '라임블렌디드'); --성공!
INSERT INTO product(prod_no, prod_name) VALUES ( 'D0002' , NULL );
ㅡㅡNOT NULL제약조건을 추가해야함!ㅡㅡ
'수업 > DB' 카테고리의 다른 글
230620 트랜잭션, 스냅샷, 커밋 (0) | 2023.06.20 |
---|---|
230619 DB, 오라클에서 ERD여는법 (0) | 2023.06.19 |
230616 (SUBQUERTY, Scalar Subquery,SELECT 문제풀이) (0) | 2023.06.16 |
230615 (JOIN, UNION) (2) | 2023.06.15 |
230615 DB HAVING 절 (0) | 2023.06.15 |