Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 자바
- 개발자
- variable
- HTML
- datatype
- Eclipse
- VisualStudioCode
- Java
- select
- 이클립스
- 삐옥
- 오라클오류
- 코딩
- From
- error
- SQL
- 에러
- Operator
- JS
- CSS
- 서블릿
- 자료형
- function
- 오류
- Servlet
- oracle
- sqldeveloper
- 연산자
- 오라클
- 변수
Archives
- Today
- Total
뇨내
[Oracle-SQL Developer] DDL : Data Definition Language 본문
DDL(Data Definition Language)
- 데이터 정의어
- 관리자 베이스 담당자가 사용
- 데이터베이스 객체를 생성, 수정, 삭제한다.
- 데이터베이스 객체 > 테이블, 뷰, 인덱스, 트리거, 프로시저, 제약 사항 등..
- AUTO COMMIT
- CREATE, ALTER, DROP, RENAME
테이블 생성하기 > 스키마 정의하기 > 속성(컬럼) 정의하기 > 속성(컬럼) 성격(이름)과 도메인(자료형)을 정의하기
CREATE
CTREATE TABLE 테이블명
(
컬럼 정의,
컬럼 정의,
컬럼 정의,
...
컬럼명 자료형(길이) NULL표기 제약사항
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
-- 메모 테이블
create table tblMemo
(
--컬럼명 자료형(길이) NULL표기 제약사항
seq number(3), -- 메모번호
name varchar2(30), -- 작성자
memo varchar2(1000), -- 메모 내용
regdate date -- 작성 날짜
);
-- 테이블 잘 생성되었는지 확인
select * from tblMemo;
--tabs: 시스템 테이블. 현재 계정(HR)이 소유하고 있는 모든 테이블 목록
select * from tabs;
|
cs |
ALTER
- 추가
ALTER TABLE 테이블 이름 ADD 속성/이름 데이터타입 [DEFAULT];
- 변경
ALTER TABLE 테이블 이름 ALTER 속성/이름 데이터타입 [SET DEFAULT];
- 삭제
ALTER TABLE 테이블 이름 DROP 속성/이름 데이터타입 [CASACADE | RESTRICT];
RENAME
ALTER TABE 테이블명
RENAME COLUMN 변경 전 컬럼명 TO 변경 후 컬럼명;
DROP
ALTER TABLE 테이블명;
ALTER TABLE 테이블명 DROP COLUMN 삭제 할 컬럼명;
연습
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
drop table tblMemo;
delete from tblMemo;
-- 데이터 추가하기
insert into 테이블명(컬럼리스트) values (값리스트);
insert into tblMemo(seq, name, memo, regdate) values (1, '홍길동', '메모입니다.', sysdate);
insert into tblMemo(seq, name, memo, regdate) values (1, '홍길동', '메모입니다.', sysdate);
-- > 데이터 중복발생
insert into tblMemo(seq, name, memo, regdate) values (2, null, null, null); -- 3개는 값이 無
insert into tblMemo(seq, name, memo, regdate) values (null, null, null, null); -- 절대 생성 금지!
insert into tblMemo(seq, name, memo, regdate) values (3, '아무개', '공부할것', '2021-11-14'); -- 암시적 형변환
insert into tblMemo(seq, name, memo, regdate)
values (4, '호호호', '메모장', to_date('2021-11-13 14:05:30', 'yyyy-mm-dd hh24:mi:ss'));
select * from tblMemo;
select count(*) from tblMemo;
--처음 넣은 메모만 가져오시오.
select * from tblMemo where seq = 1;
select * from tblMemo where name = '홍길동';
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
-- 메모 테이블
drop table tblMemo;
create table tblMemo
(
seq number(3) not null, --메모번호(NN)
name varchar2(30) null, -- = null > 값을 안넣어도 된다.
memo varchar2(1000) not null, --메모내용(NN)
regdate date null -- = null을 허용하겠다.
);
select * from tblMemo;
insert into tblMemo(seq, name, memo, regdate) values (1, '홍길동', '메모입니다.', sysdate);
insert into tblMemo(seq, name, memo, regdate) values (null, '홍길동', '메모입니다.', sysdate);
--ORA-01400: cannot insert NULL into ("HR"."TBLMEMO"."SEQ")
-- = HR이 소유하고있는 tblmeomo 테이블에 seq값에 null을 넣을 수 없습니다.
insert into tblMemo(seq, name, memo, regdate) values (2, '홍길동', '메모입니다.', sysdate);
insert into tblMemo(seq, name, memo, regdate) values (3, '홍길동', null, sysdate); --에러
insert into tblMemo(seq, name, memo, regdate) values (3, '홍길동', "", sysdate);
--SQl에서는 빈문자열("")도 null로 취급한다.
-- "" : 빈문자열 = null
insert into tblMemo(seq, name, memo, regdate) values (3, null, '내용', null);
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
-- 메모 테이블
drop table tblMemo;
create table tblMemo
(
seq number(3) primary key, -- 메모번호(PK)
name varchar2(30) null,
memo varchar2(1000) not null,
regdate date null
);
insert into tblMemo(seq, name, memo, regdate) values (1, '홍길동', '메모입니다.', sysdate);
insert into tblMemo(seq, name, memo, regdate) values (1, '아무개', '테스트~.', sysdate);
-- ORA-00001: unique constraint (HR.SYS_C007095) violated
-- = 유니크(PK는 유니크라는 제약사항을 포함한다.)한 상황을 위반했습니다.
insert into tblMemo(seq, name, memo, regdate) values (2, '아무개', '테스트~.', sysdate);
insert into tblMemo(seq, name, memo, regdate) values (123, '아무개', '테스트~.', sysdate);
-- ORA-01400: cannot insert NULL into ("HR"."TBLMEMO"."SEQ")
insert into tblMemo(seq, name, memo, regdate) values (null, '아무개', '테스트~.', sysdate);
select * from tblMemo;
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-- 메모 테이블
drop table tblMemo;
create table tblMemo
(
seq number(3) primary key, -- 메모번호(PK)
name varchar2(30) unique, -- 작성자(유일한 값 + NULL 허용)
memo varchar2(1000) not null,
regdate date null
);
insert into tblMemo(seq, name, memo, regdate) values (1, '아무개', '테스트~.', sysdate);
insert into tblMemo(seq, name, memo, regdate) values (2, '아무개', '테스트~.', sysdate);
--ORA-00001: unique constraint (HR.SYS_C007098) violated
insert into tblMemo(seq, name, memo, regdate) values (3, null, '테스트~.', sysdate);
insert into tblMemo(seq, name, memo, regdate) values (4, null, '테스트~.', sysdate);
select * from tblMemo;
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-- 메모 테이블
drop table tblMemo;
create table tblMemo
(
seq number(3) primary key, -- 메모번호(PK)
name varchar2(30),
memo varchar2(1000),
regdate date,
--lv number(1) not null check(조건) -> 중요도(1~5) where lv >=1 and lu <=5
--lv number(1) not null check(lv >= 1 and lv <= 5)
--lv number(1) not null chech (lv between 1 and 5)
--color varchar2(30) check(color = '빨강' or color = '파랑' or color = '노랑') -- 메모 색상(빨강, 파랑, 노랑)
--color varchar2(30) check(color in ('빨강', '파랑', '노랑'))
--jumin varchar2(13) check (substr(jumin, 7, 1) = '-')
);
insert into tblMemo(seq, name, memo, regdate, lv) values (1, '아무개', '테스트~.', sysdate, 1);
-- ORA-02290: check constraint (HR.SYS_C007062) violated
insert into tblMemo(seq, name, memo, regdate, lv) values (2, '아무개', '테스트~.', sysdate, 6);
select * from tblMemo;
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-- 메모 테이블
drop table tblMemo;
create table tblMemo
(
seq number(3) primary key, -- 메모번호(PK)
name varchar2(30) default '익명',
memo varchar2(1000),
regdate date default sysdate
);
select * from tblMemo;
-- ORA-00001: unique constraint (HR.SYS_C007064) violated
-- ORA-00001: unique constraint (HR.SYS_C007043) violated
-- ORA-00001: unique constraint (HR.SYS_C007234) violated
insert into tblMemo(seq, name, memo, regdate) values (1, '아무개', '테스트~.', sysdate);
insert into tblMemo(seq, memo) values (2, '테스트~.'); --name, regdate 안넣음
select * from tblMemo; -- 2 익명 테스트~. 21/11/15
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
-- 메모 테이블
drop table tblMemo;
create table tblMemo
(
--tblmemo_seq_pk
--tblmemo_name_uq
--tblmemo_color_ck
seq number(3) constraint tblmemo_seq_pk primary key, --메모번호(PK)
name varchar2(30),
memo varchar2(1000),
regdate date
);
select * from tblMemo;
insert into tblMemo(seq, name, memo, regdate) values (1, '아무개', '테스트~.', sysdate);
-- ORA-00001: unique constraint (HR.TBLMEMO_SEQ_PK) violated
-- ORA-00001: unique constraint (HR.SYS_C007102) violated (위에 에러, 차이보기!)
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
-- 메모 테이블
drop table tblMemo;
create table tblMemo
(
--컬럼 정의
seq number(3),
name varchar2(30),
memo varchar2(1000),
regdate date,
--제약사항 정의
constraint tblmemo_seq_pk primary key(seq),
constraint tblmemo_name_uq unique(name),
constraint tblmemo_regdate_ck check(to_number(to_char(regdate, 'hh24')) between 9 and 15)
);
insert into tblMemo(seq, name, memo, regdate) values (1, '아무개', '테스트~.', sysdate);
insert into tblMemo(seq, name, memo, regdate) values (1, '아무개', '테스트~.', sysdate);
insert into tblMemo(seq, name, memo, regdate) values (2, '아무개', '테스트~.', sysdate);
insert into tblMemo(seq, name, memo, regdate) values (2, '호호호', '테스트~.', sysdate);
select to_char(regdate, 'yyyy-mm-dd hh24:mi:ss') from tblMemo;
|
cs |
'Oracle > DDL + DML + DCL' 카테고리의 다른 글
[Oracle-SQL Developer] Transaction 트랜잭션 (0) | 2021.12.25 |
---|---|
[Oracle -SQL Developer] DML : Data Manipulation Language (0) | 2021.11.21 |
Comments