Oracleデータベーステーブルの基本操作とnull値の問題の解決策

1. Oracleデータベースの言語分類:

1)DDL:データ定義言語。データ構造で役割を果たす

  • create:オブジェクトを作成します

  • alter:オブジェクトを変更します

  • drop:オブジェクトを削除します

  • 切り捨て:データのクリア+暗黙的な送信

    2)DCL:データ制御言語

  • grant:grant

  • 取り消す:リサイクル

    3)DQL:データクエリ言語

  • 選択:クエリ

    4)DML:データを操作するデータ操作言語

  • 挿入:データを追加

  • 削除:データを削除する

  • 更新:データの変更+明示的に送信

    5)TCL:トランザクション制御言語(DMLで動作)

  • commit:コミット

  • savepoint:ロールバックで使用されるセーブポイント

  • ロールバック:ロールバック

2.削除、ドロップ、切り捨てを区別しますか?(インタビューの質問)

1)言語分類:削除はデータ操作言語(DML)、削除と切り捨てはデータ定義言語(DDL)

2)コンテンツの削除:ドロップはオブジェクト全体を削除すること、トランケートはオブジェクトのデータを消去すること、削除はデータを削除することです

3)ロールバックは可能ですか:削除はロール可能、ドロップおよび切り捨てはロール可能ではありません

3.共通のコマンド:

1)データベースオブジェクトを作成します。

構文:

create table 表名(字段1 数据类型,字段2 数据类型,.......);

2))データを追加します。

構文:

insert into 表名 values(1,值2...); //表中有几个字段,对应就有几个值

insert into 表名(字段1,字段2values(1,值2);//给必须赋值的字段添加数据

3)クエリデータ:

構文:

select * from 表名;

select 字段1,字段2 from 表名;

select 表达式 from dual; //dual是虚表(一行一列的虚表)

4)クエリテーブルの構造:

構文:

  desc 表名;

5)データを変更します。

構文:

  update 表名 set 字段 = '值' where 字段 = '值';

6)データを削除します。

構文:

  delete from 表名 where 字段='值';

4. Oracleデータベースのデータ型:

1)数値タイプ:

  • 数値(n):数値(最長はn桁)
  • 数値(n、m):最長のn、小数点以下m桁

例:数値(5,2)の最大値はいくつですか?999.99

2)文字タイプ:(インタビューの質問:char、varchar、varchar2を区別)

  • char(n):固定長n、挿入されたデータ長がn未満の場合、スペースで埋める必要があります
  • varchar(n):可変長。挿入されたデータの長さがn未満の場合、最後に表示される文字の長さは挿入されたデータの長さです。
  • varchar2(n):使用法はvarcharと一致し、varchar2はOracleデータベースのユニークなタイプです

3)日付タイプ:

  • 日付

Oracleの一般的なコマンドとデータ型を学習した後、例を見てみましょう。

create table dept_jinli( deptno number(2) , dname char(20) , location char(20)) ;
insert into dept_jinli values(10 , 'developer' , 'beijing') ; 
insert into dept_jinli values(20 , 'account' , 'shanghai') ;
insert into dept_jinli values(30 , 'sales' , 'guangzhou') ; 
insert into dept_jinli values(40 , 'operations' , 'tianjin') ; 
commit ;


create table emp_jinli( 
empno number(4) , 
ename varchar2(20) , 
job varchar2(15) , 
salary number(7 , 2) , 
bonus number(7 , 2) , 
hiredate date, 
mgr number(4) ,
deptno number(10));

insert into emp_jinli values( 1001 , '张无忌' , 'Manager' , 10000 , 2000 ,
                                 to_date( '2010-12-12' , 'YYYY-MM-DD' ) , 1005 , 10) ; 
insert into emp_jinli values( 1002 , '小苍' , 'Analyst' , 8000 , 1000 , 
                                 to_date( '2011-01-01' , 'YYYY-MM-DD' ) , 1001, 10) ; 
insert into emp_jinli values( 1003 , '李怡' , 'Analyst' , 9000 , 1000 ,
                                 to_date( '2010-01-11' , 'YYYY-MM-DD' ) , 1001, 10) ;
insert into emp_jinli values( 1004 , '郭芙蓉' , 'Programmer' , 5000 , null , 
                                 to_date( '2011-07-01' , 'YYYY-MM-DD' ) , 1001 , 10) ; 
insert into emp_jinli values( 1005 , '张三丰' , 'President' , 15000 , null ,
                                 to_date( '2008-05-15' , 'YYYY-MM-DD' ) , null , 20) ; 
insert into emp_jinli values( 1006 , '燕小六' , 'Manager' , 5000 , 400 , 
                                 to_date( '2009-02-01' , 'YYYY-MM-DD' ) , 1005 , 20) ;
insert into emp_jinli values( 1007 , '陆无双' , 'clerk' , 3000 , 500 ,
                                 to_date( '2009-02-01' , 'YYYY-MM-DD' ) , 1006 , 20) ;
insert into emp_jinli values( 1008 , '黄蓉' , 'Manager' , 5000 , 500 , 
                                 to_date( '2009-05-01' , 'YYYY-MM-DD' ), 1005 , 30) ; 
insert into emp_jinli values( 1009 , '韦小宝' , 'salesman' , 4000 , null , 
                                 to_date( '2009-02-20' , 'YYYY-MM-DD' ) , 1008 , 30) ; 
insert into emp_jinli values( 1010 , '郭靖' , 'salesman' , 4500 , 500 , 
                                 to_date( '2009-05-10' , 'YYYY-MM-DD' ) , 1008 , 30) ;

従業員テーブルと部門テーブルをクエリします。

select * from emp_jinli;
select * from dept_jinli;

従業員テーブルで従業員の月給と年収を照会します

select ename ,salary ,salary*12+bonus from emp_jinli;

上記の式には問題があります。図に示すように、一部の人々の年収はnullです。
ここに画像の説明を挿入

5. null:

1)データは空にすることができます

2)nullが操作に関与している場合、結果は空です

3)null値と文字列がスプライスされ、nullはnoと同等です(Oracleデータベースのスプライシング操作では「||」とJavaのプラス記号が使用されます)

6.nvl(フィールド1、値1):

nullを処理する関数。フィールド1がnullの場合、値1を表示します。

  • nvl(d1、d2)は、d1とd2のデータ型が一貫していることを確認する必要があります

  • nvl2(式、d1、d2):式を判断し、式が成立する場合はd1を実行し、そうでない場合は三項演算式に相当するd2を実行しますか?値1:値2

したがって、上記の状況は次のように変更できます。

select ename,salary ,salary*12+nvl(bonus,0) from emp_jinli;

このときのレンダリングは次のとおりです。
ここに画像の説明を挿入

元の記事24件を公開 賞賛された41件 訪問数2778

おすすめ

転載: blog.csdn.net/abc701110/article/details/105532384