顯示具有 SQL 標籤的文章。 顯示所有文章
顯示具有 SQL 標籤的文章。 顯示所有文章

2016年1月27日 星期三

SQL SELECT WHERE NOT EXISTS

SQL SELECT WHERE NOT EXISTS


找出t_SYS_User資料表中,與t_SYS_Group之間沒有相關連的資料

  SELECT * FROM (

 SELECT docno,name,ename,goid FROM t_SYS_User

  ) u
  WHERE NOT EXISTS (

      SELECT oid FROM t_SYS_Group

   WHERE oid=u.goid
  )

2016年1月6日 星期三

Searching in SQL Multiple Keyword in a Field

Searching in SQL Multiple Keyword in a Field


Filter: OR
string str = "john,jack,alton";

string select = "SELECT * FROM [TableName] WHERE [UserName] LIKE ''%' + REPLACE(str , ',' , '%'' OR [UserName] LIKE ''%') + '%''";


Filter: AND
string str = "john,jack,alton";

string select = "SELECT * FROM [TableName] WHERE [UserName] LIKE ''%' + REPLACE(str , ',' , '%'' AND [UserName] LIKE ''%') + '%''";


ref url:
http://forums.asp.net/t/1683482.aspx?Sql+query+to+search+database+with+multiple+keywords

2016年1月5日 星期二

MSSQL Update Select

MSSQL Update Select


UPDATE
    TableA
SET
    TableA.docno = TableB.docno,
    TableA.name = TableB.name
FROM
    TableB
WHERE TableA.id=TableB.id
;

MSSQL ROLLBACK & COMMIT

MSSQL ROLLBACK & COMMIT


ROLLBACK:
BEGIN TRANSACTION doUpdate

--do insert, update, delete

ROLLBACK TRANSACTION doUpdate


COMMIT:
BEGIN TRANSACTION doUpdate

--do insert, update, delete

COMMIT TRANSACTION doUpdate


ref:
https://msdn.microsoft.com/zh-tw/library/ms188929%28v=sql.120%29.aspx
https://msdn.microsoft.com/zh-tw/library/ms190295%28v=sql.120%29.aspx

2015年12月9日 星期三

Searching in SQL Multiple Keyword

SQL 多條件查詢

使用逗號間隔多關鍵字查詢及對多個欄位進行搜查,組合條件為"或"。
※逗號前後不可留空白,否則會查出全部的資料



SQL
DECLARE @strKeyword    VARCHAR(512);
SET @strKeyword = 'john,howard,lee';

SELECT * FROM v_HRM_Evaluation 
JOIN dbo.FN_SPLIT_TBL(@strKeyword,',') tblB 
ON name + batchnumber + jobtitles + 
CONVERT(varchar(30),joblevel) +  workingfunc + 
ogno + ogname + ouno + ouname + ename + status + 
CONVERT(varchar(30),cdt,120) LIKE '%'+tblB.Value+'%'  
WHERE 1=1 


FN_SPLIT_TBL
--註:字串切割,用在單一欄位多條件同時查詢,如:(Select * from Table Where name like '%張%' or name like '%陳%' or name like '%王%')
--引用範例(一):
--select tblA.* from t_HRM_Evaluation tblA join dbo.FN_SPLIT_TBL('張,陳,王',',') tblB on tblA.name like '%'+tblB.Value+'%'
--引用範例(二):
--SELECT dbo.[FN_SPLIT](Name.Value, 2, '=') as Name,
--dbo.[FN_SPLIT](Age.Value, 2, '=') as Age,
--dbo.[FN_SPLIT](Job.Value, 2, '=') as Job,
--dbo.[FN_SPLIT](Location.Value, 2, '=') as Location,
--dbo.[FN_SPLIT](Add_Date.Value, 2, '=') as Add_Date
--FROM HR data
--    CROSS APPLY FN_SPLIT_TBL(data.Details, '|') Name
--    CROSS APPLY FN_SPLIT_TBL(data.Details, '|') Age
--    CROSS APPLY FN_SPLIT_TBL(data.Details, '|') Job
--    CROSS APPLY FN_SPLIT_TBL(data.Details, '|') Location
--    CROSS APPLY FN_SPLIT_TBL(data.Details, '|') Add_Date
--WHERE Name.Pos = 1 AND Age.Pos = 2 AND Job.Pos = 3 AND Location.Pos = 4 AND Add_Date.Pos = 5

CREATE FUNCTION [dbo].[FN_SPLIT_TBL](@InExp varchar(8000), @Sep varchar(10)) --SELECT * FROM DBO.[FN_SPLIT_TBL]('TEST1,TEST2', ',')
RETURNS @Res    TABLE(
    Pos         int,
    Value       varchar(max))
AS
BEGIN
    WITH Pieces(pn, start, stop) AS (
        SELECT 1, 1, CHARINDEX(@Sep, @InExp)
        UNION ALL
        SELECT pn + 1, stop + 1, CHARINDEX(@sep, @InExp, stop + 1)
        FROM Pieces
        WHERE stop > 0
    )

    INSERT INTO @Res
    SELECT pn, SUBSTRING(@InExp, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s
    FROM Pieces OPTION (MAXRECURSION 0);

    RETURN;
END


FN_SPLIT
--註:無
--引用範例(一):
--SELECT 
--dbo.[FN_SPLIT](data.Name, 2, '=') as Name,
--dbo.[FN_SPLIT](data.Age, 2, '=') as Age,
--dbo.[FN_SPLIT](data.Job, 2, '=') as Job,
--dbo.[FN_SPLIT](data.Location, 2, '=') as Location,
--dbo.[FN_SPLIT](data.Add_Date, 2, '=') as Add_Date
--FROM (
--    SELECT 
--    dbo.[FN_SPLIT](Details, 1, '|') as Name,
--    dbo.[FN_SPLIT](Details, 2, '|') as Age,
--    dbo.[FN_SPLIT](Details, 3, '|') as Job,
--    dbo.[FN_SPLIT](Details, 4, '|') as Location,
--    dbo.[FN_SPLIT](Details, 5, '|') as Add_Date
--    FROM HR) data



CREATE FUNCTION [dbo].[FN_SPLIT] ( --SELECT DBO.FN_SPLIT('TEST1 , TEST2', 2, ',')
    @s varchar(512),
    @i int,
    @sep char(1) = ',')
RETURNS varchar(512)
AS
BEGIN
    DECLARE @Ret    VARCHAR(512);

    WITH Pieces(pn, start, stop) AS (
      SELECT 1, 1, CHARINDEX(@sep, @s)
      UNION ALL
      SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
      FROM Pieces
      WHERE stop > 0
    )
    SELECT @Ret =
    RTRIM(SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END))
    FROM Pieces
    WHERE pn = @i

    RETURN @Ret;
END

Searching in ASP.Net GridView Multiple Parameters

Searching in ASP.Net GridView Multiple Parameters

cs
private void BindData()
{
    string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    string query = "select * from customers where (name like '%' + @name + '%' or @name = '') and (age = @age or @age= 0) and (mobile = @mobile or @mobile= '') and (city = @city or @city= '')";
    SqlCommand cmd = new SqlCommand(query);
    cmd.Parameters.AddWithValue("@name", txtName.Text.Trim());
    cmd.Parameters.AddWithValue("@age", txtAge.Text.Trim() == "" ? 0 txtAge.Text.Trim());
    cmd.Parameters.AddWithValue("@mobile", txtMobile.Text.Trim());
    cmd.Parameters.AddWithValue("@city", ddlCity.SelectedIndex > 0 ? ddlCity.SelectedValue : "");
    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter())
        {
            cmd.Connection = con; sda.SelectCommand = cmd;
            using (DataSet ds = new DataSet())
            {
                sda.Fill(ds);
                GridView1.DataSource = ds;
                GridView1.DataBind();
            }
        }
    }
}



ref url:

2014年9月1日 星期一

T-SQL CONVERT DateTime 常用日期格式轉換

T-SQL CONVERT DateTime 常用日期格式轉換

T-SQL:
2014-09-01 10:35:44
select CONVERT(char(19), getdate(), 120)

2014-09-01
select CONVERT(char(10), getdate(), 20)

2014/09/01
select CONVERT(char(10), getdate(), 111)

14/09/01
select CONVERT(char(8), getdate(), 11)

20140901
select CONVERT(char(8), getdate(), 112)

140901
select CONVERT(char(6), getdate(), 12)

2014.09.01
select CONVERT(char(10), getdate(), 102)

14.09.01
select CONVERT(char(8), getdate(), 2)

2014年8月28日 星期四

SQL 2008 資料加密

SQL 2008 資料加密
以下範例建立一個具有儲存加密,讀取解密的資料表

參考網址:
http://dotnetframework.blogspot.tw/2011/01/blog-post.html
http://www.dotblogs.com.tw/dc690216/archive/2009/09/10/10559.aspx


1.建立非對稱金鑰。指定name=mykey, pwd=p@ssw0rd
CREATE ASYMMETRIC KEY mykey
    WITH ALGORITHM = RSA_2048
    ENCRYPTION BY PASSWORD = 'p@ssw0rd';
GO

2.查詢第1步驟所建立的key是否成功。
select * from sys.asymmetric_keys

3.建立測試資料表

4.建立新增、更新、刪除資料表的預存程序。

USE [EIP_new]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[sp_BPM_Modify_t_BPM_Seal_type_E]

 @action_type    NCHAR(1) = '' ,
 @id    INT = 0,
 @username        NVARCHAR(50) = '',
 @uid   NVARCHAR(10) = '',
 @pwd   NVARCHAR(30) = '',
 @sort   INT = 0,
 @cdt   DateTime
AS
BEGIN

 SET NOCOUNT ON;

    --傳入資料檢核
 IF (@action_type NOT IN ('A','D','U'))
 BEGIN
  DECLARE @DBID INT;
  SET @DBID = DB_ID();
  DECLARE @DBNAME NVARCHAR(128);
  SET @DBNAME = DB_NAME();
  RAISERROR
  (N'資料庫 ID:%d, 資料庫名稱: %s。 錯誤訊息:傳入的Action_Mode,必須是 A, U, D 其中一種',
  10, -- Severity.
  1, -- State.
  @DBID, -- First substitution argument.
  @DBNAME); -- Second substitution argument.
 END
 
 --宣告加密用變數
 DECLARE
  @encryp_uid NVARCHAR(max),
  @encryp_pwd NVARCHAR(max),
  @encryp_sort NVARCHAR(max)
 
 --SET @encryp_uid = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),@uid)
 SET @encryp_uid = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),CONVERT(nvarchar(max), @uid))
 --SET @encryp_pwd = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),@pwd)
 SET @encryp_pwd = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),CONVERT(nvarchar(max), @pwd))
 SET @encryp_sort = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),CONVERT(NVARCHAR(10),@sort))
 
 SET @encryp_uid = ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),CONVERT(nvarchar(max), @uid))
 
 
 --插入
 IF (@action_type = 'A')
 BEGIN
  INSERT INTO t_BPM_Seal_type_E
        (
  username ,
        [uid] ,
        pwd ,
        sort ,
        cdt
        )
        VALUES
        (          
     @username,
  @encryp_uid,
        @encryp_pwd,
        @encryp_sort,
  @cdt
        )
 END
 
 --更新
 IF (@action_type = 'U')
 BEGIN
  UPDATE t_BPM_Seal_type_E
  SET username=@username,
   [uid]=@encryp_uid,
   pwd=@encryp_pwd,
   cdt=@cdt
  WHERE id=@id
 END
 
 --刪除
 IF (@action_type = 'D')
 BEGIN
  DELETE t_BPM_Seal_type_E
  WHERE id=@id
 END
 
END
GO

5.建立檢視資料表,用來讀取被加密的資料表
CREATE VIEW [dbo].[v_BPM_Seal_type_E]
AS
SELECT     id, username, CONVERT(NVARCHAR(50), DECRYPTBYASYMKEY(ASYMKEY_ID('mykey'), uid, N'p@ssw0rd')) AS uid, CONVERT(NVARCHAR(50),
                      DECRYPTBYASYMKEY(ASYMKEY_ID('mykey'), pwd, N'p@ssw0rd')) AS pwd, CONVERT(NVARCHAR(50),
                      DECRYPTBYASYMKEY(ASYMKEY_ID('mykey'), sort, N'p@ssw0rd')) AS sort, cdt
FROM         dbo.t_BPM_Seal_type_E

6.最後查詢被加密的資料表。
上面是未解密原資料表,下面是已解密的檢視(使用第5步驟建立的檢視表)




7.直接查詢,不透過檢視表(View)
Select id,
ENCRYPTBYASYMKEY(ASYMKEY_ID('mykey'),
CONVERT(nvarchar(max), username)) as '加密'
From dbo.t_BPM_Seal_type_E
Select  id,
CONVERT(nvarchar(10), DECRYPTBYASYMKEY(ASYMKEY_ID('mykey'), uid, N'p@ssw0rd')) as '解密'
From dbo.t_BPM_Seal_type_E

2014年8月5日 星期二

T-SQL Cannot create a row of size 9440 which is greater than the allowable maximum row size of 8060

T-SQL Cannot create a row of size 9440 which is greater than the allowable maximum row size of 8060

StoredProcedure寫了一段PIVOT時出現的錯誤訊息
錯誤原因是其中有一個欄位長度超過8060,解決方法將原來nvarchar(max)改為==>nvarchar(4000)即可

下段StoredProcedure其中text1使用了nvarchar(max)


將text1改為nvarchar(4000)即可






2014年8月4日 星期一

T-SQL Stored Procedure使用條件式 IN

T-SQL Stored Procedure使用條件式 IN

How to pass string parameter with `IN` operator in stored procedure

(1)T-SQL (sp_ATS_ComparisonPIVOT) 主要預存程序
傳入參數:@model = N'A1234,B1234'
CREATE PROCEDURE [dbo].[sp_ATS_ComparisonPIVOT]
 
 @model       nvarchar(max)   
AS
 declare @ColumnGroup   nvarchar(max),
   @PivotSQL    nvarchar(max)
BEGIN
 
 SET NOCOUNT ON;
 
 select  @ColumnGroup = COALESCE(@ColumnGroup + ',' ,'' ) + QUOTENAME(model)
 FROM t_ATS_spec
 --請看下一行範例
 where model in (Select data From dbo.fn_slip_str(@model,','))
 GROUP BY QUOTENAME(model)
 select @ColumnGroup
 
 SELECT @PivotSQL = N'
 SELECT *
 FROM  (SELECT technicalspecification,name,model,text1 FROM t_ATS_spec) AS SourceTable
 PIVOT
 (max(text1)
 FOR
 model  IN (' + @ColumnGroup + N')
 ) AS PivotTable'
 exec(@PivotSQL)

END



(2)T-SQL(Function fn_slip_str)搭配字串分割程序使用
Create Function fn_slip_str( @InStr nvarchar(2000) , @s_char nvarchar(1) )
Returns @tb Table ( sno int , data nvarchar(100) )
As
Begin
    /*依據傳入字元進行字串分割,回傳Table*/
    /*
    Declare @InStr nvarchar(2000) , @s_char nvarchar(1);
    Set @InStr = '字串一,字串2,字串3,字串4';
    Set @s_char = ',';*/

    Set @InStr = @s_char + @InStr + @s_char;
    Declare @p1 Int , @p2 Int , @data nvarchar(100) , @sno int;
    Set @p1 = -1 ; Set @p2 = -1 ; Set @data = '' ; Set @sno = 0;
    While ( 0 Not In (@P1,@P2) ) Begin
  Set @p1 = CharIndex(@s_char,@InStr,@p1+1);
  Set @p2 = CharIndex(@s_char,@InStr,@p1+1);
  If ( 0 In (@p1,@p2) )
      Break;
  Set @data = SubString(@InStr,@p1+1,@p2-@p1-1);
  if ( @data <> '' ) Begin
      Set @sno = @sno +1;
      Insert Into @tb ( sno , data ) Values ( @sno , @data )
  End
    End
    Return
End

(3)執行結果:
Select * From dbo.fn_slip_str('字串一,字串2,字串3,字串4',',');

Ref WebSite
http://www.dotblogs.com.tw/rachen/archive/2008/05/23/4110.aspx

T-SQL字串分割

T-SQL字串分割

T-SQL code(backup):
Create Function fn_slip_str( @InStr nvarchar(2000) , @s_char nvarchar(1) )
Returns @tb Table ( sno int , data nvarchar(100) )
As
Begin
    /*依據傳入字元進行字串分割,回傳Table*/
    /*
    Declare @InStr nvarchar(2000) , @s_char nvarchar(1);
    Set @InStr = '字串一,字串2,字串3,字串4';
    Set @s_char = ',';*/

    Set @InStr = @s_char + @InStr + @s_char;
    Declare @p1 Int , @p2 Int , @data nvarchar(100) , @sno int;
    Set @p1 = -1 ; Set @p2 = -1 ; Set @data = '' ; Set @sno = 0;
    While ( 0 Not In (@P1,@P2) ) Begin
  Set @p1 = CharIndex(@s_char,@InStr,@p1+1);
  Set @p2 = CharIndex(@s_char,@InStr,@p1+1);
  If ( 0 In (@p1,@p2) )
      Break;
  Set @data = SubString(@InStr,@p1+1,@p2-@p1-1);
  if ( @data <> '' ) Begin
      Set @sno = @sno +1;
      Insert Into @tb ( sno , data ) Values ( @sno , @data )
  End
    End
    Return
End

執行結果:
Select * From dbo.fn_slip_str('字串一,字串2,字串3,字串4',',');

下段程式原始來源請參考下列網址(如有侵權請告知):
http://www.dotblogs.com.tw/rachen/archive/2008/05/23/4110.aspx

2014年3月2日 星期日

SQL 多筆Insert新增資料

SQL 多筆Insert新增資料
使用簡易方法=>傳入DataTable後自動組合成SQL指令後寫入DataBase

//1.取得空的DataTable
DataTable dt = GetEmptyTable("Table1");
//2.資料放入DataTable
DataRow dr = dt.NewRow();
dr["id"] = "1";
dr["no"] = "A001";
dt.Rows.Add(dr);

//3.DataTable存入資料庫
MultiInsert(dt, "Table1");


//Function
        /// <summary>
        /// 多筆新增資料
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="tableName"></param>
        /// <returns></returns>
        public static int MultiInsert(DataTable dt, string tableName)
        {
            try
            {
                int count = dt.Rows.Count;
                string ConnectionString = ConfigurationManager.ConnectionStrings[BPM.BPM_ConnStr].ToString();
                using (SqlConnection conn = new SqlConnection(ConnectionString))
                {
                    conn.Open();
                    //組合SQL  Insert String
                    string mysql = InsertString_Collect(tableName, dt);
                    SqlTransaction mytrans = conn.BeginTransaction();
                    //逐筆檢驗 逐筆新增
                    foreach (DataRow dr in dt.Rows)
                    {
                        //檢驗比對資料內容是否正確
                        //如c2 ==aa then c4=false...等
                        if (1 == 1)
                        {
                            using (SqlCommand cmd = new SqlCommand(mysql, conn))
                            {
                                cmd.Transaction = mytrans;
                                foreach (DataColumn col in dt.Columns)
                                {
                                    cmd.Parameters.AddWithValue("@" + col.ColumnName, dr[col.ColumnName]);
                                }
                                cmd.ExecuteNonQuery();
                            }
                        }
                    }
                    mytrans.Commit();
                    return count;
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        /// <summary>
        /// 組出SQL Insert String
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="dt"></param>
        /// <returns></returns>
        public static string InsertString_Collect(string tableName, DataTable dt)
        {
            try
            {
                string sql = "INSERT INTO " + tableName + "({p}) VALUES ({v})";
                string p = string.Empty;
                string v = string.Empty;
                foreach (DataColumn col in dt.Columns)
                {
                    p += col.ColumnName.ToString() + ",";
                    v += "@" + col.ColumnName.ToString() + ",";
                }
                p = p.Substring(0, int.Parse(p.Length.ToString()) - 1);
                v = v.Substring(0, int.Parse(v.Length.ToString()) - 1);
                sql = sql.Replace("{p}", p);
                sql = sql.Replace("{v}", v);
                return sql;
            }
            catch (Exception)
            {
                throw;
            }
        }
  /// <summary>
        /// 取得空的Table
        /// </summary>
        /// <param name="tableName">Database Table Name</param>
        /// <returns>DataTable</returns>
        public static DataTable GetEmptyTable(string tableName)
        {
            DataTable dt = new DataTable();
            try
            {
                SqlConnection cn = new SqlConnection();
                SqlCommand cmd = new SqlCommand();
                SqlDataAdapter da = new SqlDataAdapter();
                DataSet ds;
                string sql = string.Empty;
                string sqlwhere = string.Empty;
                string sqlsort = string.Empty;
                #region Execute SQL
                cn.ConnectionString = ConfigurationManager.ConnectionStrings[BPM.BPM_ConnStr].ToString();
                cmd.Connection = cn;
                cmd.CommandText = "SELECT * FROM " + tableName + " WHERE 1=0";
                cn.Open();
                da.SelectCommand = cmd;
                sql = da.SelectCommand.CommandText;
                ds = new DataSet();
                da.Fill(ds, "dt");
                dt = ds.Tables["dt"];
                cn.Close();
                #endregion Execute SQL
            }
            catch (Exception)
            {
                //throw;
            }
            return dt;
        }

2013年11月25日 星期一

Select Into & Insert Into

Select Into & Insert Into

下列指令會先創建newTable欄位與sourceTable一致,再將sourceTable的資料全部複製到newTable, newTable事先必須不存在
--select * into newTable from sourceTable

下列指令會將sourceTale的資料全部複製到newTable, newTable事先必須存在, 兩者欄位必須相同
--Insert into newTable select * from sourceTable

2013年9月10日 星期二

TSQL Cursor Example 語法

TSQL Cursor Example 語法

--定義變數
DECLARE @oid varchar(50),
        @ono varchar(18),
        @s_company nvarchar(50),
        @company nvarchar(50),
        @sql varchar(max)

--設定變數初始值
SET @oid = ''
SET @ono = ''
SET @s_company= ''
SET @company = ''
SET @sql = ''

--宣告Cursor for 迴圈
DECLARE rma_cursor CURSOR FOR

--SQL指令
SELECT oid,ono,s_company,company FROM dbo.t_RMA_Request

--開始執行 cursor
OPEN rma_cursor

--將第一筆資料放入變數
FETCH NEXT FROM rma_cursor INTO @oid,@ono,@s_company,@company

--檢查是否有讀取到資料; WHILE用來處理迴圈,當為true時則進入迴圈執行
WHILE @@FETCH_STATUS=0
BEGIN --開始

--迴圈內要執行的程序
IF @s_company <> ''
BEGIN
--組合@sql字串變數
SET @sql  = @sql + ';' + 'update t_RMA_Request_Item set s_company=''' + @s_company + ''' where opid=''' + @oid + ''''
--實際執行另一段內部SQL指令
UPDATE t_RMA_Request_Item SET s_company=@s_company WHERE opid=@oid
END
ELSE
BEGIN
--組合@sql字串變數
SET @sql  = @sql + ';' + 'update t_RMA_Request_Item set s_company=''' + @company + ''' where opid=''' + @oid + ''''
--實際執行另一段內部SQL指令
UPDATE t_RMA_Request_Item SET s_company=@company WHERE opid=@oid
END

--將下一筆資料放入變數
FETCH NEXT FROM rma_cursor INTO @oid,@ono,@s_company,@company
END --結束

--關閉Cursor與參數的關聯
CLOSE rma_cursor

--將Cursor物件從記憶體移除
DEALLOCATE rma_cursor

--列印字串組合結果
PRINT @sql

2013年6月11日 星期二

SQL 列出資料庫中所有的Table

SQL 列出資料庫中所有的Table


MsSQL:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (TABLE_TYPE = 'BASE TABLE') AND (TABLE_SCHEMA = 'dbo')

Access:
SELECT * FROM MSYSOBJECTS

Oracle:
SELECT * FROM USER_OBJECTS