1. 程式人生 > >DB2中常用sql語句語法

DB2中常用sql語句語法

DB2 提供了關連式資料庫的查詢語言sql(structured query language),是一種非常口語化、既易學又易懂的語法。此一語言幾乎是每個資料庫系統都必須提供的,用以表示關連式的操作,包含了資料的定義(ddl)以及資料的處理(dml)。sql原來拼成sequel,這語言的原型以"系統 r"的名字在 ibm 聖荷西實驗室完成,經過ibm內部及其他的許多使用性及效率測試,其結果相當令人滿意,並決定在系統r 的技術基礎發展出來 ibm 的產品。而且美國國家標準學會(ansi)及國際標準化組織(iso)在1987遵循一個幾乎是以 ibm sql 為基礎的標準關連式資料語言定義。

一、資料定義 DDL(data definition language)

資料定語言是指對資料的格式和形態下定義的語言,他是每個資料庫要建立時候時首先要面對的,舉凡資料分哪些表格關係、表格內的有什麼欄位主鍵、表格和表格之間互相參考的關係等等,都是在開始的時候所必須規劃好的。

1、建表格:

create table table_name(

column1 datatype [not null] [not null primary key],

column2 datatype [not null],

...)

說明:

datatype --是資料的格式,詳見表。

nut null --可不可以允許資料有空的(尚未有資料填入)。

primary key --是本表的主鍵。

2、更改表格 

alter table table_name

add column column_name datatype

說明:增加一個欄位(沒有刪除某個欄位的語法。

alter table table_name

add primary key (column_name)

說明:更改表得的定義把某個欄位設為主鍵。

alter table table_name

drop primary key (column_name)

說明:把主鍵的定義刪除。

3、建立索引 

create index index_name on table_name (column_name)

說明:對某個表格的欄位建立索引以增加查詢時的速度。

4、刪除 

drop table_name

drop index_name

二、DDL的資料形態 datatypes

smallint 16 位元的整數。

interger 32 位元的整數。

decimal(p,s) p 精確值和 s 大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數點後有幾位數。如果沒有特別指定,則系統會設為 p=5; s=0 。

float 32位元的實數。

double 64位元的實數。

char(n) n 長度的字串,n不能超過 254。

varchar(n) 長度不固定且其最大長度為 n 的字串,n不能超過 4000。

graphic(n) 和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態是為了支援兩個字元長度的字型,例如中文字。

vargraphic(n) 可變長度且其最大長度為 n 的雙字元字串,n不能超過 2000。

date 包含了 年份、月份、日期。

time 包含了 小時、分鐘、秒。

timestamp 包含了 年、月、日、時、分、秒、千分之一秒。

三、資料操作DML (data manipulation language)

資料定義好之後接下來的就是資料的操作。資料的操作不外乎增加資料(insert)、查詢資料(query)、更改資料(update) 、刪除資料(delete)四種模式,以下分 別介紹他們的語法:

1、增加資料:

insert into table_name (column1,column2,...)

values ( value1,value2, ...)

說明:

1.若沒有指定column 系統則會按表格內的欄位順序填入資料。

2.欄位的資料形態和所填入的資料必須吻合。

3.table_name 也可以是景觀 view_name。

insert into table_name (column1,column2,...)

select columnx,columny,... from another_table

說明:也可以經過一個子查詢(subquery)把別的表格的資料填入。

2、查詢資料:

基本查詢

select column1,columns2,...

from table_name

說明:把table_name 的特定欄位資料全部列出來

select *

from table_name

where column1 = xxx

[and column2 > yyy] [or column3 <> zzz]

說明:

1.''''*''''表示全部的欄位都列出來。

2.where 之後是接條件式,把符合條件的資料列出來。

select column1,column2

from table_name

order by column2 [desc]

說明:order by 是指定以某個欄位做排序,[desc]是指從大到小排列,若沒有指明,則是從小到大排列

組合查詢

組合查詢是指所查詢得資料來源並不只有單一的表格,而是聯合一個以上的表格才能夠得到結果的。

select *

from table1,table2

where table1.colum1=table2.column1

說明:

1.查詢兩個表格中其中 column1 值相同的資料。

2.當然兩個表格相互比較的欄位,其資料形態必須相同。

3.一個複雜的查詢其動用到的表格可能會很多個。

整合性的查詢:

select count (*)

from table_name

where column_name = xxx

說明:查詢符合條件的資料共有幾筆。

select sum(column1)

from table_name

說明:1.計算出總和,所選的欄位必須是可數的數字形態。

2.除此以外還有 avg() 是計算平均、max()、min()計算最大最小值的整合性查詢。

select column1,avg(column2)

from table_name

group by column1

having avg(column2) > xxx

說明:1.group by: 以column1 為一組計算 column2 的平均值必須和 avg、sum等整合性查詢的關鍵字一起使用。

2.having : 必須和 group by 一起使用作為整合性的限制。

複合性的查詢

select *

from table_name1

where exists (

select *

from table_name2

where conditions )

說明:1.where 的 conditions 可以是另外一個的 query。

2.exists 在此是指存在與否。

select *

from table_name1

where column1 in (

select column1

from table_name2

where conditions )

說明:1. in 後面接的是一個集合,表示column1 存在集合裡面。

2. select 出來的資料形態必須符合 column1。

其他查詢

select *

from table_name1

where column1 like ''''x%''''

說明:like 必須和後面的''''x%'''' 相呼應表示以 x為開頭的字串。

select *

from table_name1

where column1 in (''''xxx'''',''''yyy'''',..)

說明:in 後面接的是一個集合,表示column1 存在集合裡面。

select *

from table_name1

where column1 between xx and yy

說明:between 表示 column1 的值介於 xx 和 yy 之間。

3、更改資料:

update table_name

set column1=''''xxx''''

where conditoins

說明:

1.更改某個欄位設定其值為''''xxx''''。

2.conditions 是所要符合的條件、若沒有 where 則整個 table 的那個欄位都會全部被更改。

4、刪除資料:

delete from table_name

where conditions

說明:刪除符合條件的資料。

說明:關於where條件後面如果包含有日期的比較,不同資料庫有不同的表示式。具體如下:

(1)如果是access資料庫,則為:where mydate>#2000-01-01#

(2)如果是oracle資料庫,則為:where mydate>cast(''''2000-01-01'''' as date)

或:where mydate>to_date(''''2000-01-01'''',''''yyyy-mm-dd'''')

在delphi中寫成:thedate=''''2000-01-01'''';

query1.sql.add(''''select * from abc where mydate>cast(''''+''''''''''''''''+thedate+''''''''''''''''+'''' as date)'''');

如果比較日期時間型,則為:where mydatetime>to_date(''''2000-01-01 10:00:01'''',''''yyyy-mm-dd hh24:mi:ss'''')

審校by lei

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

1、組合語句執行

BEGIN   ATOMIC

表示式1 分號 空格/回車

表示式2 分號 空格/回車

END

2、應該限制訪問許可權的表(應該撤銷這些表PUBLIC SELECT訪問權)

SYSCAT.DBAUTH

SYSCAT.TABAUTH

SYSCAT.PACKAGEAUTH

SYSCAT.INDEXAUTH

SYSCAT.COLAUTH

SYSCAT.PASSTHRUAUTH

SYSCAT.SCHEMAAUTH

比較有用的目錄表

SYSCAT.COLUMNS:包含每一行對應於表或檢視中定義的列

SYSCAT.INDEXCOLUSE:包含每一行包含的所有列

SYSCAT.INDEXES:包含每一行對應於表或檢視中定義的每個索引

SYSCAT.TABLES:所建立每個表,檢視,別名對應其中一行

SYSCAT.VIEWS:所建立每個檢視對應其中一行或幾行

通過索引保持資料唯一性:CREATE UNIQUE INDEX INDEXNAME ON TABLE (COLUMN)

消除重複行:SELECT DISTINCT COLUMN FROM TABLE

3、DB2關於時間的一些函式

得到當前時間的年份、月份、天、小時等等:

YEAR (current timestamp)
MONTH (current timestamp)
DAY (current timestamp)
HOUR (current timestamp)
MINUTE (current timestamp)
SECOND (current timestamp)
MICROSECOND (current timestamp)

分別得到當時的日期和時間

DATE (current timestamp)
TIME (current timestamp)

關於時間的一些計算:

current date + 1 YEAR
current date + 3 YEARS + 2 MONTHS + 15 DAYS
current time + 5 HOURS - 3 MINUTES + 10 SECONDS

計算兩個日期之間有多少天:

days (current date) - days (date(’1999-10-22′))

得到去除毫秒的當前時間:

CURRENT TIMESTAMP - MICROSECOND (current timestamp) MICROSECONDS

將時間轉換成字串:

char(current date)
char(current time)
char(current date + 12 hours)

將字串轉換成時間:

TIMESTAMP (’2002-10-20-12.00.00.000000′)
TIMESTAMP (’2002-10-20 12:00:00′)
DATE (’2002-10-20′)
DATE (’10/20/2002′)
TIME (’12:00:00′)
TIME (’12.00.00′)

注意:在DB2的命令編輯器中可以輸入SQL語句和DB2中的內部命令。要想顯示當前時間的話,不能直接輸入current time,這個只能在SQL語言中引用,要想顯示有下面方式:

1) VALUES (current time)

2) SELECT CURRENT TIME FROM SYSIBM.SYSDUMMY1

這個與SQL SERVER2000中不一樣,在SQL SERVER2000中可以輸入Getdate()得到時間,既可以顯示,也可以在語句SQL中用。

4、所有返回前N條資料的表示式

在SQL SERVER2000中使用TOP N 格式

比如: SELECT TOP 10 CARDNO FROM CARD

在DB2中使用fetch first N rows only 格式

比如:SELECT CARDNO FROM SEALCARD fetch first 10 rows only

5、函式使用

檢視系統函式: SELECT * FROM SYSibm.sysfunctions;

比如:ABS(-89)可以作為值輸入到SQL中,但是要想在命令編輯器中顯示函式的結果的話可以用下列方式:

1)SELECT ABS(-89) FROM SYSIBM.SYSDUMMY1;

2)VALUES ABS(-89);

6、儲存過程

在進行DB2儲存過程開發時,我們可以利用很多DB2自帶的工具,例如開發中心,控制中心等。但有時使用指令碼能帶給開發人員更大的靈活性和更高的工作效率。

在開始開發一個新的或修改一個已存在的儲存過程時,我們通常會進行下面一些準備工作:

1.         檢視該儲存過程會用到的表的表結構、欄位型別、相關索引和示例資料。

2.         檢視相關的儲存過程或使用者自定義函式(UDF)的定義。

3.         查詢無效的儲存過程並生成繫結語句。

4.         如某個表發生了改變,檢視依賴於該表的所有檢視、儲存過程和使用者自定義函式(UDF)

雖然上述資訊都可以通過DB2提供的開發工具和管理工具獲得,但是通過指令碼可以更快速的獲得所需資訊,並且可以重複執行。

使用指令碼完成上述任務的關鍵是理解和使用DB2的系統表。我們先簡單回顧一下有關的DB2的系統表和檢視:

1.         syscat.routines:儲存所有的儲存過程和使用者自定義函式(UDF)資訊。其中routinename欄位為儲存過程或使用者自定義函式(UDF)的名稱,routinetype欄位表示該記錄表示的是儲存過程(P)還是使用者自定義函式(F),lib_id欄位為儲存過程編譯後生成的包序列號,origin欄位表示該儲存過程或使用者自定義函式的出處(Q表示是由SQL組成的,E表示使用者定義的且是外部的),valid欄位表示該儲存過程或使用者自定義函式是否有效,如果origin欄位不是Q的話,該域為空。

2.         syscat.packages:儲存所有被繫結的程式包。其中pkgname表示包名稱,valid欄位表示該包是否合法。

3.         syscat.packagedep:儲存關於程式包的依賴關係。其中pkgname欄位表示程式包名,btype欄位表示被依賴物件的型別,bname欄位表示被依賴物件的名稱。

4.         syscat.routinedep:儲存關於程式(routine)的依賴關係。其中routinename欄位表示程式名,btype欄位表示被依賴物件的型別,bname欄位表示被依賴物件的名稱。

5.         syscat.viewdep:儲存了關於檢視的依賴關係。其中viewname欄位表示檢視名,btype欄位表示被依賴物件的型別,bname欄位表示被依賴物件的名稱。

回顧並瞭解了上述系統表和檢視,我們就可以很容易的建立指令碼以完成前面提到的開發儲存過程所要做的準備工作。

1. 檢視該表結構、欄位型別、相關索引和示例資料

雖然我們可以查詢sysibm.systables表獲得表結構,但有一種更簡便的方法來獲取表結構,即使用db2look工具。該工具可以生成建立該表和相關的索引的DDL。如我們要獲取指定資料庫中指定表的結構和前20條資料作為參考,可編寫指令碼viewtbl.cmd如下,傳入引數分別為資料庫名和表名。

@echo ------------------ DDL of table %2 and related index(ex) ------------------

@db2look -d %1 -t %2 -e

@echo ------------------ fisrt 20 rows in table %2 ------------------

@db2 select * from %2 fetch first 20 rows only

2.檢視已存在的儲存過程和使用者自定義函式(UDF)的定義,將結果存入檔案並自動開啟結果檔案。

可以從syscat.routines表中做簡單查詢實現指令碼viewrtn.cmd。

@db2 SELECT text FROM SYSCAT.ROUTINES WHERE ROUTINENAME=upper('%1') > %1.sql

@start %1.sql

3.檢視所有無效的儲存過程並生成繫結語句

刪除儲存過程引用的表會引起該儲存過程無效。無效儲存過程可以採用查詢syscat.routines和syscat.packages的方法獲得:

SELECT

    RTRIM(r.routineschema) || '.' || RTRIM(r.routinename) AS spname ,

    RTRIM(r.routineschema) || '.' || 'P'||SUBSTR(CHAR(r.lib_id+10000000),2) AS pkgname

FROM

    SYSCAT.routines r

WHERE

    r.routinetype = 'P'

    AND (

        (r.origin = 'Q' AND r.valid != 'Y')

        OR EXISTS (

            SELECT 1 FROM syscat.packages

            WHERE pkgschema = r.routineschema

            AND pkgname = 'P'||SUBSTR(CHAR(r.lib_id+10000000),2)

            AND valid !='Y'

        )

    )

ORDER BY spname

注意要同時查詢syscat.routines和syscat.packages表,因為在程式包無效時syscat.routines中的valid值仍可能為Y。

如果要自動生成重新繫結語句,只需將上述SQL改寫並存成invalidSP.cmd:

@echo off

db2 "SELECT '@db2 rebind package '|| RTRIM(r.routineschema) || '.' || 'P'||SUBSTR(CHAR(r.lib_id+10000000),2)||' resolve any' FROM SYSCAT.routines r WHERE r.routinetype = 'P' AND ((r.origin = 'Q' AND r.valid != 'Y') OR EXISTS (SELECT 1 FROM syscat.packages WHERE pkgschema = r.routineschema AND pkgname = 'P'||SUBSTR(CHAR(r.lib_id+10000000),2) AND valid !='Y') )" >rebindsp.bat

4.檢視某個表所依賴的檢視、儲存過程和使用者自定義函式(UDF)

使用上述系統檢視,我們很容易編寫出指令碼:

@echo off

echo --- dependent SPs ---

db2 "select proc.procschema, proc.procname from syscat.routines r, syscat.procedures proc, syscat.packagedep pdep where pdep.bname=upper('%2') and pdep.bschema=upper('%1') and r.specificname=proc.specificname AND pdep.pkgname = 'P'||SUBSTR(CHAR(r.lib_id+10000000),2)"

echo --- dependent UDF ---

db2 select routineschema, routinename from syscat.routinedep where bschema = upper('%1') and bname = upper('%2') and btype ='T' order by bname

echo --- dependent view ---

db2 select viewschema, viewname from syscat.viewdep where bschema = upper('%1') and bname = upper('%2') and btype ='T' order by bname

行業借鑑經驗:提高DB2儲存過程效能和健壯性的3個最佳實踐

最佳實踐1:在建立儲存過程語句中提供必要的引數

建立儲存過程語句(CREATE PROCEDURE)可以包含很多引數,雖然從語法角度講它們不是必須的,但是在建立儲存過程時提供這些引數可以提高執行效率。下面是一些常用的引數:

l         容許SQL(allowed-SQL)

容許SQL(allowed-SQL)子句的值指定了儲存過程是否會使用SQL語句,如果使用,其型別如何。它的可能值如下所示:

NO SQL: 表示儲存過程不能夠執行任何SQL語句。

CONTAINS SQL: 表示儲存過程可以執行SQL語句,但不會讀取SQL資料,也不會修改SQL資料。

READS SQL DATA: 表示在儲存過程中包含不會修改SQL資料的SQL語句。也就是說該儲存過程只從資料庫中讀取資料。

MODIFIES SQL DATA: 表示儲存過程可以執行任何SQL語句。即可以對資料庫中的資料進行增加、刪除和修改。

如果沒有明確宣告allowed-SQL,其預設值是MODIFIES SQL DATA。不同型別的儲存過程執行的效率是不同的,其中NO SQL效率最好,MODIFIES SQL DATA最差。如果儲存過程只是讀取資料,但是因為沒有宣告allowed-SQL型別,它會被當作對資料進行修改的儲存過程來執行,這顯然會降低程式的執行效率。因此建立儲存過程時,應當明確宣告其allowed-SQL型別。

l         返回結果集個數(DYNAMIC RESULT SETS n)

儲存過程能夠返回0個或者多個結果集。為了從儲存過程中返回結果集,需要執行如下步驟:

在CREATE PROCEDURE 語句的DYNAMIC RESULT SETS子句中宣告儲存過程將要返回的結果集的數量。如果這裡宣告的返回結果集的數量小於儲存過程中實際返回的結果集數量,在執行該儲存過程的時候,DB2會返回一個警告。

使用WITH RETURN子句,在儲存過程體中宣告遊標。

為結果集開啟遊標。當儲存過程返回的時候,保持遊標開啟。

在建立儲存過程時指定返回結果集的個數可以幫助程式設計師驗證儲存過程是否返回了所期待數量的結果集,提高了程式的完整性。

最佳實踐2:對輸入引數進行必要的的檢查和預處理

無論使用哪種程式語言,對輸入引數的判斷都是必須的。正確的引數驗證是保證程式良好執行的前提。同樣的,在DB2儲存過程中對輸入引數的驗證和處理也是很重要的。正確的驗證和預處理操作包括:

如果輸入引數錯誤,儲存過程應返回一個明確的值告訴客戶應用,然後客戶應用可以根據返回的值進行處理,或者向儲存過程提交新的引數,或者去呼叫其他的程式。

根據業務邏輯,對輸入引數作一定的預處理,如大小寫的轉換,NULL與空字串或0的轉換等。

在DB2儲存過程開發中,如需要遇到對空(NULL)進行初始化,我們可以使用COALESCE函式。該函式返回第一個非NULL的引數。例如,COALESCE(piName,''),如果變數piName為NULL,那麼函式會返回'',否則就會返回piName本身的值。因此,可以用下面的程式碼檢查piName是否非NULL並且非空字串:

SET poGenStatus = 0;                                                   

   SET piName   =RTRIM(COALESCE(piName, ''));

    IF (piName ='')  

    THEN                             

        SET poGenStatus = 34100;     

        RETURN poGenStatus;          

    ENDIF;       

同理,使用COALESCE可以對任何型別的輸入引數進行初始化或驗證。下面是對引數初始化規則的一個總結:

1.       輸入引數為字元型別,且允許為NULL的,如希望預設值為空字串,可以使用COALESCE(inputParameter, '')把NULL轉換成空字串;

2.       輸入型別為整型,且允許為NULL的,如希望預設值為0,可以使用COALESCE(inputParameter,0),把NULL轉換成0;

3.       輸入引數為字元型別,且不允許是NULL或空字串的,可以使用RTRIM(COALESCE(inputParameter, ''))把NULL轉換成空字串,然後驗證函式返回值是否為空字串;

4.       輸入型別為整型,且不允許是NULL的,不需要使用COALESCE函式,直接使用IS NULL進行驗證。

最佳實踐3:異常(condition)處理

在儲存過程執行的過程中,經常因為資料或者其他問題產生異常(condition)。根據業務邏輯,儲存過程應該對異常進行相應處理或直接返回給呼叫者。此處暫且將condition譯為異常以方便理解。實際上有些異常(condition)並非是由於錯誤引起的。

當儲存過程中的語句返回的SQLSTATE

相關推薦

DB2常用sql語句語法

DB2 提供了關連式資料庫的查詢語言sql(structured query language),是一種非常口語化、既易學又易懂的語法。此一語言幾乎是每個資料庫系統都必須提供的,用以表示關連式的操作,包含了資料的定義(ddl)以及資料的處理(dml)。sql原來拼成sequel,這語言的原型以"系統 r"的

sql常用sql語句

lin arc 分享圖片 bsp sel user line lec sql語句 按天來分組查詢 select convert(varchar(10),addtime,120) from user_online_statis group by convert(varc

淺談MySQL優化sql語句查詢常用的30種方法

系統資源 all 數據量過大 連續 don 問題 not sele 客戶端 1.對查詢進行優化,應盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用

淺談 MySQL 優化 SQL 語句查詢常用的 30 種方法

個數 尋找 情況 don union all 子句 set 其他 算術 1、對查詢進行優化,應盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2、應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引

SQL注入常用的mysql語法

user()返回當前資料庫連線使用的使用者; database()返回當前資料庫連線使用的資料庫; version()返回當前資料庫的版本; concat-ws() 函式可以將這些函式進行組合使用並顯示出來。concat函式中,將其中的引數直接連線起來產生新的字串。而在con

MySQL優化sql語句查詢常用的方法

1.對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應儘量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。 3.應儘量避免在 where 子句中對欄位進行 null 值

013-- mysql常用的查詢優化方法 淺談MySQL優化sql語句查詢常用的30種方法

淺談MySQL中優化sql語句查詢常用的30種方法   1.對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應儘量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全

3學習筆記-DB2常用sql語句

忘記表名時查詢用select * from syscat.tables where tabname like '%KK%'  -- %號之間必須為大寫字母無日誌清空表truncate table 表名 immediate只查詢一條資料select * from 表名 fetc

淺談MySQL優化sql語句查詢常用的30種方法(sql優化)

1.對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。  2.應

常用SQL語句

char password 所有 gen 登錄 刪除表 一個 mysqldump pda --1. 用戶 --登錄 mysql -u用戶名 -p[密碼] --修改密碼 mysqladmin -u用戶名 -p[密碼] pa

Shell腳本執行sql語句操作

out ins host source con more char 演示 -1   這篇文章主要介紹了Shell腳本中執行sql語句操作mysql的5種方法,本文講解了將SQL語句直接嵌入到shell腳本文件中、命令行調用單獨的SQL文件、使用管道符調用SQL文件等方法,需

shell 腳本執行SQL語句 -e "..."

... from rom bin 執行 dev use class col /usr/local/mysql/bin/mysql -uroot -p123456 -e " use faygo source faygo.sql select * from devquit "

oracle 常用sql語句

onu format del 滿足 blank ica end var har 目錄 1)基本 2)數學函數 3)rownum 4)分頁 5)時間處理 6)字符函數 7)to_number 8)聚合函數 9)學生選課 10)圖書館借閱 基本 --新建表: cre

13.4 mysql用戶管理 13.5 常用sql語句 13.6 mysql數據庫備份恢復

13.4 mysql用戶管理 13.5 常用sql語句 13.6 mysql數據庫備份恢復- 13.4 mysql用戶管理 - 13.5 常用sql語句 - 13.6 mysql數據庫備份恢復 - 擴展 - SQL語句教程 http://blog.51cto.com/zt/206 - 什麽是事務?事務的特性

在SqlServer通過SQL語句實現樹狀查詢

clas all bold join where procedure ner log class 1 CREATE PROCEDURE [dbo].[GetTree] 2 @Id int 3 AS 4 BEGIN 5 with cte as

mysql用戶管理、常用sql語句、mysql數據庫備份恢復

mysql用法mysql用戶管理1、新增用戶user1,並設置密碼為123456mysql> grant all on *.* to ‘user1‘@‘127.0.0.1‘ identified by ‘123456‘;#創建user1用戶並授予其所有權限“*.*”(通配符)#第一個*:表示所有的數據庫

MySQL常用SQL語句

create eight sele 操作 表結構 結構 employ ase truncate 1、對庫的操作 1 mysql> show databases; #查看所有的庫 2 mysql> select database();

Oracle數據庫,常用SQL語句匯總

sql oracl -s 使用率 style pac alter _id 查詢 --查看表空間名稱、數據文件的路徑、大小、及使用率select b.tablespace_name "表空間名稱", b.file_name "數據文件路徑",

oracle dataguard常用sql語句

dataguardselect log_mode,open_mode ,database_role from v$database; --查看dataguard主備庫狀態 select status from v$instance; --查看數據庫狀態 alter database recover manag

pythonsql語句用法

mod location drop rop class turn price pytho 初始 函數中應用sql語句def _get_cust_number(self,cr,uid,ids,field_name,args,context=None): res={