SQL基礎


1.  connect  sys/toor as sysdba      

2. show user

3. select username from dba_users

4. alter user scott account unlock;   or  alter user scott account lock;   

5. connect scott/tiger

6.desc dba_tablespaces   //需要管理員賬號,纔可以使用的命令

7.select  tablespace_name from dba_tablespaces;

8.alter user system default system;

9.


--創建一個表空間
create tablespace myspace 
datafile 'D:\delete\temp\temp.mdf' --datafile爲數據文件,temp爲臨時數據文件
size 10M 
autoextend on;           --數據文件空間被填滿時,自動增長.
--向orcl數據庫的user表空間中添加一個大小爲5M的數據文件
alter tablespace myspace 
add datafile 'D:\delete\temp\tmp02.dbf' size 5M
autoextend on next 512k maxsize 10M;     --自動增長.每次5M最大50M //autoextend off 取消自動增長
                                         --autoextend unlimited;自動增長.無限制
commit;


alter database datafile 'D:\delete\temp\tmp01.dbf'
offline;                                 --online 聯機


--刪除表空間以及附屬於它的文件
DROP TABLESPACE myspace INCLUDING CONTENTS AND DATAFILES;
commit;


archive log list--查看是否處於歸檔模式,在SQL Plus 中執行此命令。


基礎


--insert first:對於每一行數據,只插入到第一個when條件成立的表,不繼續檢查其他條件。
--insert all :對於每一行數據,對每一個when條件都進行檢查,如果滿足條件就執行插入操作。


insert all

when name='hello' then into del values(10,'you')

when number1=5 then into del2 values(10,'you')

select * from del;


單行函數

 select distinct deptno from emp;


select lpad(2000,9,'*') phone,rpad(789,6,'+') passwd
from dual;

select lower('Hello'),upper('hello'),initcap('hello')
from dual;

--oracle中字符串是從1開始的
select instr('i am zhanglei who are you','who')
from dual;

select substr('i am zhanglei who are you',2,5)
from dual;

select concat('Hel','lo my name'),length('hello')
from dual;

select replace('who are you','are','is')
from dual;

--四捨五入
select round(123.24,1),round(123.24,-2),round(123.64),round(123.24)
from dual;

--與四捨五入相區別
select trunc(123.24,1),trunc(123.24,-2),trunc(123.64),trunc(123.24)
from dual;

select mod(10,3)
from dual;

select trunc(sysdate +1)
from dual;

--獲取單獨的年月日
select extract(year from sysdate)
from dual;

--年:Year/YYYY/YY  月:month/mon/mm 星期:day/DY/D
select to_char(sysdate,'YEAR**MM**DD day')
from dual;

select to_char(sysdate,'hh24:mm:ss')
from dual;

--l:顯示本地貨幣符號 $:直接顯示 9:表示數值。 0:同9,但會強制佔位
select to_char(123.25,'l9,999,999.000')--第一個9前面是字母l
from dual;

select to_date('1928-01-23','YYYY-MM-DD')
from dual;

select to_number('$125.35','$9,999.99')
from dual;

--如果comm值爲null則用0代替,nvl中的數值類型必須相同(不同時用轉換函數將它轉成同一類型)
select ename,comm,nvl(comm,0)
from emp;

--comm爲null用sal代替,否則用0代替
select ename,comm,nvl2(comm,0,sal)
from emp;

--deptno爲部門比如10號部門,20部門
select ename,deptno,sal,
       decode(deptno,
              10,sal+1000,
              20,sal+2000,
              30,sal+3000,
              sal) new薪資
from emp;
--查詢結果與decode函數相同
select ename,deptno,sal,
       case deptno
            when 10 then sal+1000
            when 20 then sal+2000
            when 30 then sal+3000
            ELSE deptno end new薪資
from emp;


--查詢結果與上述兩種方式相同
select ename,deptno,sal,
       case 
            when deptno=10 then sal+1000
            when deptno=20 then sal+2000
            when deptno=30 then sal+3000
            ELSE deptno end new薪資
from emp;


聚合函數與數據分組

select max(hiredate),min(hiredate)

from emp;

--統計行數
select count(*)
from emp;

select deptno,max(sal),min(sal)
from emp
group by deptno
having min(sal)>700

--在聚合函數select子句中出現的非分組列,必須出現在group by中
--比如此句:group by後面必須出現除avg(sal)以外的列即必須包含:deptno,job
select deptno,job,avg(sal)
from emp
group by deptno,job



-- natural join:指明瞭兩表進行自然連接,並且連接是基於兩表中所有同名字段的。
-- join...using:用於兩表有同名字段但數據類型不同,或者使用多個同名字段中的某一個做等值連接
-- join...on :最爲靈活,可以指明連接的條件。


創建用戶

create user del 
identified by del
account unlock
password expire--登陸後密碼立即過期


--授予權限
grant create session 
to del
with admin option;--代表可以級聯授予


--回收權限
revoke create session
from del;
commit;


--對象權限的授予
grant select 
on table01
to del
with grant option


--回收對象權限
revoke select 
on table01
from del;


--刪除用戶以及相關信息
drop user del cascade



創建視圖


create view myview
as 
   select * from classify
--創建視圖(若存在則替換)
create or replace view myview
as 
   select * from commodity
   where commodity_number in(4,6,7)
   with read only;--如果爲check的話,則必須操作視圖時必須滿足were條件


--視圖依賴於子查詢,子查詢的表不在了,視圖自然失效
--刪除視圖
drop view myview

發佈了23 篇原創文章 · 獲贊 39 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章