1. 程式人生 > >11、Oracle自增和簡單查詢

11、Oracle自增和簡單查詢

學習目標:

1、瞭解主鍵自增的設定

2、掌握select的基礎語法

學習過程:

今天我們開始學習資料庫語言的DML部分。

一、建立今天課程所需要的資料庫。

1、建表。

我們先設計今天要操作的表的結構,使用powerDesigner設計的E-R圖如下:

attcontent/f81f6d00-f477-4a74-b753-b6a81858bc85.png

生成sql語言如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

create table "departrment" 

(

   "dep_id"

             INT                  not null,

   "dep_name"           VARCHAR(

200),

   constraint PK_DEPARTRMENT primary key ("dep_id")

);

 

create table "employee" 

(

   "employee_id"        int                  not 

null,

   "dep_id"             INT,

   "employee_num"       CHAR(10),

   "employee_name"      VARCHAR(50),

   "salary"             NUMBER(9,2),

   "grps"               INT,

   "update_sir"         INT,

   constraint PK_EMPLOYEE primary key ("employee_id")

);

 

alter table "employee"

   add constraint FK_EMPLOYEE_REFERENCE_DEPARTRM foreign key ("dep_id")

      references "departrment" ("dep_id");

使用pl/developer執行上面的程式碼建表。

2、oracle的主鍵自增。

昨天我們講過每一個表我們都會設定一個物理主鍵,這個物理主機和業務邏輯是沒有任何關係,只是作為每一行資料的唯一標識,所以它一般不是由使用者維護的,交給資料庫自動維護,資料庫一般會讓主鍵自增,達到每次生成的主鍵都會唯一。不同資料庫對主鍵的自增的實現方式不一樣,其中Oracle資料的實現方式最為靈活,當然也比較麻煩。具體步驟如下:

(1)為每一張表都新建序列

attcontent/26b63b08-ef65-45a1-a5ad-824fb3ead203.png

輸入序列的名稱即可,其他就採用預設值即可。

attcontent/a96446b2-df25-4ce1-8e4f-6e1469de6b99.png

(2)為表新增一個觸發器。

attcontent/17da4c0d-c013-4517-af4d-38214fc09fc3.png

(3)輸入觸發器名稱,選擇序列和需要自增的主鍵即可。

attcontent/936fa4d1-b349-42a1-85c3-8718448d1f28.png

同樣的步驟為department表設定一個自增的觸發器。

二、基本查詢。

一般建議書寫sql語言注意一下幾個問題:

  • SQL語句不區分大小寫

  • SQL語句可以分成一行或者多行寫。

  • 關鍵字不可以簡寫或者分行書寫

  • 子句通常分行寫

  • 使用縮排提高可讀性

  • 關鍵字通常用大寫,其他的詞像表名或者列名用小寫。

    當然有些只是建議,比如關鍵字你也可以是小寫的。

最簡單的查詢語句的格式如下:

SELECT *|column FROM table_name .

SELECT指定顯示的列,FROM指定所選擇的列來自哪張表。

檢索所有的行和列程式碼如下:

1

select * from employee

你也可以不查詢全部的列,使用投影查詢,只查詢自己需要的列。程式碼如下

1

select employee_name,salary from employee

定義一個列的別名,對列的標題重新命名 n方便計算 n在列的名稱後可以緊跟別名—或者使用可選的關鍵字AS放在列名和別名之間 n如果別名包含空格或特殊字元或對大小寫敏感,需要雙引號引用。程式碼如下

1

select employee_name as  姓名,salary as  工資 from employee

還可以使用數學運算子

1

select employee_name as  姓名,salary+salary*05 as 工資 from employee

也可以使用字串的連線,字串連線和java不同,使用||

1

2

--字串的連結  '' 連結||

select employee_name||'先生' as  姓名,salary+salary*05 as 工資 from employee

可以使用distinct 去了刪除冗餘行

1

select distinct employee_name from employee