A. 求簡單的sql分頁語句 最簡單 並解釋清楚
SQL Server
從資料庫表中的第M條記錄開始取N條記錄,利用Top關鍵字:注意如果Select語句中既有top,又有order by,則是從排序好的結果集中選擇:
SELECT *
FROM ( SELECT Top N *
FROM (SELECT Top (M + N - 1) * FROM 表名稱 Order by 主鍵 desc) t1 ) t2
Order by 主鍵 asc
正確:
SELECT TOP 頁大小 *
FROM
Users
WHERE
(ID NOT IN (SELECT TOP (頁大小*(頁數-1)) ID FROM Users ORDER BY ID ASC))
ORDER BY
ID ASC
例如從表Sys_option(主鍵為sys_id)中從10條記錄還是檢索20條記錄,語句如下:
SELECT *
FROM ( SELECT TOP 20 *
FROM (SELECT TOP 29 * FROM Sys_option order by sys_id desc) t1) t2
Order by sys_id asc
My sql資料庫
My sql資料庫最簡單,是利用mysql的LIMIT函數,LIMIT [offset,] rows從資料庫表中M條記錄開始檢索N條記錄的語句為:
SELECT * FROM 表名稱 LIMIT M,N
例如從表Sys_option(主鍵為sys_id)中從10條記錄還是檢索20條記錄,語句如下:
select * from sys_option limit 10,20
B. 怎麼樣記SQL語句最好
簡單
select * from
update xxx set
delete from
insert into values
where在後面做為條件
熟悉以上後 在逐漸學習更深層次的sql 排序 分組 多表連接等等。。。。
關鍵是多學多練 自然就會了。
C. 優化SQL的另一種思維5 如何分析ORACLE執行計劃
《優化SQL的另一種思維》目錄一、性能調整綜述二、有效的應用設計三、SQL語句處理的過程四、ORACLE的優化器
七、整體實例分析客戶端程序優化SQL步驟tkprof程序整體實例解說
【IT專家網獨家】例1:假設LARGE_TABLE是一個較大的表,且username列上沒有索引
,則運行下面的語句:
SQLSELECT*FROMLARGE_TABLEwhereUSERNAME=『TEST』;
QueryPlan
-----------------------------------------
SELECTSTATEMENTOptimizer=CHOOSE(Cost=1234Card=1Bytes=14)
TABLEACCESSFULLLARGE_TABLE[:Q65001][ANALYZED]
在這個例子中,TABLE ACCESS FULL LARGE_TABLE是第一個操作,意思是在LARGE_TABLE表上做全表掃描。當這個操作完成之後,產生的row source中的數據被送往下一步驟進行處理,在此例中,SELECT STATEMENT操作是這個查詢語句的最後一步。
Optimizer=CHOOSE 指明這個查詢的optimizer_mode,即optimizer_mode初始化參數指定的值,它並不是指語句執行時真的使用了該優化器
。決定該語句使用何種優化器的唯一方法是看後面的cost部分。例如,如果給出的是下面的形式,則表明使用的是CBO優化器,此處的cost表示優化器認為該執行計劃的代價:
SELECT STATEMENT Optimizer=CHOOSE (Cost=1234 Card=1 Bytes=14)
然而假如執行計劃中給出的是類似下面的信息,則表明是使用RBO優化器,因為cost部分的值為空,或者壓根就沒有cost部分。
SELECT STATEMENT Optimizer=CHOOSE Cost=
SELECT STATEMENT Optimizer=CHOOSE
cost屬性的值是一個在oracle內部用來比較各個執行計劃所耗費的代價的值,從而使優化器可以選擇最好的執行計劃。不同語句的cost值不具有可比性,只能對同一個語句的不同執行計劃的cost值進行比較。
[:Q65001] 表明該部分查詢是以並行方式運行的。裡面的數據表示這個操作是由並行查詢的一個slave進程處理的,以便該操作可以區別於串列執行的操作。
[ANALYZED] 表明操作中引用的對象被分析過了,在數據字典中有該對象的統計信息可以供CBO使用。
例2:假定A、B、C都是不是小表,且在A表上一個組合索引:A(a.col1,a.col2) ,注意a.col1列為索引的引導列。
考慮下面的查詢:
D. 一個SQL語句,邏輯很簡單,但不知怎麼實現才高效。
按你的需求,
在sql層面,inner join的效率是最高的了
如果用子查詢,比如:select rcid, (select ry from 表2 b where b.ry_id = a.ry_id1) from 表1 a
這樣的效率還更低
關鍵是表2的ry_id要加索引
E. 關於寫SQL語句的技巧
恩,這個怎麼說呢
sql語句總結一下,無非就幾種,關聯查詢,子查詢,各種函數的使用
根據要做的需求,先分析一下,需要用到哪些查詢
比如要用到關聯查詢
就先把要用到的表列出來,比如a,b,c三個表
就先寫出來
select from a,b,c
前邊查詢的內容可以先放著不用寫
然後找三個表關聯關系,當然也要看是自然連接還是左連接什麼的,這里就給你舉例正常連接吧
select from a,b,c where a.id=b.aid and b.id=c.bid
關聯關系寫好了,就可以在寫查詢的內容了
select a.name,b.name,sum(c.value) from a,b,c where a.id=b.aid and b.id=c.bid
然後,你再看,因為有聚合查詢,後邊要group by
select a.name,b.name,sum(c.value) from a,b,c where a.id=b.aid and b.id=c.bid group by a.name,b.name
其他的,再有什麼排序啊,等等啊,就好寫了,這里就不往下寫了
子查詢更簡單寫,主要就是要判斷好,要先寫子查詢,然後往外來套,比如
select * from b where id in (select id from a)
這個,你就要先寫括弧里的那個,然後寫外邊的
至於函數的使用,這個沒什麼經驗,就是可能有時會出現類型轉換等等的問題,你就要牢記每個函數的作用,不懂再問吧
F. T-SQL基礎教程:集合理論
集合理論是由數學家Georg
Cantor創建的,這是一個基於關系模型的數學分支。Cantor的集定義如下:
集合,我們的意思是:任意集合體M是我們感知或想到的,能夠確定的、互異對象m(稱之為M的元素)的整體。
──Joseph
W.
Dauben和Georg
Cantor(普林斯頓大學出版社,1990年)
定義中的每個字都有著深刻和重要意義。集合定義和集合從屬關系是無需證明的公理,宇宙中的每個元素要麼是集合成員,要麼不是集合成員。
讓我們從Cantor定義中的每個詞開始。一個“集合”應將其視為單個實體,你的焦點應該放在對象的集合上,而不是組成集合的單個對象上。然後,當你對資料庫中的表(如雇員表)編寫T-SQL查詢時,你應該將雇員的集合看作是一個整體,而不是單個的雇員。這聽起來可能並不重要並且很簡單,但顯然很多程序員很難採用這種思維方式。
“互異”這個詞的含義是指集合中的每個元素必須是唯一的。跳躍到資料庫中的表,你可以通過定義鍵約束來強製表中行的唯一性。沒有鍵的話,你就不能唯一地標識行,因此表也就不能取得“集合”資格。相反,該表將是一個多重集合或是一個無序的單位組。
“我們感知或想到的”這句話意味著集合的定義是主觀的。思考一下教室:一個人可以被認為是“人”的集合,也有可能被認為是“學生”或“教師”的集合。因此,在定義集合方面你具有很大的自由度。當你為資料庫設計數據模型時,設計過程應仔細考慮應用程序的主觀需求,從而為相關實體確定恰當的定義。
至於“對象”,集合的定義不是限制為像汽車或雇員這樣的物理對象,而是相關的抽象對象,如質數或線條。
Cantor的集合定義省略掉的內容很可能像所包含的內容一樣重要。請注意,定義中沒有提到集合元素間的任何順序,集合元素的列出順序並不重要。列出集合元素的正式標記符號是使用大括弧:{a、b、c}。因為與順序無關,你可以使用{b,
a,
c}或{b,
c,
a}表示同一集合。跳躍到屬性(SQL中稱之為列)集合,它們組成了關系(SQL中稱之為表)的表頭,元素應該是按名稱標識──而不是按順序位置標識。
同樣,思考一下元組(SQL中稱之為行)的設置,它們構成了關系的主體,元素由其鍵值進行標識,而不是按位置標識。許多程序員很難適應這種觀念,對於查詢表而言,行之間沒有順序。換句話說,對表的查詢可以按任意順序返回表中的行,除非你基於特定展現目的,明確要求數據以特定方式的進行排序。
G. sql難不難
SQL不是很難,也不需要其他的編程語言,sql它只是對資料庫操作的命令而已。說它不難呢,是因為在一般的編程中,用到的sql命令都是很基礎的增刪改查。但是呢,如果你想真正的深入了解資料庫,那麼需要你掌握的sql命令就很多了,那個時候也可以算難了,因為相對的sql命令也有很多限制,而且那些限制比較隱晦。總之,如果你只是為了編程來學習sql,那麼就很簡單,如果你是為了了解資料庫來學習sql,那沒就有點難度了……這個要看你怎麼來使用它了。
H. sql簡單的介紹一下
SQL(Structured Query Language)結構化查詢語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。同時也是資料庫腳本文件的擴展名。SQL是高級的非過程化編程語言,是溝通資料庫伺服器和客戶端的重要工具,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以,具有完全不同底層結構的不同資料庫系統,可以使用相同的SQL語言作為數據輸入與管理的 SQL介面。它以記錄集合作為操作對象,所有SQL語句接受集合作為輸入,返回集合作為輸出,這種集合特性允許一條SQL語句的輸出作為另一條SQL語句的輸入,所以SQL語句可以嵌套,這使它具有極大的靈活性和強大的功能,在多數情況下,在其他語言中需要一大段程序實現的功能只需要一個SQL語句就可以達到目的,這也意味著用SQL語言可以寫出非常復雜的語句。