oracle基礎知識2

來源:互聯網
上載者:User

標籤:sequence   like   分組函數   worker   分組   最大值   info   表名   查詢   

什麼是串連:

使用串連可以從多個表中查詢資料。

Select  table1.column,table2.column from table1, table2 where table1.column=table2.column

在where子句中寫串連的條件,是因為在多個表中有相同的列名

笛卡爾:若一個表有5行記錄,另一個表有6行記錄,則用笛卡爾計算:一共有5*6=30行記錄。

串連的類型:等值串連,不等串連,自串連,外串連。

如果兩個表中有相同的列可以使用等值串連把兩個表連在一起

使用等值串連的例子:select  emp.ename,emp.empno,dept.deptno,dept.loc from emp,dept  where  emp.deptno=dept.deptno

使用表名是為了指定列在哪個表,同時也可以區分不同表的同一列名,一般情況下,我們可以使用表的別名來簡化查詢,如:select e.ename, e.empno, d.deptno, d.loc from emp e, dept d where e.deptno=d.deptno

非等值串連

如:select e.ename, e.sal, s.grade from emp e,salgrade s  where e.sal between s.losal and s.hisal;

表的自串連:可以把一張表如emp表分成一個worker表和一個manager表,所以worker表中的mgr等於manager表中的empno。

如:select worker.ename, worker.mgr, ‘workers for’,manager.empno,manager.ename from worker,manmger where worker.mgr=manager.empno;

表的外串連:

外串連的運算子是(+)

外串連分為左串連和右串連

如:select table1.column, table2.column from table1, table2 where table1column(+)=table2.column

select table1.column, table2.column from table1, table2 where table1column=table2.column(+)

左串連是把加號放在等號的右邊,輸出的結果是由左邊的和右邊合格共同組成

例子:select e.ename,d.depno,d.dname from emp e,dept d where e.deptno(+)=d.deptno

組函數:也叫做分組函數:分組函數就是運算一組記錄,每一組返回一個值(結果)。

包括:group by(將資料進行分組) 和having(包括或者排除被分組的記錄),除此之外還有avg,max,min,sum,count,方差,標準差等

數字類型的資料使用avg,sum函數,而min和max可以適用於任何類型的資料

如:Select  avg(sal),max(sal),min(sal) from emp where job like ‘SALES%’;

Select min (hiredate),max(hiredate) from emp;

Group by 後面可以跟多個列,如:group by deptno,job

Having 後面跟的是分組函數,where不能跟分組函數

如:select deptno,max(sal) from emp group by deptno having avg(sal)>2000;

嵌套組函數:如:select max(avg(sal)) from emp group by deptno

子查詢的規則:子查詢要用括弧括起來,子查詢放在比較子的右邊,子查詢中不要出現order by子句,對於多行子查詢要用多行運算子,單行子查詢用單行運算子,單行運算子:=,>,<,>=,<=,     多行子查詢的運算子:in,any,all

以上的子查詢是錯誤的是因為子查詢中會出現多個值,應該使用多行運算子,而等號是單行運算子,所以以上的句子是錯誤的。

多行子查詢中用的any與all的區別:<any,意思是小於最大值,>any是大於最小值

>all意思是大於最大值,<all是小於最小值。

Insert 語句的用法: insert into table (column,column,…) values(…..,….,….)

如:insert into dept (deptno,dname,loc) values(50,’sjuhduie’,’chain’);

Update語句 用法:update table set column=values  where 條件

如:update emp set deptno=20  where empno=7782;

 

所有的記錄被修改之後,只有commit之後才是真正的被修改成功了,rollback:相當於撤銷,回到上一步執行的命令,而savepoint:是能迴歸到原先設定的位置。

資料庫的對象:table ,view,sequence:序列,index:索引,synonym:同義字。

建立表:

create table 表名 as select * from 表名1,...  ---複製和表名1一樣的表,包括資料

 

    create table 表名 as select * from 表名1,... where 1=2  ---複製和表名1一樣的表,但沒有資料

 

    create table 表名 as select 欄位1,欄位2... from 表名1,... ---複製表名1表中指定的欄位,包括資料

  

create table 表名(新欄位名1,新欄位名2...) as select 欄位1,欄位2... from 表名1,... ---複製表名1表中指定的欄位,包括資料,並且改變列名

建立一個新表 creat table 表名(column datatype),datatype是資料類型,可以都用varchar2(size)

其他使用者的表不能直接存取,所以在使用其他使用者的表時需要加上使用者名稱作為首碼。如:select * from  scott.emp;

建表:如果自己重新建立一個名為dept的表,則如下:

select table dept (deptno number(2),

dname varchar2(14),

loc varchar2(12))

確認建立的表:describe dept

查詢使用者有哪些表:select * from user_tables;查詢使用者有哪些類型的對象:select distinct object_type from user_objects;

常見的資料類型:VARCHAR2(size),CHAR(size),NUMBER,DATE LONG等

使用子查詢建立表:create table 表名 【column,column,..】as 子查詢,如:

 

修改表結構

  1.增加欄位

      alter table 表名 add 欄位名 資料類型  [default 預設值]

  2.修改欄位(資料類型以及預設值)

      alter table 表名 modify 欄位名 資料類型 [default 預設值]

  3.修改欄位名

      alter table 表名 rename column 舊列名 to 新列名

  4.刪除欄位

      alter table 表名 drop column 列名

 

修改表名

  rename 舊錶名 to 新表名

 

刪除表

  drop table 表名

在表中加註釋:comment on table 表名 is ‘注釋‘’;例如:comment table emp is ‘empioyyee information’;

 

oracle基礎知識2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.