오라클은 문자열을 ' '으로만 묶어야한다.
create table
drop table 테이블명;
Oracle alter table | |
컬럼 추가 (테이블스키마의 가장 아래쪽) | alter table 테이블명 add 컬럼명 컬럼타입(길이); |
컬럼 삭제 | alter table 테이블명 drop column 컬럼명; |
컬럼명 수정 | alter table 테이블명 reman column 기존컬럼명 to 새컬럼명 ; |
컬럼길이 수정 | alter table 테이블명 modify 컬럼명 새타입(새길이); |
Mysql alter table | |
컬럼 추가 | alter table 테이블명 add 컬럼명 컬럼타입(길이) first/last/after 컬럼명/before 컬럼명; |
컬럼 삭제 | alter table 테이블명 drop 컬럼명; |
컬럼 수정 | alter table 테이블명 change 기존컬럼명 새컬럼명 새타입(새길이); |
desc 테이블명;
내가 만든 테이블 목록 보기 : select * from user_tables;
<코드>
select table_name from user_tables;
desc student;
alter table student add birthday char(8);
alter table student drop column math;
alter table student drop column korean;
alter table student drop column english;
alter table student modify gender varchar2(6);
alter table student rename column name to sname;
<결과>
==========================================
테이블 복사 : create table A as select * from B;
==========================================
index : 검색속도 향상
: create index 인덱스명 on 테이블명(컬럼1,...,컬럼n);
: drop index 인덱스명;
==========================================
인사부 : employees 총무부 : member 자재부 : worker
create synonym worker for employees;
select * from worker;
create synonym member for employees;
select* from member;
==========================================
create sequence s1 increment by 1 start with 1 nocycle
increment by -1
start with 0
minvalue -10
ex)
s1.nextval => 0
s1.nextval => -1
...
s1.nextval => -10
s1.nextval => error <= nocycle
0 <= cycle
==========================================
partition table : 1개의 큰 테이블을 여러개의 데이터파일에 분리해서 보관하는 것
===========================================
Oracle insert : 데이터를 테이블에 보관/저장/추가 | |
스키마에 나오는 컬러명 순서대로 | insert into 테이블명 values(값1,...,값n) |
순서가 기억나지 않을때 | insert into 테이블명(컬럼명1,...,컬럼명n) values (값1,...,값n); |
스키마(테이블)가 이미 존재할때 | insert into 테이블명 select * from 테이블명2 |
스키마(테이블)가 존재하지 않을때 | create table 테이블명 select * from 테이블명2 |
Mysql insert : 데이터를 테이블에 보관/저장/추가 | |
insert into 테이블명 set 컬럼명1=값1,...,컬럼명n=값n | |
insert into 테이블명 select * from 테이블명2 |
<코드>
insert into menu values('아메리카노',2500);
insert into menu values('라떼',3000);
insert into menu values('카푸치노',3200);
insert into menu values('카페모카',3500);
insert into menu values('핫초코',3000);
insert into menu values('매실차',3400);
insert into menu values('유자차',3300);
alter table student modify eng_score number default 0;
alter table student modify kor_score number default 0;
alter table student modify math_score number default 0;
insert into student(sname,gender,birthday) values('김민준','남성','20000327');
insert into student(sname,gender,birthday) values('이서연','여성','20000424');
insert into student(sname,gender,birthday) values('이서준','남성','20000322');
insert into student(sname,gender,birthday) values('유서윤','여성','20000902');
insert into student(sname,gender,birthday) values('윤도윤','남성','20000512');
insert into student(sname,gender,birthday) values('김지우','여성','20001203');
insert into student(sname,gender,birthday) values('박예준','남성','20000607');
insert into student(sname,gender,birthday) values('박민서','여성','20000721');
insert into student(sname,gender,birthday) values('정지후','남성','20000811');
insert into student(sname,gender,birthday) values('최수아','여성','20000207');
<결과>
menu | student |
![]() |
![]() |
==================================================================
연산자 | |
산술연산자 | +, -, *, /, ||(연결연산자), remainder() |
비교연산자 | =, >, <, <=, >=, !=, <>(같지 않다), in, is null, is not null 컬럼명 between 값1 and 값2 == 컬럼명 >= 값1 and 걸럼명 <= 값2 like : 문자열데이터의 조건비교 [% : 0개 이상의 문자] [_ : 1개의 문자] |
논리연산자 | and, or, not |
집합연산자 | 합집합 : union / union all 교집합 : intersect 차집합 : minus |
<산술 연산자 코드>
select 3*2+4-2+12/4-3 from dual;
select '이름:'||emp_name||',월급:'||salary||'달러'from worker;
<결과>
![]() |
![]() |
<비교 연산자 코드>
select * from student where math_score=0;
select emp_name,salary from employees where salary in (2000,3000,4000,5000,6000);
select emp_name,salary from employees where salary between 2000 and 6000;
select emp_name from employees where emp_name like '% J%';
/*성이 G로 시작하는 사람 찾기*/
select emp_name from employees where emp_name like '% G%';
select emp_name from employees where emp_name like '___ %';/*이름이 세글자*/
select emp_name from employees where emp_name like '% _____';/*성이 다섯글자*/
select * from student where birthday is null;
select emp_name,salary from employees where salary between 5000 and 10000 and emp_name like 'P%';
<결과>
select * from student where math_score=0; : student table에서 math_score이 0인 사람. |
![]() |
select emp_name,salary from employees where salary in (2000,3000,4000,5000,6000); : employees 테이블에서 salary가 2000,3000,4000,5000,6000인 사람 |
![]() |
select emp_name,salary from employees where salary between 2000 and 6000; : employees 테이블에서 salary가 2000에서 6000인 사람 |
![]() |
select emp_name from employees where emp_name like '% J%'; : employees에서 emp_name 성이 J로 시작하는사람 |
![]() |
select emp_name from employees where emp_name like '% G%'; : employees 테이블에서 emp_name 성이 G로 시작하는 사람 |
![]() |
select emp_name from employees where emp_name like '___ %'; : employees에서 emp_name 이름이 세글자인 사람 |
![]() |
select emp_name from employees where emp_name like '% _____'; : employees에서 emp_name 성이 다섯글자인 사람 |
![]() |
select * from student where birthday is null; : student에서 birthday가 null 일때 |
![]() |
select emp_name,salary from employees where salary between 5000 and 10000 and emp_name like 'P%'; : employees에서 5000에서 10000사이, emp_name 이름이 P로 시작하는 사람 |
![]() |
====================================
delete : 조건에 해당하는 레코드를 테이블에서 제거 | |||
테이블의 모든 데이터가 삭제된다. |
delete from 테이블명 | ≒ truncate table 테이블명 | ≒ drop table 테이블명 |
rollback; = 실행취소 | schema는 남는다. rollback 가능 복구 가능 |
schema는 남는다. rollback 불가능 복구가 불가능하다. |
schema 삭제 rollback 불가능 복구 불가능 |
delete form 테이블명 where 조건식(연산자,표현식) => row/record 단위로 삭제 |
delete 했을 경우 하면 안되는 행동
truncate table employees | |
create table worker as select * from employees; | insert into employees select * from worker; |
commit | rollback | drop |
변경한 데이터를 데이터베이스에 마지막으로 반영(확정) | 변겅한 데이터를 변경하기 이전 상태로 되돌리기 create는 대상이 되지 않음 |
1. 사본 작성(생성) 2. 원본 drop 3. 사본 drop |
auto commit | auto rollback | 휴지통에 들어가 있다. |
sqlplus, sqldevelope 정상종료 할때 | sqlplus, sqldevelope 강제종료 할 때 |
<코드>
select * from worker;
delete from worker where salary <=2500;
rollback;
/*매니저 아이디가 null인사람 모두 삭제*/
select * from worker where manager_id is null;
delete from worker where manager_id is null;
/*월급이 5000불이거나 이름이 M으로 시작하는 사람 삭제*/
select * from worker where salary=5000 or emp_name like 'M%';
delete from worker where salary=5000 or emp_name like 'M%';
<결과>
delete from worker where salary <=2500; : worker의 salary가 2500보다 작을 때 |
![]() |
delete from worker where manager_id is null; : worker의 manager_id가 null일 때 |
![]() |
delete from worker where salary=5000 or emp_name like 'M%'; : worker의 salary가 5000이거나 emp_name 이름이 M으로 시작할때 |
![]() |
<코드>
create table labor(
emp_id number,
ename varchar2(32)
);
insert into labor select employee_id, emp_name from employees;
select *from labor;
<결과>
![]() |
create table labor( emp_id number, ename varchar2(32) ); insert into labor select employee_id, emp_name from employees; => 타입&길이를 무조건 맞춰야 한다. 만약 insert into labor select emp_name, employee_id from employees; 쓴다면 타입이 맞지 않는다고 값이 들어가지 않는다. |
DB.....
변경사항 아니오...
2023.02.13 (0) | 2023.02.13 |
---|---|
2023.02.10 (0) | 2023.02.10 |
2023.02.09 (0) | 2023.02.09 |
2023.02.08 (0) | 2023.02.09 |
2023.02.06 (0) | 2023.02.06 |