1. 程式人生 > >SQL常用函式--待補充

SQL常用函式--待補充

--==================================

--SQL 基礎-->常用函式

--==================================

/*

一、函式的分類

SQL函式一般分為兩種

單行函式基於單行的處理,一行產生一個結果

多行函式基於多行的處理,對多行進行彙總,多行產生結果

二、函式形式

function_name [(arg1, arg2,...)]

三、常用的單行函式:

1. 字元函式:

lower(x)   轉小寫

upper(x)   轉大寫

initcap(x) 單詞首字母轉大寫

concat(x,y)   字元連線與| | 功能類似

substr(x,start [,length])   取子串

    格式: substr('asdfasdfasdfasddf',1,3)

length(x)  取字串長度

lpad | rpad(x,width [,pad_string]) 字元定長,(不夠長度時,左|右填充)

trim([trim_charFROM] x)  刪除首部、尾部字元

     格式:trim('h' from 'hello hello')

 trim 預設刪除方式是both

 leading   只刪首部trim(leading 'h' from 'hello helloh')

 trailing  只刪尾部trim(trailing 'h' from 'hello helloh')

ltrim(x[,trim_string])  x右邊刪除字元等價於使用trailing

rtrim(x[,trim_string])  x左邊刪除字元等價於使用leading

instr   返回子字串在字串中的位置

     格式:instr(string,substring,position,occurence)

replace(x,search_string,replace_string)   字元替換

    格式:replace('字元', '字元' ,'字元')

  將字元中的字元,替換成字元

2.  數值函式:

round(x [,y])      四捨五入

trunc(x,[,y])       截斷

mod(m,n)            求餘

ceil(x)                 返回特定的最小數(大於等於x的最小整數)

floor(x)            返回特定的最大數(小於等於x的最大整數)

3.  日期函式:

概念:日期函式主要是進行日期處理的,但是在整個日期處理過程中會存在一個關鍵問題,如何取得當前時間。為此在Oracle中專門提供了一個數據偽列(和偽軍差不多,偽列就是一個列,但是這個列不存在於表中,可是可以進行列的查詢和其他操作)。

    偽列:sysdate    返回系統當前日期

舉例:select name,id,sysdate from namestable。

對於日期時間提供以下三種模式

1. 日期+數字=日期(若干天之後的日期)

2, 日期-數字=日期(若干天之前的日期)

3. 日期-日期=數字(兩個日期之間的天數)

舉例:

SELECT SYSDATE+10 FROM dual;

SELECT SYSDATE-hireDate FROM STUDENT;

日期的重要函式

months_between(xy兩個日期之間相差的月數

例:查詢最近個月入職的員工

add_months(x,y)      返回x上加上y個月後的結果

     x+6        返回6天后的日期  

last_day(x)           返回指定日期所在月最後一天的日期

next_day(xday)    返回指定日期的下一day的時間值,day是一個文字串,比如SATURDAY

              計算今天之後的下一個週二的日期       select next_day(sysdate,'Tuseday')  from table;

extract       提取日期

select extract(day from sysdate) from dual

select extract(month from sysdate) from dual;

select extract(year from sysdate) from dual; 


實際上ORACLE內部儲存日期的格式是:世紀,年,月,日,小,分鐘,秒。

不管如何輸入都這樣

9i開始,預設的日期格式是:DD-MON-RR,之前是DD-MON-YY

RR YY 都是世紀後的兩位,但有區別

ORACLE的有效日期範圍是:公元前年月日-年月日

RR日期格式:

  1、如果當前年份最後兩位是:-,並且指定年份的最後兩位也為-,

    則返回本世紀

例:當前年:, 01--,表示2008 

  2、如果當前年份最後兩位是:-,指定年份最後兩位為50

    則返回上世紀。

例:當前年:,01--,表示1998

  3、如果當前年最後兩位為:-,指定年份最後兩位為0-,

    則返回下世紀。

例:當前年:,--表示的是年

  4、如果當前年最後兩位是:-,指定年份最後兩位為:-

    則返回本世紀。

例:當前年:,--表示的是年

4.  轉換函式:字串、日期和數字的相互轉換

總共三個轉換函式。主要是學會年月日的提取和拆分。

1、 數字或者日期轉換為字串

       語法:  TO_CHAR(日期或者數字,' 轉換格式 ')

       對於轉換格式而言主要有兩類格式:

                 ⑴ 日期轉換為字串: 年(yyyy)、月(mm)、日(dd)、時(hh,hh24)、分(mi)、秒(ss)

    字串才能更改格式,你看著哪個日期格式不爽,就TO_CHAR()轉變為字串,更改成你喜歡的格式,用來查詢。

                 ⑵ 數字轉換為字串:任意的一位數字(9)、貨幣(L,本地貨幣)

    所謂的數字轉換,往往是針對於數字的可讀性進行一些格式化的操作。  

範例:select  TO_CHAR(sysdate,‘yyyy-mm-dd’)from table ;

下面這兩條語句是相同的結果,都可以查詢出2月的人的所有資訊。  

select  * from table  where  TO_CHAR(sysdate,‘mm’)=‘02’ ;  直接把月份提取出來了,年月日都也開提取出來。也可以用函式extract提取

select  * from table  where  TO_CHAR(sysdate,‘mm’)=2;

注意:Oracle中擁有資料型別的自動轉換,如果發現比較型別不統一,在一定範圍內它是可以轉換的。

範例:所謂的數字轉換,往往是針對於數字的可讀性進行一些格式化的操作。  

select  TO_CHAR(28898080980809,'999,999,999,999,999,999,999,999,999')  FROM DAUL; 

2、轉日期函式:TO_DATE()

如果現在有一個字串按照“日-月-年”的方式編寫,那麼可以自動轉化為日期型別。我們也可以手動的將一定的字串轉化為日期型別。

       語法:TO_DATE(字串,日期格式)

範例:select  TO_DATE('1990-03-12',‘yyyy-mm-dd’)date from daul;

  結果是         date        

               12-3月 -90 

3、數字轉換函式,也就是將字串轉化為數字,沒什麼用,Oracle本來就自動轉換。

資料型別的轉換分為隱式資料型別轉換和顯式資料型別轉換

在表示式中, Oracle伺服器能自動地轉換下列各項,即隱式轉換:

 VARCHAR2 or CHAR  =====NUMBER

 VARCHAR2 or CHAR  =====DATE

對錶達式賦值, Oracle伺服器能自動地轉換下列各項,即隱式轉換:

NUMBER =======VARCHAR2 or CHAR

DATE   =======VARCHAR2 or CHAR

日期格式元素:

YYYY   數字年份

YEAR   英文年份

MM  數字月

MONTH  英文月

MON 英文縮寫

DD  數字日

DY  英文縮寫

DAY 英文

5.  通用函式

NVL 
NVL  如果一個值為NULL,我們設定其預設值。
語法   NVL(欄位或者NULL,預設值)
舉例:NVL(comm,0)   解釋:如果這個欄位中,資料為空null則設定為0。如果不為空,保持原值。
decode 條件判斷判斷
概念:指的是根據不同的條件,在輸出的時候進行一個數據的轉換。

decode 條件判斷 

格式:decode (col|expression,search1,result1 [,search2,result2,...] [,default])

判斷col|exporession的值,

       當search1匹配時,則返回,result1,

search2匹配時,返回result2 ... 如果都不匹配,返回default

範例:

select EMPNO,ENAME,JOB,SAL,

decode(job,'CLERK',SAL*1.15,'SALESMAN',SAL*1.1,SAL*1.12) NEW_SAL

FROM SCOTT.EMP;

mysql中怎麼寫decode的類似方法
在Oracle中使用decode方法可以輕鬆實現程式碼和值之間的轉換,但是在MySQL中該如何實現類似功能呢?MySQL中沒有直接的方法可以使用,但是我們可以通過下面兩種方法來實現:1.case when then如:Select title,case Emergency when 1 then '緊急'  else '普通' End  as  emergency   from already_sign2.if如:select a.title,if(a.Emergency=1,'緊急','普通')emergency from already_sign a

SQL中和decode關鍵字用法一樣的。 這兩個中會一個就行了。

記住case when then end 這個形式。

case 欄位或者表示式  WHEN search1 THEN  result1  [ WHEN search2 THEN  result2 ]  [WHEN search2 THEN  result2]    [ELSE result100]

 end

case 表示式

   CASE expr WHEN comparison_expr1 THEN return_expr1

[WHEN comparison_expr2 THEN return_expr2

WHEN comparison_exprn THEN return_exprn

ELSE else_expr]

END

四、演示*/ 

--lower函式

SQL> select lower('SQL') from dual;

LOW

---

sql

SQL> select EMPNO,ENAME,JOB from scott.emp where lower(ename) like 'a%';

     EMPNO ENAME      JOB

---------- ---------- ---------

      7499 ALLEN      SALESMAN

      7876 ADAMS      CLERK

SQL> insert into scott.emp(empno,ename) values(9999,'albert');

1 row created.

SQL> select * from scott.emp where lower(ename) like 'a%';

     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO

---------- ---------- --------- ---------- ---------- ---------- ---------- ----------

      9999 albert

      7499 ALLEN      SALESMAN        7698 1981-02-20       1600        300         30

      7876 ADAMS      CLERK           7788 1987-05-23       1100                    20

SQL> select * from scott.emp where ename like 'A%';

     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO

---------- ---------- --------- ---------- ---------- ---------- ---------- ----------

      7499 ALLEN      SALESMAN        7698 1981-02-20       1600        300         30

      7876 ADAMS      CLERK           7788 1987-05-23       1100                    20

--upper函式 

SQL> select upper('SQL Course') as Upper_Char from dual;

UPPER_CHAR

----------

SQL COURSE

--單詞首子母轉大寫

SQL> select initcap(ename) as initcap_name scott.emp where ename = 'albert';

INITCAP_NAME

----------

Albert

--字元的拼接,||concat等效

SQL> select ename || ' is an  || job from scott.emp where ename = 'SCOTT';

ENAME||'ISAN'||JOB

---------------------------

SCOTT is an  ANALYST

SQL> select concat(concat(ename,' is an '),job) as concat_str from scott.emp where ename = 'SCOTT';

CONCAT_STR

--------------------------

SCOTT is an ANALYST

--SUBSTR,擷取子串,下面的例子從第個位置開始連續擷取個字元

SQL> select substr('HelloWorld',2,3) from dual;

SUB

---

ell

--LENGTH 取字串長度

SQL> select length('HelloWord') as String_length from dual;

STRING_LENGTH

-------------

            9

-- lpad | rpad 字串的填充

-- lpad,左填充,直到達到指定長度為止

SQL> select lpad('salary',10,'*') as String_Lpad from dual;

STRING_LPA

----------

****salary

--指定長度為,多出的部分被截斷

SQL> select lpad('salary',4,'*') as String_Lpad from dual;

STRI

----

sala

--rpad,右填充,直到達到指定長度為止

SQL>  select rpad('salary',10,'|') as String_Rpad from dual;

STRING_RPA

----------

salary||||

--指定長度為,多出的部分被截斷

SQL>  select rpad('salary',5,'|') as String_Rpad from dual;

STRIN

-----

salar

-- trim 刪除首尾字元,格式:trim('h' from 'hello hello'),預設的方式為both

SQL> select trim('h' from 'hello helloh') as String_Trim  from dual;

STRING_TRI

----------

ello hello

-- trim 刪除首尾字元,指定leading只刪首部

SQL> select trim(leading 'h' from 'hello helloh') as Trim_Leading from dual;

TRIM_LEADIN

-----------

ello helloh

-- trim 刪除首尾字元,指定trailing只刪尾部

SQL> select trim(trailing 'h' from 'hello helloh') as Trim_Trailling from dual;

TRIM_TRAILL

-----------

hello hello

--rtrim ,ltrim

SQL> select rtrim('hello helloh','h') as Rtrim_String ,        

  2  ltrim('hello helloh','h') as Ltrim_String

  3  from dual;

RTRIM_STRIN LTRIM_STRIN

----------- -----------

hello hello ello helloh

--replace 字元替換

SQL> select replace('Jack and Johnson','J','Bl') as String_Replace from dual;

STRING_REPLACE

------------------

Black and Blohnson

--instr 下面的示例從第個字元開始,返回第二個OR的位置

SQL> select instr('CORPORATE FOLLOR','OR',3,2) as Instring from dual;

  INSTRING

----------

        15

--round 四捨五入函式

SQL> select round(102.253,2)  as round_func from dual;

ROUND_FUNC

----------

    102.25

SQL> select round(102.253,0)  as round_func from dual;

ROUND_FUNC

----------

       102

SQL> select round(102.253,-1)  as round_func from dual;

ROUND_FUNC

----------

       100

--trunc 截斷函式

SQL> select trunc(2010.328) as trunc_func_1,

  2  trunc(2010.328,1) as trunc_func_2,

  3  trunc(2010.328,-1) as trunc_func_3

  4  from dual;

TRUNC_FUNC_1 TRUNC_FUNC_2 TRUNC_FUNC_3

------------ ------------ ------------

        2010       2010.3         2010

--#MOD(m,n) 取餘函式

SQL> select mod(2010,3) as mod_func from dual;

  MOD_FUNC

----------

         0

SQL> select mod(5,3) as mod_func from dual;

  MOD_FUNC

----------

         2

--ceil(x) 返回特定的最小數(大於等於x的最小整數)

SQL> select ceil(593.3) as ceil_func from dual;

 CEIL_FUNC

----------

       594

--floor(x)  返回特定的最大數(小於等於x的最大整數)  

SQL> select floor(593.4) as floor_func from dual;

FLOOR_FUNC

----------

       593

--month_between(日期,日期)兩個日期相差的月數

SQL> select empno,ename,job,months_between(sysdate,hiredate) as diff_month from scott.emp;

     EMPNO ENAME      JOB       DIFF_MONTH

---------- ---------- --------- ----------

      9999 albert

      7369 SMITH      CLERK     351.370601

      7499 ALLEN      SALESMAN  349.273827

      7521 WARD       SALESMAN  349.209311

      7566 JONES      MANAGER   347.854472

      7654 MARTIN     SALESMAN         342

      7698 BLAKE      MANAGER    346.88673

      7782 CLARK      MANAGER   345.628666

      7788 SCOTT      ANALYST   275.306085

      7839 KING       PRESIDENT 340.370601

      7844 TURNER     SALESMAN  342.660924

SQL> select * from scott.emp where months_between(sysdate,hiredate) <= 300;

     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO

---------- ---------- --------- ---------- ---------- ---------- ---------- ----------

      7788 SCOTT      ANALYST         7566 1987-04-19       3000                    20

      7876 ADAMS      CLERK           7788 1987-05-23       1100                    20

--add_months(日期,n)  返回在指定的日期後,加上n個月後的日期

SQL> select add_months(sysdate,5) from dual;

ADD_MONTHS

----------

2010-08-28

--last_day(sysdate)      返回指定日期所在月最後一天的日期

SQL> select last_day(sysdate) from dual;

LAST_DAY(S

----------

2010-03-31

--next_day 返回指定日期的下一day的時間值,day是一個文字串,比如SATURDAY

SQL> select next_day('05-FEB-2005','TUESDAY') as nextday from dual;

NEXTDAY

---------

08-FEB-05

/*EXTRACT*/

SQL> select extract(day from sysdate) from dual;

EXTRACT(DAYFROMSYSDATE)

-----------------------

                     28

SQL> select extract(month from sysdate) from dual;

EXTRACT(MONTHFROMSYSDATE)

-------------------------

                        3

SQL> select extract(year from sysdate) from dual;

EXTRACT(YEARFROMSYSDATE)

------------------------

                    2010

--使用ROUND TRUNC函式處理日期

--round(sysdate,'MONTH') 當月第一天

--round(sysdate,'YEAR')  當年的第一天

--trunc(sysdate,'MONTH') 當月第一天

--trunc(sysdate,'YEAR')  當年的第一天

SQL> select sysdate,round(sysdate,'MONTH'),round(sysdate,'YEAR'),                           

  2  trunc(sysdate,'MONTH'),trunc(sysdate,'YEAR')

  3  from dual;

SYSDATE   ROUND(SYS ROUND(SYS TRUNC(SYS TRUNC(SYS

--------- --------- --------- --------- ---------

15-APR-10 01-APR-10 01-JAN-10 01-APR-10 01-JAN-10

--型別轉換

-- to_char

SQL> select empno,ename,hiredate,to_char(hiredate,'fmDD Month YYYY') as hiredate2,

  2    to_char(hiredate,'DD MM YYYY') as hiredate3

  3  from scott.emp

  4  where sal > 2500;

     EMPNO ENAME      HIREDATE  HIREDATE2         HIREDATE3

---------- ---------- --------- ----------------- ----------

      7566 JONES      02-APR-81 2 April 1981      02 04 1981

      7698 BLAKE      01-MAY-81 1 May 1981        01 05 1981

      7788 SCOTT      19-APR-87 19 April 1987     19 04 1987

      7839 KING       17-NOV-81 17 November 1981  17 11 1981

      7902 FORD       03-DEC-81 3 December 1981   03 12 1981

SQL> select to_char(12345.67) as char1,to_char(12345.67,'99,999.99') as char2

  2  from dual;

CHAR1    CHAR2

-------- ----------

12345.67  12,345.67

--當被轉換的資料位數超過格式指定位數,則出現錯誤。

SQL> select to_char(12345678.90,'99,999.99') as char1 from dual;

CHAR1

----------

##########

--to_number

SQL> select to_number('970.13') as number1,

  2    to_number('970.13') + 35.5 as nunber2,

  3    to_number('-$12,345.67','$99,999.99') as number3

  4  from dual;

   NUMBER1    NUNBER2    NUMBER3

---------- ---------- ----------

    970.13    1005.63  -12345.67

--to_date

--注意:最終日期採用預設格式DD-MON—YY顯示

SQL> select to_date('05-JUL-2008') as date1,to_date('05-JUL-08') as date2,

  2  to_date('July 5,2008','MONTH DD,YYYY') as date3,

  3  to_date('7.4.08','MM.DD.YY') as date4

  4  from dual;

DATE1     DATE2     DATE3     DATE4

--------- --------- --------- ---------

05-JUL-08 05-JUL-08 05-JUL-08 04-JUL-08

--case when

SQL> select empno,ename,sal,deptno,case deptno when 20 then 1.10 * sal

  2    when 30 then 1.20 * sal

  3    else 1.30 * sal end as newsal

  4  from scott.emp order by deptno;

     EMPNO ENAME             SAL     DEPTNO     NEWSAL

---------- ---------- ---------- ---------- ----------

      7782 CLARK            2450         10       3185

      7839 KING             5000         10       6500

      7934 MILLER           1300         10       1690

      7566 JONES            2975         20     3272.5

      7902 FORD             3000         20       3300

      7876 ADAMS            1100         20       1210

      7369 SMITH             800         20        880

      7788 SCOTT            3000         20       3300

      7521 WARD             1250         30       1500

      7844 TURNER           1500         30       1800  

相關推薦

SQL常用函式--補充

--==================================--SQL 基礎-->常用函式--==================================/*一、函式的分類SQL函式一般分為兩種單行函式基於單行的處理,一行產生一個結果多行函式基於多行

NX二次開發-UFUN特徵找xxx UF_MODL_ask_feat_xxx等函式(補充)

NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <uf_ui.h> UF_initialize();

SQL常用函式集錦

一、字元轉換函式 1、ASCII() 返回字元表示式最左端字元的ASCII 碼值。在ASCII()函式中,純數字的字串可不用‘’括起來,但含其它字元的字串必須用‘’括起來使用,否則會出錯。 2、CHAR() 將ASCII 碼轉換為字元。如果沒有輸入0 ~ 255 之間的A

sql常用函式分析

一旦成功地從表中檢索出資料,就需要進一步操縱這些資料,以獲得有用或有意義的結果。這些要求包括:執行計算與數學運算、轉換資料、解析數值、組合值和聚合一個範圍內的值等。 下表給出了T-SQL函式的類別和描述。 函式類別 作用 聚

AS400 DB2 SQL常用函式總結

說明,本文所述,全部是針對使用SQL語句操作DB2,而不是在AS400的綠屏下使用AS400的命令操作Library、object、menber 一、AS400 DB2 SQL語法基礎特別說明 1、AS400 DB2 SQL庫、表、欄位名都不區分大小寫

SQL常用函式

以下的函式分別在mssqlserver和oracle中進行測試,只列出常用的函式,不列出具體用法. 1,得到系統時間函式   mssqlserver getDate()   oracle           sysDate 2, 提取串的組成部分   mssqlserver

sql常用函式和日期格式化

http://www.cnblogs.com/hantianwei/archive/2009/12/03/1616148.html http://www.cnblogs.com/wanghonghu/p/4099712.html

sql常用函式instr()和substr()

在Oracle中 可以使用**instr**函式對某個字串進行判斷,判斷其是否含有指定的字元。 其語法為: **instr(sourceString,destString,start,appearPosition)**. instr('源字串' , '目標字

sql常用函式大全

BIN(x)   返回x的二進位制(OCT返回八進位制,HEX返回十六進位制)CEILING(x)   返回大於x的最小整數值EXP(x)   返回值e(自然對數的底)的x次方FLOOR(x)   返回小於x的最大整數值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,x2,..

HTML常用小知識點-1220(補充

都去 div blog gpo html 補充 log 知識 hid 當出現滾動條時讓豎條沒有: <body style=‘overflow:scroll;overflow-y:hidden‘> </body> 讓橫條沒有: <body sty

Linux學習筆記之四————Linux常用命令 ( 補充

-h http “.” 現實 人性化 快捷 我們 包括 無法 一、Linux命令——文件、磁盤管理 1.文件管理 <1>查看文件信息:ls ls是英文單詞list的簡寫,其功能為列出目錄的內容,是用戶最常用的命令之一,它類似於DOS下的dir命令。 Linu

SQL常用函式

      表8-2 中的SOUNDEX 需要做進一步的解釋。SOUNDEX 是一個將任何文字串轉換為描述其語音表示的字母數字模式的演算法。SOUNDEX 考慮了類似的發音字元和音節,使得能對字串進行發音比較而不是字母比較。雖然SOUNDEX 不是SQL 概念,但多數D

sql注入擷取字串 Sql注入擷取字串常用函式

Sql注入擷取字串常用函式          在sql注入中,往往會用到擷取字串的問題,例如不回顯的情況下進行的注入,也成為盲注,這種情況下往往需要一個一個字元的去猜解,過程中需要用到擷取字串。本文中主要列舉三

sql幾個常用函式

  Oracle:(百度百科查詢整理) 1,ROUND()函式為四捨五入函式    Round(number,[decimals]    number 待做四捨五入處理的數值    decimals 指明需保留小數點後面的位數

20181128(閉包函式函式巢狀,名稱空間,作用域,裝飾器補充

  一、函式物件 在面向物件的程式設計中 一切皆物件 具體的體現: 1.函式可以被引用 def bar():    print('from bar')​f=barf()輸出結果為:from bar 2.函式可以作為函式的引數 def bar():  

Sql注入擷取字串常用函式--mid,substr,left

在sql注入中,往往會用到擷取字串的問題,例如不回顯的情況下進行的注入,也成為盲注,這種情況下往往需要一個一個字元的去猜解,過程中需要用到擷取字串。本文中主要列舉三個函式和該函式注入過程中的一些用例。Ps;此處用mysql進行說明,其他型別資料庫請自行檢測。 三大法寶:

MySql:SQL常用操作、函式、事物和索引

MySQL是一個關係型資料庫管理系統,在開始學習MySQL資料庫前,讓我們先了解下RDBMS的一些術語: 資料庫: 資料庫是一些關聯表的集合。 資料表: 表是資料的矩陣,在一個數據庫中的表看起來像一個簡單的電子表格。 列:一列(資料元素) 包含了相同的資料,例如郵政編碼

sql語句】實驗三 SQL*Plus 中常用函式

save C:\Users\DH2016PSY\Desktop\資料庫PPT18\SY3\SY3.sql; save C:\Users\DH2016PSY\Desktop\資料庫PPT18\SY3\SY3.sql append; 1.ASCII:返回與指定的字元對應的ASCII碼。

Python_常用的隨機數獲取方式(補充)

import random 取值 random.randint(0,5)#包括邊界 一定範圍內滿足某個規則的整數 random.randrange(20,35,3) #表明是20/23/26/29

補充常用資料結構學習

1. 資料結構:相互之間存在一種或多種特定關係的資料元素的集合。形式定義:資料結構是一個二元組(D,S),D是資料元素的有限集,S是D上關係的有限集。 2. 結構:資料元素之間的關係稱為結構,通常由四種基本結構:集合、線性結構、樹形結構、圖狀(網狀)結構; 3.