記事ディレクトリ
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,字段2) values(值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;
このときのレンダリングは次のとおりです。