hokaisisaのブログ

hokaisisaのブログ

ブログの説明を入力します。

Amebaでブログを始めよう!

▼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) ) ;
----------------------------------------------------------------