▼Oracle SQL 忘備録
sqlplus system/pokomoko33
create table emp
(
emp_id char(3) ,
emp_name varchar2(10),
primary key( emp_id )
);
create table kyan
(
kyan_id char(3) ,
kyan_name varchar2(10),
primary key( kyan_id )
);
select emp_id, emp_name from emp;
insert into emp( emp_id, emp_name) VALUES( 2, '和葉');
insert into kyan( kyan_id, kyan_name) VALUES( 10, '亮');
update emp set emp_id = 3 , emp_name = '結菜' WHERE emp_id = 2;
delete from emp where emp_id = 3;
▼表をSELECTして別の表へINSERTする
insert into kyan( kyan_id, kyan_name ) select emp_id, emp_name from emp where emp.emp_id = 2;
▼例1) 表「emp99」の列「dept_name」を表「dept」の列「dept_name」の値で更新する
update emp99 ep set dept_name = (select dp.dept_name from dept dp where ep.dept_id = dp.dept_id);
▼例2) 例1)の更新で、表「dept」に対象のレコードが存在しない場合は更新しないようにする
update emp99 ep set dept_name = (select dp.dept_name from dept dp where ep.dept_id = dp.dept_id) where exists( select 'X' from dept dd where ep.dept_id = dd.dept_id);
▼例3)SELECTした複数の項目でUPDATEするの場合の記述方法
update emp ep set (dept_name, dept_etc) = (select dp.dept_name, dp.dept_etc from dept dp where ep.dept_id = dp.dept_id);
▼複数表SELECT
http://www.atmarkit.co.jp/ait/articles/1203/22/news164.html
▼共通列の存在を前提とするNATURAL JOIN句
SELECT emp.ename, deptno, dept.dname FROM emp NATURAL JOIN dept;
▼USING句で共通列を指定する
SELECT emp.ename, deptno, dept.dname FROM emp JOIN dept USING (deptno);
▼ON句を使えば異なる名前の列を共通列にできる
SELECT emp.ename, dept.deptno, dept.dname FROM emp JOIN dept ON emp.deptno=dept.deptno;
▼表別名を利用して表記をシンプルにする
SELECT e.ename, d.deptno, d.dname FROM emp e JOIN dept d ON e.deptno=d.deptno;
drop table kyan;
desc emp;
rollback;
commit;
ALTER TABLE testk1 MODIFY (
char_col VARCHAR2(50),
number_col NUMBER(14)
);
ALTER TABLE testk1 add (
char_col VARCHAR2(50),
number_col NUMBER(14)
);
----------------------------------------------------------------
ALTER TABLE my_table ADD ( time_col TIMESTAMP(3) ) ;
----------------------------------------------------------------
