【文章內容簡介】
es of the most recently executed SQL mand or PL/SQL block which is stored in the SQL buffer. Enter LIST with no clauses to list all lines. In SQL*Plus mandline you can also use 。 to list all the lines in the SQL buffer. The buffer has no mand history list and does not record SQL*Plus mands. L[IST] [n | n m | n * | n LAST | * | * n | * LAST | LAST],也可以不寫有的時候sqlplus會顯示的有點亂,光標不在最后,請清屏.SQL clear screen實驗5:查看當前用戶的所有表和視圖該實驗的目的是查看簡單的數據字典,熟悉實驗環(huán)境.Select * from tab。TNAME TABTYPE CLUSTERID DEPT TABLEEMP TABLEBONUS TABLESALGRADE TABLE顯示當前用戶所擁有的表和視圖。其中tab是數據字典,你在每個用戶下查看都看到是當前用戶的表和視圖,這是最基本的字典,我們一定要知道當前用戶下的表和視圖。Select * from dept。DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON顯示DEPT表的所有行和所有列Select * from emp。EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 SMITH CLERK 7902 17DEC80 800 20 7499 ALLEN SALESMAN 7698 20FEB81 1600 300 30 7521 WARD SALESMAN 7698 22FEB81 1250 500 30 7566 JONES MANAGER 7839 02APR81 2975 20 7654 MARTIN SALESMAN 7698 28SEP81 1250 1400 30 7698 BLAKE MANAGER 7839 01MAY81 2850 30 7782 CLARK MANAGER 7839 09JUN81 2450 10 7839 KING PRESIDENT 17NOV81 5000 10 7844 TURNER SALESMAN 7698 08SEP81 1500 0 30 7900 JAMES CLERK 7698 03DEC81 950 30 7902 FORD ANALYST 7566 03DEC81 3000 20 7934 MILLER CLERK 7782 23JAN82 1300 10顯示EMP表的所有行和所有列* 代表所有的列。Desc emp。Name Null? Type EMPNO NOT NULL NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)MGR NUMBER(4)HIREDATE DATESAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)查看表結構對這兩張表大家一定要熟悉,因為我們所有的例題都是以這兩個表為基礎。Sqllist查看當前緩沖區(qū)內的語句。簡寫為lSqlhelp list —可以查看縮寫l Scott用戶的建立數據庫默認建立以后SCOTT用戶是存在的,在10G的版本以后默認為鎖定的。我們需要解鎖該用戶。SQL conn / as sysdba 進入到數據庫的最高用戶。Sqlalter user scott account unlock identified by tiger。解鎖SCOTT帳戶,同時修改該用戶的密碼為TIGER。10G中該用戶默認為鎖定,而在10G前是沒有鎖定的。Sqlalter user system identified by manager。修改SYSTEM用戶的密碼為MANGER,為了以后的實驗方便,我以后默認的腳本都是使用該密碼,數據庫以前版本的默認密碼也是MANAGERSqlalter user sys identified by sys。修改SYS用戶的密碼為SYS,同樣為了實驗的方便,在生產環(huán)境請設定自己的密碼。SCOTT用戶可以隨時被刪除和建立,該用戶存在的目的就是為了實驗用的,表很少,但又代表了一定的典型數據庫的應用。Sql @%oracle_home%\rdbms\admin\ ,有點差別,但不大.會重新建立SCOTT用戶,并建立相應的表和表之間的關系。l 書寫SQL語句的原則大小寫不敏感,但單引和雙引內的大小寫是敏感的。切記!關鍵字不能縮寫可以分行書寫,但關鍵字不能被跨行書寫,單引內也不要跨行書寫。一般每個子句是一行可以排版來增加可讀性字符串用單引列的別名用雙引實驗6:關于null值的問題該實驗的目的是練習數據庫的一個重要值null的使用.l Null值Select ename,sal,m from emp。ENAME SAL COMM SMITH 800ALLEN 1600 300WARD 1250 500JONES 2975MARTIN 1250 1400BLAKE 2850CLARK 2450KING 5000TURNER 1500 0JAMES 950FORD 3000MILLER 1300其中m列中有一些行沒有值,是空值(null)。Null值不等于0,也不等于空格。Null值是未賦值的值,不入索引。NULL是雙刃劍,使用好了提高性能,你對它不了解,往往是錯誤的根源,切記!實驗7:在列上起一個別名該實驗的目的是了解使用別名的目的和別名的使用方法.l 別名的使用原則1。區(qū)分同名列的名稱2。非法的表達式合法化3。按照你的意愿顯示列的名稱4。特殊的別名要雙引5。直接寫列的后面6。使用as增加可讀性Select sal as salary,hiredate “上班日期” ,sal*12 total_salary from emp。SALARY上班日期 TOTAL_SALARY 800 17DEC80 9600 1600 20FEB81 19200 1250 22FEB81 15000 2975 02APR81 35700 1250 28SEP81 15000 2850 01MAY81 34200 2450 09JUN81 29400 3000 19APR87 36000 5000 17NOV81 60000 1500 08SEP81 18000 1100 23MAY87 13200 950 03DEC81 11400 3000 03DEC81 36000 1300 23JAN82 15600l 重復的行SELECT 語句顯示重復的行。用DISTINCT語法來去掉重復的行。Select deptno from emp。DEPTNO 20 30 30 20 30 30 10 10 30 30 20 10我們會看到很多重復的行,如果我們想去掉重復的行,我們需要distinct關鍵字。實驗8:在顯示的時候去掉重復的行該實驗的目的是使用distinct關鍵字,去掉重復的行.Select distinct deptno from emp。DEPTNO 30 20 10在ORACLE數據庫的10G前版本,該語句需要排序才能去掉重復的行,而在10G中數據庫并不需要排序,而是使用HASH算法來去掉重復的行,由于避免了排序,從而極大的提高了SQL語句的效率,因為10G的SQL內核改寫了。效率更加的高。因為沒有排序,所以輸出也是無序的。l IsqlplusIsqlplus是以ie方式連接的數據庫,狗尾續(xù)貂,不建議使用。顯示結果美化編輯功能加強通過中間層的轉換Oracle_home\install\OracleOraDb10g_home2iSQL*Plus服務要啟動://hostname:5561/isqlplusl Where和order by 子句語法SELECT *|{[DISTINCT] column|expression [alias],...}FROM table[WHERE condition(s)][order by column|expression| alias ]。Where 一定要放在FROM 子句的后面。符合條件的行會被篩選出來。Order by 放在最后,用來排序顯示結果實驗9:顯示表的部分行和部分列,使用where子句過濾出想要的行該實驗的目的是使用where子句.Select deptno,ename from emp Where deptno=10。DEPTNO ENAME 10 CLARK 10 KING10 MILLER只顯示10號部門的員工名稱。Select * from emp