日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle学习笔记(一)------oracle基础知识和基本sql语句

發(fā)布時(shí)間:2025/7/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle学习笔记(一)------oracle基础知识和基本sql语句 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近一直在學(xué)習(xí)oracle,總結(jié)了一些學(xué)習(xí)筆記,我會(huì)陸續(xù)貼出來,和網(wǎng)友交流?,希望能給一些初學(xué)者提供幫肋,也希望能有高手指點(diǎn)。

?

oracle數(shù)據(jù)庫邏輯結(jié)構(gòu)
? 包括 表空間,段,區(qū)間和數(shù)據(jù)塊
??? 表空間:所有的表的集合,分為System系統(tǒng)表空間,Users用戶表空間,Temp臨時(shí)表空間,tools工具表空間
??? 段:把表空間進(jìn)一步劃分成段,不同的段存放的數(shù)據(jù)不同,如,數(shù)據(jù)段,臨時(shí)段,回滾段,索引段等
??? 區(qū)間:將段進(jìn)一步劃分成區(qū)間,區(qū)間是分配單元,對數(shù)據(jù)進(jìn)行分配
??? 塊:區(qū)間中又劃分成塊,

從邏輯上講,一個(gè)數(shù)據(jù)庫由若干個(gè)表空間組成,每個(gè)表空間中有若干個(gè)表,每個(gè)表又可以分為數(shù)據(jù)庫段(Data Segment)和索引段,每個(gè)段中

又可以分為若干個(gè)數(shù)據(jù)庫區(qū)間(Extent),每個(gè)數(shù)據(jù)區(qū)間由若干個(gè)數(shù)據(jù)塊組成。由此可見,數(shù)據(jù)塊是最基本的存儲單位,而表空間,表,段,區(qū)

間以及模式對象則是邏輯組織的構(gòu)成成員?
?
------------------
SQL語言的命令通常分為四類
1、數(shù)據(jù)定義語言(DDL)
創(chuàng)建、修改或刪除數(shù)據(jù)庫中各種對象,包括表、視圖、索引等。
命令:CREATE TABLE , CREATE VIEW, CREATE INDEX、ALTER TABLE ,
DROP TABLE , DROP VIEW, DROP INDEX

2、查詢語言(QL)
按照指定的組合、條件表達(dá)式或排序檢索已存在的數(shù)據(jù)庫中數(shù)據(jù),
不改變數(shù)據(jù)庫中數(shù)據(jù)。
命令:SELECT…FROM…WHERE…

3、數(shù)據(jù)操縱語言(DML)
對已經(jīng)存在的數(shù)據(jù)庫進(jìn)行元組的插入、刪除、修改等操作
命令:INSERT、UPDATE、DELETE

4、數(shù)據(jù)控制語言(DCL)
用來授予或收回訪問數(shù)據(jù)庫的某種特權(quán)、
控制數(shù)據(jù)操縱事務(wù)的發(fā)生時(shí)間及效果、對數(shù)據(jù)庫進(jìn)行監(jiān)視
命令:GRANT、REVOKE、COMMIT、ROLLBACK
??
-----------------------------------
用戶名scott/tiger 可進(jìn)行式例數(shù)據(jù)庫的操作
-----------------------------------
select table_name from user_tables; 查看有那些用戶表
??(最后的分號是結(jié)束并執(zhí)行)
-----------------------------------
修改用戶密碼

在dos下輸入D:/>sqlplus /nolog
conn / as sysdba
show user;
alter user sys identified by oracle;?
最后這條語句是修改sys賬戶的密碼為oracle

insert into aa(id,name,birthday)
values (01,'lily',SYSDATE);
SYSDATE 當(dāng)前系統(tǒng)時(shí)間日期函數(shù),oracle中函數(shù)中如果沒有參數(shù),后面的括號可省略
-----------------
insert into aa(id,name,birthday)
values (01,'lily',TO_DATE('2006-5-6','yyyy-MON-DD'));
TO_DATE('日期的字符串','日期時(shí)間的格式') 添加指定日期字段,必須用這個(gè)日期轉(zhuǎn)換函數(shù)
-----------------

set linesize 500 設(shè)置行寬度為500
set pagesize 100 設(shè)置每頁顯示100行
run 執(zhí)行剛才最后執(zhí)行的sql語句 (可簡寫為r或/)

alter session set nls_date_format='YYYY-MM-DD';
???????? 修改會(huì)話,使表中存儲日期的格式是 YYYY-MM-DD
?
desc 表名 :查看表結(jié)構(gòu) 
ed: 如果用戶輸入sql語句有錯(cuò)誤,可以輸入ed打開一個(gè)afiedt.buf文件,里面存放著上一回輸入的sql語句
??? 修改后,輸入/可重復(fù)執(zhí)行剛才改過的sql語句
------------------
使用綁定變量,給數(shù)據(jù)庫中插入多個(gè)記錄
insert into aa(id,name,sal)
values (&employeeno,'&employeename',&employeesal);
? 回車后會(huì)提示給這三個(gè)變量輸入值
然后用run或r或/可重復(fù)執(zhí)行給表中插入記錄的操作
-----------------------------------
從其它表中復(fù)制數(shù)據(jù)
?insert into aa(id,name,address)
????? select id,name,address
????? from bb where address='jl';
----------------------------------
更新
update aa set name='zhangsan' where address='jl';
----------------------------------
clear screen 清屏
----------------------------------
commit; 提交事務(wù)
rollback; 回滾事務(wù)

當(dāng)?shù)谝粭lsql(DML:數(shù)據(jù)操縱語言)語句被執(zhí)行時(shí),事務(wù)便開始了
當(dāng)出現(xiàn)下面的事件時(shí),事務(wù)便結(jié)束:
-commit or rollback被執(zhí)行時(shí),把前面的事務(wù)提交,事務(wù)結(jié)束
-DDL(數(shù)據(jù)定義語言) or DCL(數(shù)據(jù)控制語言) 被執(zhí)行時(shí)(自動(dòng)提交)
-用戶退出
-系統(tǒng)中止

事務(wù)保存點(diǎn):可以有選擇的返回到事返的某個(gè)保存點(diǎn)
比如,執(zhí)行一條sql語句, update......
???savapoint 事務(wù)保存點(diǎn)名1
??? 執(zhí)行其它sql語句
???rollback to 事務(wù)保存點(diǎn)名1?? (回滾到“事務(wù)保存點(diǎn)名1”)
----------------------------------
null值在算術(shù)表達(dá)式中的使用
 如果在查詢中,進(jìn)行運(yùn)算時(shí),在運(yùn)算中的字段有空值,它的結(jié)果為空
  select id,name, sal*10+comm form s
?????? 這里假如某人的comm字段的值為空,它運(yùn)算的結(jié)果就為空
  解決辦法是這種運(yùn)算用函數(shù)去做
------------------
select id||''||name as employees form emp
? 這里的||和sqlserver中的+一樣,字符串連接符,功能是兩個(gè)字段連接在一起
------------------------------------
select * from s where name='AA';
? 這里的where中的查詢條件的內(nèi)容必須為大寫,不然找不到任何結(jié)果

select name address sal from aa where sal between 1000 and 1500;

select name address sal from aa where sal in(1000,1200,1500);

select name address sal from aa where name like 'Z%';?? (%代表多個(gè)字符)

select name address sal from aa where name like 'Z_';?? (_代表一個(gè)任意字符)

select name address sal from aa where address is null;? (顯示所有address為空的記錄)

限制重復(fù)行
select distinct name from aa;

總結(jié)

以上是生活随笔為你收集整理的oracle学习笔记(一)------oracle基础知识和基本sql语句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。