SAMPLE SQL

department表作成

CREATE TABLE department(
   deptno    NUMBER(2)     CONSTRAINT pk_department PRIMARY KEY,
   dname     VARCHAR2(14)
);

1行目:department表の作成
2行目:NUMBER型最大精度2桁のdeptnp列定義、主キー制約定義
3行目:VARCHAR2型最大14桁のdname列定義

employee表作成

CREATE TABLE employee(
   empno     NUMBER(4)     CONSTRAINT pk_employee PRIMARY KEY,
   ename     VARCHAR2(10)  CONSTRAINT notnull_ename NOT NULL,
   job       VARCHAR2(9),
   mgr       NUMBER(4)     CONSTRAINT fk_mgr REFERENCES employee(empno),
   hiredate  DATE          DEFAULT SYSDATE,
   sal       NUMBER(7,2)   CONSTRAINT check_sal CHECK (sal>0),
   comm      NUMBER(7,2),
   deptno    NUMBER(2)     REFERENCES department(deptno),
 CONSTRAINT check_empno CHECK (empno>0)
);

3行目:varchar2型ename列にnotnull_enameという名称でNOT NULL制約を設定
5行目:number型mgr列にfk_mgrという名称で、employee表のempno列を親キーとする参照整合性制約を設定
6行目:date型hiredate列にデフォルトとしてsysdateを設定
7行目:numbdr型sal列にcheck_salという名称で、0より大きい値のみを入力させるチェック制約を設定
9行目:number型deptno列に名称を指定せずに、department表のdeptno列を親キーとする参照整合性制約を設定
10行目:empno列にcheck_empnoという名称で、0より大きい値のみを入力させるチェック制約を設定

department表削除

DROP TABLE department CASCADE CONSTRAINTS;

department表とdepartment表を参照している制約を削除

employee表削除

DROP TABLE employee;

employee表を削除

employee表列定義変更

ALTER TABLE employee MODIFY (sample char(20));

employee表のsample列のサイズを20バイトに変更

employee表制約追加

ALTER TABLE employee ADD CONSTRAINT uni_sample UNIQUE(sample);

employee表のsample列にuni_sample という名称でUNIQUE制約を追加

employee表制約変更

ALTER TABLE employee DROP CONSTRAINT uni_sample;

employee表の制約uni_sampleを削除

employee表制約無効化

ALTER TABLE employee DISABLE CONSTRAINT check_sal;

employee表のcheck_sal制約を無効化

employee表制約有効化

ALTER TABLE employee ENABLE CONSTRAINT check_sal;

employee表のcheck_sal制約を有効化

user_tables参照

SELECT table_name FROM user_tables;

データディクショナリーuser_tablesからtable_name列(表名称)を検索

user_constraints参照

SELECT constraint_name, constraint_type,table_name,status
FROM user_constraints
WHERE table_name IN ('DEPARTMENT','EMPLOYEE');

データディクショナリーuser_constraintsから
table_nameがDEPARTMENTかEMPLOYEEであるデータの
constraint_name(制約名), constraint_type(制約のタイプ),table_name(表名称),
status(制約の状態)を検索


[戻る]