1. 程式人生 > 資料庫 >資料庫技術之ORACLE表的操作

資料庫技術之ORACLE表的操作

QQ群:[614889217](https://qm.qq.com/cgi-bin/qm/qr?k=ca16Uc-YKz8jWayhijPqQJOAJEohayK34&jump_from=webapi)
嗶哩嗶哩(bilibili)直播間ID:[10540490](https://live.bilibili.com/10540490)
                                    ID:10540490
嗶哩嗶哩(bilibili)[個人空間](https://space.bilibili.com/290120984)
                                    UID:290120984
[技術筆記地址](https://www.wolai.com/cJbaYarNxpR5Sjsy2xuQ9H)
[我來官網地址](https://www.wolai.com/)
[我來客戶端下載地址](https://www.wolai.com/downloads)
技術直播播放完畢都錄播到b站和西瓜視訊等 
資料庫會預設一個使用者:scott
密碼:tiger (登入成功後會提示重置密碼) 
解除限制: alter user scott account unlock; --解鎖使用者
位元組可以理解為佔用空間,假如一個位元組只會佔用一個空間,資料會佔用單個空間也可以佔用多個空間,也就是多個位元組,也就是一個值也可以佔用多個位元組
資料庫的儲存是按位元組算的,位元組如果不足以儲存,那麼資料庫就會提示儲存空間已滿 

表的組成

表是由表名,表備註,表字段,欄位的型別,主鍵,約束,索引,觸發器等組成

表名

用於區分不同的表,資料庫會建立不同的表,不同的表有不同的資料,因此需要定義表名去區分它們

表備註

用於簡單介紹表的作用或功能

表字段

用於區分不同欄位,欄位名不能重複

欄位型別

用於限定同欄位下的資料和範圍

主鍵

用於限定某個欄位作為主鍵,從而和其他表進行關聯更方便也更容易,效能也很高

約束

用於限制指定單個或多個欄位不能出現重複資料,同時建立索引,使得資料查詢速度更快,也更準確

索引

索引是對資料庫表中一列或多列的值進行排序的一種結構。
也就是說他遵循某種順序,使得你查詢速度更快,儲存空間也會變大

觸發器

一個表進行操作增刪改時就會啟用它執行,但它不提交事務

資料

表的核心就是資料

表的建立操作

create table 表名
(
欄位名稱1 欄位型別1(引數), 
欄位名稱2 欄位型別2(引數), 
欄位名稱3 欄位型別2(引數), 
...
);

表的刪除操作

drop table twoapes;

我們舉例幾個最常用的就好,不常用的我們減少使用或不使用,平常開發幾種常用的資料型別已足以

VARCHAR2

VARCHAR2(引數值) 型別是字串型別,他用於資料庫中欄位儲存字串的功能,當欄位定義VARCHAR2後,一般需要通過引數值限制字數,資料庫字符集的不同大概是2000到4000的範圍

DATE

日期型別,用於表示日期
開發時我們會時常選擇使用YYYY-MM-DD,YYYY/MM/DD或YYYY年MM月DD日等等作為日期的格式轉換成字串等操作,或反過來,字串轉換為日期格式
sysdate是系統預設當前時間,開發時會使用此值儲存或獲取當前時間,也可以用於計算執行時間,既兩個不同的時間形成差值

查詢資料庫預設的日期格式為如下語句

--DD-MON-RR
select s.PARAMETER,s.VALUE
  from nls_database_parameters s
 where s.PARAMETER = 'NLS_DATE_FORMAT';
 
 --兩個日期相減為數字,代指間隔天數,正數為往前的天數,反之往後,因此也可以得知 日期-日期=數字 日期+數字=日期 +-代表方向
 --一定要注意,日期相減的結果正負值代表方向,而不是數字意義上的正數和負數
select date1,
       date2,
       date2 - date1, --代表不計當天,2020-11-01在40後是2020-12-11日
       date1 - date2 --代表不計當天,2020-12-11前40天是2020-12-01日
  from (select date '2020-11-01' as date1, date '2020-12-11' as date2
          from dual) 

但我們在實際開發中會因為第三方開發工具可能預設選擇系統的本地計算機顯示的時間格式為準,因此顯示格式不會和資料庫一致,而是和本機一致

NUMBER

數字型別.
當沒有引數的時候,長度和精度都沒有限制,儲存值過大也不會使用科學計數法,這一點和很多高階語言不一樣
當含引數時,限制引數的(長度,精度)

--建立一個表twoapes含有欄位為ids,欄位屬性為數字型,定義欄位型別為number(6,3)
create table twoapes
(
ids number(6,3)
);

--在安裝時其實已知曉,如果忘記了就可以通過此SQL查詢,我們得知資料庫對應的字符集為UTF-8
select s.PARAMETER, s.VALUE  --值的結果為 NLS_CHARACTERSET AL32UTF8
  from nls_database_parameters s
 where s.PARAMETER = 'NLS_CHARACTERSET';
 
 
--限制數字的精度,由於資料庫為UTF-8,因此一個數字兩個位元組
--我們限制了ids長度為6 而1458長度為8個位元組,因此無法插入
insert into twoapes (ids) values (145.2666224); --改成145後剛剛好長度為6,所以可以正常插入
--145.267  又由於我們限制了精度為3,所以到第三位後四捨五入後續值捨去
select ids from twoapes;

CLOB

資料庫提供的一種沒有限制字串的資料型別,他的資料大小沒有任何限制,除了二進位制字串和流等以外任何字串都可以正常儲存

BLOB型別是儲存二進位制資料和流,以前資料庫開發可以直接把檔案,音樂,視訊等儲存到此欄位中,但實際應用後,由於資料過於龐大,所以此型別很少再被使用,效能問題是個很大的問題,解決方案就是把龐大的資料使用高階語言處理,儲存到伺服器指定的空間中,使用時只需要遠端下載即可,而不是使用資料庫的方式儲存
其他型別不是很頻繁使用,後期會逐步完善使用方法,我們可以先不瞭解

查詢資料

也就是檢索資料,我們當前能簡單的使用select * from tablename;即可

select * from twoapes;
select name, age, stature from twoapes;
select s.name, s.age, s.stature from twoapes s; --s代表繫結,通過空格+繫結變數,使用繫結變數鎖定對應的表,使其在多表中含有相同欄位時用於區分 
select s.name, s.age, s.stature from twoapes s where s.name='twoapes'; --查詢指定使用者名稱稱為twoapes的資料,可以指定多個欄位值

插入資料

將資料插入到資料庫中,我們會簡單的insert into tablename(欄位名稱1,欄位名稱2,欄位名稱3...) VALUES(欄位值1,欄位值2,欄位值3...)

insert into twoapes (name,age,stature) values ('twoapes1',22,1.7); --如果剛學,最好欄位每老老實實的每個欄位和欄位值一一對應都指定出來,熟悉一下使用

更新資料

update twoapes s set s.age=23 where s.name='twoapes1';

刪除資料

delete twoapes  where s.name='twoapes1';--指定欄位值進行刪除~~
delete twoapes;~~--儘量不要使用,這代表資料全部刪除,因為沒有任何限制