SQL(DDL、DML)
8973 ワード
1.Oracleデータ型
1.1 number
numberは、数字のタイプを表す
Eg:表empにおけるsal列の定義は以下の通りである:
1.2 char
固定長を表す文字はchar(n)形式で定義されることが多く,nは占有バイト数の最大長が2000バイトであることを示す
Eg:テーブルempにおけるename列の定義は以下の通りである:
1.3 varchar2
長くなる文字タイプ定義フォーマットはvarchar 2(n)であり、nは最大使用可能なバイト数の最大長が4000バイトであることを示す
Eg:テーブルempのjob列の定義は次のとおりです.
1.4 date
日付時間を定義するデータ長が7バイトのデフォルト形式は、
Eg:
2.テーブルの作成
2.1 create文
構文:
上記作成テーブルの構文表示:1)「create table」は固定書き方である.2)「[]」で囲まれた部分は省略でき、[schema.]このテーブルが属するユーザーを表し、デフォルトは現在のoracleのユーザーです.3)table_nameはテーブル名を表し、実際の状況に応じてその名前を置き換える.4)column_nameはカラム名を表し、実際の状況に応じてその名前を置き換えます.5)datatypeは対応する列のデータ型を表す.6)[default expr]はこの列のデフォルト値を表し、省略することができる.7)[,...]は、複数の列の間に「,」のカンマで区切られ、最後の列にカンマは使用されません.
Eg:
2.2 desc文
表の構造の表示:desc表名;
2.3 default文
default句を使用してカラムにデフォルト値を指定し、genderカラムにデフォルト値'M'を割り当てることができます.性別を指定していない従業員の場合、デフォルトは男性です.
2.4 not null
非空(not null)は、フィールド値が空でないことを確認するための制約です.デフォルトでは、どのカラムでも空の値が許可されます.フィールドに空でない制約が設定されている場合、このフィールドに有効な値が存在する必要があります.データを挿入する操作を実行する場合は、この列のデータを提供する必要があります.更新操作を実行する場合、このカラムの値をnullに設定することはできません.
3.表の変更
3.1表名の変更
テーブルの作成後にテーブル名を変更する場合は、rename文を使用して構文を実装します.テーブル名old_が変更されます.nameはnew_name:
Eg:
3.2列の追加
テーブルに列を追加するにはalter tableのadd句を使用して構文を実装します.
列は最後にのみ追加でき、既存の列に挿入できません.
3.3列の削除
alter tableのdrop句を使用して不要な列を削除する構文は、次のalter table table_name drop(column);セグメントは、各ローからフィールドが占有する長さとデータを削除し、データブロックに占有される空間を解放する必要があります.テーブルレコードが大きい場合、フィールドを削除するには長い時間がかかる場合があります.
3.4列の変更
表を作成した後、表の列のデータ型、長さ、デフォルト値を変更できます.変更は、後で挿入したデータに対してのみ有効です.長さを大きく変更すると、構文が成功しない可能性があります.
Eg:テーブルmyempの列jobを変更し、デフォルト値の設定を追加
4.DML文
4.1 insert文
データテーブルにレコード構文を追加するには、次のようにします.
DML操作を実行した後、commit文を実行してから、この操作を本当に確認する必要があります.
挿入された列に日付フィールドがある場合は、日付のフォーマットのデフォルトの日付フォーマット「DD-MON-RR」を考慮し、日付フォーマットをカスタマイズできることに注意し、to_date関数を日付型に変換するデータ
注意:上記の文にエラーが発生した場合:無効な月.クライアントシステムが中国語環境にインストールされている可能性があるため、システムのデフォルトの日付フォーマットを表示するには:
レジストリにアクセスexe–HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0/NLS_LANGUAGEデフォルトインストールoracleならNLS_LANGUAGEの値はSIMPLAIIED CHINESE_CHINA.ZHS 16 GBK(中国語環境に属する)ダブルクリックでその値を修正:AMERICAN_AMERICA.ZHS 16 GBK(英語環境)は、データベースの問題解決を再開します.
4.2 update文
表のレコード構文を更新するには、次のようにします.
where句がない場合、テーブル全体のデータが更新されます.Egに注意してください.
4.3 delete文
削除テーブルのレコード構文は次のとおりです.
where句がない場合、テーブル全体のデータが削除されます.
//職階が空の従業員レコードdelete from myemp where job is nullを削除します.
DDL文のtruncate文も、テーブルデータを削除する役割を果たします.delete文との違い:1)deleteは条件付きで削除できます.truncateはテーブルデータをすべて削除します.2)deleteはDML文です.ロールバックできます.truncateはDDL文です.すぐに有効になります.ロールバックできません.3)すべてのテーブルレコードを削除し、データ量が大きい場合は、delete文の効率はtruncate文より低いです.
1.1 number
numberは、数字のタイプを表す
number(p,s)
の形式としてよく定義され、pは数字の総桁数sが小数点以下の桁数を表すEg:表empにおけるsal列の定義は以下の通りである:
sal number (6,2)
はsal列におけるデータを表し、整数ビットは最大4ビット、小数ビットの最大ビット数は2ビット、すなわち最大取値は99999.99である1.2 char
固定長を表す文字はchar(n)形式で定義されることが多く,nは占有バイト数の最大長が2000バイトであることを示す
Eg:テーブルempにおけるename列の定義は以下の通りである:
ename char(20)
はename列に最大20バイトまで格納可能な文字列を示し、占有スペースは固定20バイトである1.3 varchar2
長くなる文字タイプ定義フォーマットはvarchar 2(n)であり、nは最大使用可能なバイト数の最大長が4000バイトであることを示す
Eg:テーブルempのjob列の定義は次のとおりです.
job varchar2(100)
は、job列に格納可能な最大長さが100バイトの文字列を表し、格納されているデータの長さに応じて、占有空間が変化し、最大占有空間が100バイトであることを示します.1.4 date
日付時間を定義するデータ長が7バイトのデフォルト形式は、
DD-MON-RR:
です.Eg:
11-ARP-71
表empのhiredate列の定義は、hiredate列に格納されている日付データを示すhiredate date;
です.2.テーブルの作成
2.1 create文
構文:
create table [schema.] table_name(column_name datatype[default expr][...]);
上記作成テーブルの構文表示:1)「create table」は固定書き方である.2)「[]」で囲まれた部分は省略でき、[schema.]このテーブルが属するユーザーを表し、デフォルトは現在のoracleのユーザーです.3)table_nameはテーブル名を表し、実際の状況に応じてその名前を置き換える.4)column_nameはカラム名を表し、実際の状況に応じてその名前を置き換えます.5)datatypeは対応する列のデータ型を表す.6)[default expr]はこの列のデフォルト値を表し、省略することができる.7)[,...]は、複数の列の間に「,」のカンマで区切られ、最後の列にカンマは使用されません.
Eg:
// emp
create table emp(
id number(4),
name varchar2(20),
gender char(1),
birth date,
salary number(6,2),
job varchar2(30),
deptno number(2)
);
2.2 desc文
表の構造の表示:desc表名;
2.3 default文
default句を使用してカラムにデフォルト値を指定し、genderカラムにデフォルト値'M'を割り当てることができます.性別を指定していない従業員の場合、デフォルトは男性です.
// emp , emp
drop table emp{
create table employee{
id NUMBER(4),
name varchar(20),
gender char(1) default'M',
birth date,
salary number(6,2),
job varchar2(30),
deptno number(2)
};
2.4 not null
非空(not null)は、フィールド値が空でないことを確認するための制約です.デフォルトでは、どのカラムでも空の値が許可されます.フィールドに空でない制約が設定されている場合、このフィールドに有効な値が存在する必要があります.データを挿入する操作を実行する場合は、この列のデータを提供する必要があります.更新操作を実行する場合、このカラムの値をnullに設定することはできません.
3.表の変更
3.1表名の変更
テーブルの作成後にテーブル名を変更する場合は、rename文を使用して構文を実装します.テーブル名old_が変更されます.nameはnew_name:
rename old_name to new_name;
Eg:
// emp myemp
rename emp to myemp;
3.2列の追加
テーブルに列を追加するにはalter tableのadd句を使用して構文を実装します.
alter table table_name add(column datatype[default expr][column datatype...])
列は最後にのみ追加でき、既存の列に挿入できません.
// hiredate,
alter tables myemp add(hiredate date default sysdate);
3.3列の削除
alter tableのdrop句を使用して不要な列を削除する構文は、次のalter table table_name drop(column);セグメントは、各ローからフィールドが占有する長さとデータを削除し、データブロックに占有される空間を解放する必要があります.テーブルレコードが大きい場合、フィールドを削除するには長い時間がかかる場合があります.
// myemp hiredate
alter table myemp drop(hiredate);
3.4列の変更
表を作成した後、表の列のデータ型、長さ、デフォルト値を変更できます.変更は、後で挿入したデータに対してのみ有効です.長さを大きく変更すると、構文が成功しない可能性があります.
alter table table_name modify(column datatype[default expr],column datatype...])
Eg:テーブルmyempの列jobを変更し、デフォルト値の設定を追加
alter table myemp
modify(job varchar2(40) default'clerk');
4.DML文
4.1 insert文
データテーブルにレコード構文を追加するには、次のようにします.
insert into table_name[(column[,column...])]values(value[,value...]);
DML操作を実行した後、commit文を実行してから、この操作を本当に確認する必要があります.
//
insert into myemp(id,name,job,salary)values(1001,'rose','programmer',5500);
挿入された列に日付フィールドがある場合は、日付のフォーマットのデフォルトの日付フォーマット「DD-MON-RR」を考慮し、日付フォーマットをカスタマイズできることに注意し、to_date関数を日付型に変換するデータ
//
insert into myemp(id,name,job,birth)values(1002,'martha','analyst','01-SEP-03');
注意:上記の文にエラーが発生した場合:無効な月.クライアントシステムが中国語環境にインストールされている可能性があるため、システムのデフォルトの日付フォーマットを表示するには:
select sysdate from dual
を使用します.その後、SQL文の一致を変更します.システムのデフォルトの日付フォーマットを変更するには、次のようにします.レジストリにアクセスexe–HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0/NLS_LANGUAGEデフォルトインストールoracleならNLS_LANGUAGEの値はSIMPLAIIED CHINESE_CHINA.ZHS 16 GBK(中国語環境に属する)ダブルクリックでその値を修正:AMERICAN_AMERICA.ZHS 16 GBK(英語環境)は、データベースの問題解決を再開します.
Eg:
//
insert into myemp(id,name,job,birth)values(1003,'donna','manager',to_date('2009-09-01','YYYY-MM-DD'));
4.2 update文
表のレコード構文を更新するには、次のようにします.
update table_name
set cloumn = value[,column = values]...
[where condition];
where句がない場合、テーブル全体のデータが更新されます.Egに注意してください.
// ROSE
update myemp set salary = 9999;
where name = 'rose';
4.3 delete文
削除テーブルのレコード構文は次のとおりです.
delete[from] table_name[where condition];
where句がない場合、テーブル全体のデータが削除されます.
//職階が空の従業員レコードdelete from myemp where job is nullを削除します.
DDL文のtruncate文も、テーブルデータを削除する役割を果たします.delete文との違い:1)deleteは条件付きで削除できます.truncateはテーブルデータをすべて削除します.2)deleteはDML文です.ロールバックできます.truncateはDDL文です.すぐに有効になります.ロールバックできません.3)すべてのテーブルレコードを削除し、データ量が大きい場合は、delete文の効率はtruncate文より低いです.
//
delete from myemp;
//
truncate table myemp;