1. 程式人生 > >Orcle資料庫之SQL基礎

Orcle資料庫之SQL基礎

一、管理表

1.認識表:

表其實是我們儲存資料的一個基本單位

在資料庫中的表都是一個二維結構;在一張表中,每一列的資料必須具有相同的資料型別;列名要具有唯一性每一行的資料也要保證其唯一性。

2.資料型別:

(1)字元型資料型別:

固定長度的資料型別:
CHAR(n)型別;-- CHAR型別的n的最大值是2000;
NCHAR(n)型別;-- NCHAR型別的n的最大值是1000;
可變長度的資料型別:
VARCHAR2(n)型別;-- VARCHAR2(n)型別的n最大值是4000;
NVARCHAR(n)型別;-- NVARCHAR(n)型別的n的最大值是2000;用於儲存Unicode格式的資料,更適合儲存中文資料。

(2)數值型資料型別:

NUMBER(p,s)型別:是Oracle中比較常用的的一個數值型,p在這裡代表這有效數字,而s則可以理解為效數點後的位數
-- 例:NUMBER(5,2)==有效數字是五位,保留兩位小數。
FLOAT(n)型別:主要是用來儲存二進位制資料,還能表示二進位制的位數是1~126位

(3)日期型資料:

DATE型別:DATE型別的儲存範圍是從公元前4712年1月1日到公元9999年12月31日,DATE型別可以精確到秒的資料型別。
TIMESTAMP型別:時間戳型別,能精確到小數秒的資料型別。

(4)其他型別:
 

存放大物件的資料:
BLOB型別(以二進的形式來存放資料,最大值為4GB)
CLOB型別(以字串的形式來存放資料,最大值為4GB)

3.管理表


(1)建立表:


建立表的基本語法:

CREATE TABLE table_name -- 在同一個使用者下,表名要是唯一的
{
columu name datatype,
....
}

查看錶裡面的欄位資訊 :

desc table_name


(2)修改表:

alter table table_name add column_name datetype; -- 向表中新增欄位
alter table table_name modify column_name datatype; -- 修改欄位型別
alter table table_name drop cloumn column_name;-- 刪除欄位
alter table table_name rename column column_name to new_name;-- 修改欄位名
rename table_name to new_table_name;-- 修改表名

(3)刪除表:

DELETE FROM table_name [WHERE conditions];
  delete truncate drop
效果 只刪除資料 只刪除資料 刪除表結構、約束、觸發器、索引、...
語言區別 DML(事務提交後生效) DLL(立即生效) DLL(立即生效)
速度 最快

二、操作表中的資料

1.新增資料

(1)向表userinfo中新增資料:

-- 示例:
INSERT INTO table_name(column1,column2,…) VALUES(value1,value2,…);
-- sysdate是獲取當前日期
insert into userinfo values(1,‘xxx’,‘123123’,‘[email protected]’,sysdate);

(2)建立表userinfo2的時候,給表中設定預設值

-- DEFAULT關鍵字代表預設,sysdate代表當前時間
create table userinfo2
(
id number(6,0),
dates date DEFAULT sysdate
);

向表userinfo2中新增資料

insert into userinfo2(id) values(1);

(3)向表userinfo中新增預設值

alter table userinfo modify email default ‘無’;
insert into userinfo(id) values(3);

 

-- 不想要預設值的時候,直接賦予值就行
insert into userinfo(id,email) values(4,‘[email protected]’)

(4)複製表table_old的資料到表table_new

-- 在建表時複製
create table table_new as select column1,...|* from table_old; 
-- 在新增資料是複製
insert into table_name [(column1,...)] select column1,...|* from table_old;

2.修改資料

Update table_name Set column1=value1,column2=value2,...[where conditions]

(1)無條件修改

(2)有條件修改

3.刪除資料

DELETE FROM table_name [WHERE conditions];

 

三、查詢語句

1.基本查詢語句

-- FROM (可以多表查詢) WHERE 子句可帶多個條件 DISTINCT 顯示不重複資料
select [Distinct] 列名 .. From 表名 [where condition] 

2.在sqlplus中設定格式

(1)作用:配合select語句使用,設定查詢結果顯示的格式,不會修改資料庫表字段。

(2)給欄位設定別名:

-- 設定返回紀錄每行的寬度,超過寬度N則截掉,不夠這個寬度則補空格
SET LINESIZE N 
-- COLUMN 可以簡寫成COL 
COLUMN column_name HEADING new_name; 

(3)設定欄位的格式化樣式:

COLUMN column_name FORMAT dataformat;
-- 如果是字元型別的值,只能設定它顯示的長度;
-- 其中a後面跟數字表示字串顯示長度,例:a10 表示顯示10位的長度的字串;
-- 數字則用‘9’代表一位,例:999.9 表示整數位為三位,小數位為一位;
-- 如果設定的長度超出資料最大長度,則用‘#’顯示;
-- 還可以在數字前面加‘$’,例:$999.9 則查詢後顯示的結果會在結果前加上'$'符。

-- a後面跟數字表示字串顯示長度,例:a10 表示顯示10位的長度的字串;

 
-- 數字則用‘9’代表一位,例:999.9 表示整數位為三位,小數位為一位; 

(4)清除設定格式 語法:

COLUMN column_name CLEAR;

3.查詢所有欄位和指定欄位

-- 查詢所有
select * from table_name;
-- 查詢指定欄位
select column1, ... from table_name;

4.給欄位設定別名

-- as可省略
select column_name as new_name, ... from table_name;

5.運算子和表示式

(1)表示式 = 運算元 + 運算子

(2)oracle中的運算元可以是常量、變數和欄位

(3)oracle中的運算子:算數運算子(+ - * /)、比較運算子(> < = >= <= <>)、邏輯運算子(and or not)

(4) () 可以改變運算子優先順序

6.在select語句中使用運算子

-- 在查詢語句中,使用算術運演算法對欄位進行運算,並不影響真正表中的資料
-- 所有工資結果加200
select id,username,salary+200 from users;
select username from users where salary>800 or salary<>1801;

7.帶條件的查詢

邏輯運算子的優先順序:按not、and、or的順序依次遞減; 比較運算子的優先順序高於邏輯運算子

8.模糊查詢

萬用字元的使用: 一個_只能代表一個字元,一個%可以代表0到多個任意字元

-- 查詢以a開頭的使用者名稱
select * from users where username like 'a%';
-- 查詢第二個字元為a的使用者名稱
select * from users where username like '_a%';

9.範圍查詢

(1)BETWEEN...AND/NOT BETWEEN...AND:查詢結果為閉合區間

(2)IN/NOT IN:結果為一個具體的值

10.對查詢結果進行排序

SELECT [DISTINCT] column_name1,...|* FROM table_name [WHERE conditions] ORDER BY column_name1 DESC|ASC,... 
-- DESC是降序排序,ASC是升序排序,預設情況下是升序排序