sql查詢語句記錄
A. 在sql中怎麼查詢一條記錄
查詢表記錄的語句一般就是select * from 【表名】 where 【條件】;任何資料庫入門的書上都有。
如果查不到那你先查看一下你的這個表是不是屬於你當前登錄資料庫的用戶的(以oracle為例):
select * from user_tables where table_name='A' 如果沒有結果,那即使你用上述select * from A where ID=Y;也查不到的。
B. sql查詢語句大全
SELECT * FROM TWS2F14CCC260D71 WHERE 地類='1999資源清查有林地'
C. 如何用sql語句查詢重復記錄
select
*
from
log
as
a
,(select
message
from
log
group
by
message
having
count(*)>1)
b
where
a.message
=b.message
這么寫會比你的寫法效率高一些,不過暫時想不出可以大幅度改善性能的寫法。
我的語句是聯接,而樓主的查詢是嵌套子查詢。
SQL
SERVER幫助中說的很明白:在一些必須檢查存在性的情況中,使用聯接會產生更好的性能。否則,為確保消除重復值,必須為外部查詢的每個結果都處理嵌套查詢。所以在這些情況下,聯接方式會產生更好的效果。
D. sql查詢語句
SELECT語句的基本形式為
SELECT
[ALL|DISTINCT]<目標列表達式>[,<目標列表達式>···]
FROM
<表名或視圖名>[,<表名或視圖名>···]
[WHERE
<條件表達式>]
語句的功能是根據WHERE子句中的條件表達式,從基本表(或視圖)中找出滿足條件的元組,按SELECT子句中的目標列,選出元組中的目標列形成結果表。
SQL語句對資料庫的操作十分靈活方便,原因在於SELECT語句中的成分豐富多樣,有許多可選形式,尤其是目標列和目標表達式,下面用例子來詳細說明,例子涉及的是"學生-課程"資料庫,其關系模式集如下:
學生信息表Student(SNO,SNAME,SSEX,SBIRTHDAY
CLASS)
教師信息表Teacher(TNO,TNAME,TSEX,TBIRTHDAY,DEPART)
課程信息表Course(CNO,CNAME,TNO)
成績表Grade(SNO,CNO,DEGREE)
例題:查詢Student表所有學生信息。
SELECT
*
FROM
Student;/*選擇操作*/
例題:查詢Student表中所有學生的學號和姓名。
SELECT
SNO,SNAME
FROM
Student;/*投影操作*/
例題:查詢Grade表中成績在60到80之間的所有記錄。
SELECT
*
FROM
Grade
WHERE
degree
BETWEEN
60
AND
80;/*選擇操作*/
例題:查詢Grade表中成績為85、86、88的記錄。
SELECT
*
FROM
Grade
WHERE
degree
IN(85,86,88);/*選擇操作*/
例題:查詢所有學生的SNAME,CNAME和DEGREE。
SELECT
Student.SNAME,Course.CNAME,Grade.DEGREE
FROM
Student,Course,Grade
WHERE
Student.SNO
=
Grade.SNO,Grade.CNO
=
Course.CNO;/*連接操作*/
例題:查詢"張旭"教師任課的學生成績。
SELECT
CNO,SNO,DEGREE
FROM
Grade
WHERE
CNO=(SELECT
Course.CNO
FROM
Course,Teacher
WHERE
Course.TNO=Teacher.TNO
and
Teacher.TNAME="張旭")
此查詢操作為嵌套查詢。子查詢在上一級查詢處理之前求解,即嵌套查詢是從里向外處理的,這樣,外層查詢可以利用內層查詢的結果,在此例中首先執行子查詢:
SELECT
Course.CNO
FROM
Course,Teacher
WHERE
Course.TNO=Teacher.TNO
and
Teacher.TNAME="張旭"
獲得張旭老師講授課程的課程號(801003),然後執行外查詢:
SELECT
CNO,SNO,DEGREE
FROM
Grade
WHERE
CNO="801003"
獲得"張旭"教師任課的學生成績。
E. sql語句查詢某條記錄
首先。我們知道。
如果要查詢 前 2行的話。只需select top 2 欄位名1 from tablename
如果要查詢 前 3行的話。只需select top 3 欄位名1 from tablename
那麼要查詢 第 3行的話。就可以這樣做:
select 欄位名1 from tablename
where (select top 3 欄位名1 from tablename ) not in (select top 2 欄位名1 from tablename)
----
自然的,當我們想查詢第n行的時候,是否只需要把對應的3改為n,把2改為n-1呢?
但是select top n from tablename 語句對n的要求是n必須是確定的數值才可以!
所以如果這樣寫的話那肯定就會報錯:
declare @i int,@j int
set @i=1
set @j=@i-1
select 欄位名1 from tablename
where (select top @i 欄位名1 from tablename ) not in (select top @j 欄位名1 from tablename)
------------------
那麼應該怎樣才不會報錯呢?
這里要用到exec()。。。
declare @i int
declare @j int
set @i=13
set @j=@i-1
exec(' declare @c char(20) '+' select @c=欄位名1 from jw_xsb where 欄位名1 in (select top '+ @i+ ' 欄位名1 from jw_xsb)
and 欄位名1 not in (select top ' +@j+ ' xh from jw_xsb) '+' select @c')
這樣就可以獲得對應第I行的數據的 欄位名1了。
但是@c是定義在裡面的。在外面如果直接用:
update tablename2
set 欄位名2=tablename2.欄位名2
where 欄位名1=@c
這樣就會報錯說沒定義變數@c
所以用之前得先把@c從裡面output出來
所以用下面的好點。。。。
這是給數據排號的程序。。。
declare @d int, @e int, @f int, @g int, @n int, @k int,@m nvarchar(800)
set @d=1
set @e=@d-1
set @k=10001
set @g=(select count(xh) from tablename)
set @n=1
while @n<=@g
begin
set @m=N'select @f=欄位名1 from ( select top ' + cast( @d as varchar)+ ' 欄位名1 from tablenameorder by 欄位名3)
m where m.欄位名1 not in ( select top '+ cast(@e as char)+ ' 欄位名1 from tablename order by 欄位名3) '
---------注意對應的空格哦
EXECUTE SP_EXECUTESQL @m,N'@f int output',@f output
update tablename
set 欄位名2=@k
where( 欄位名1=@f)
set @k=@k+1
set @n=@n+1
set @d=@d+1
end
這種方法在此告一段落。。。。。已經能夠達到我們想要的功能了。。。。。
只是這種方法有個弊端。
就是循環裡面用到SQL語句的話。
會影響到速度。
做了下簡單測試。
循環更新1000條數據的兩個欄位。
普通循環用時1.1秒
上面所說的循環用時3.7秒
註:不用游標是因為游標更慢
F. sql語句,查詢資料庫里除了某一條記錄外的所有記錄。
1、打開sql server 可視化工具。
G. SQL語句 查詢今年、近三年,三年以前的所有記錄 SQL語句怎麼寫
工具/材料:以Management Studio為例。
1、首先在桌面上,點擊「Management Studio」圖標。
H. SQL語句如何取前10條,10-30條記錄
常用幾種資料庫,取前10條記錄的sql語句寫法。
access:
select top (10) * from table1 where 1=1
db2:
select column from table where 1=1 fetch first 10 rows only
mysql:
select * from table1 where 1=1 limit 10
sql server:
讀取前10條:select top (10) * from table1 where 1=1
讀取後10條:select top (10) * from table1 order by id desc
oracle:
select * from table1 where rownum<=10
取10-30條的記錄:
select top 20 * from 表名 where id not in(select top 10 id from 表名)
(8)sql查詢語句記錄擴展閱讀:
使用SQL從表中取記錄。
SQL的主要功能之一是實現資料庫查詢。如果你熟悉Internet 引擎,那麼你已經熟悉查詢了。你使用查詢來取得滿足特定條件的信息。
多數Internet 引擎允許邏輯查詢。在邏輯查詢中,你可以包括特殊的運算符如AND、OR和NOT,你使用這些運算符來選擇特定的記錄。
如果需要擴展查詢的結果,可以使用邏輯操作符OR。例如,如果執行一個搜索,搜索所有的其描述中包含Active Sever Pages OR SQL的站點,收到的列表中將包括所有其描述中同時包含兩個表達式或其中任何一個表達式的站點。
如果想從搜索結果中排除特定的站點,可以使用NOT。例如,查詢「Active Sever Pages 」AND NOT 「SQL」將返回一個列表,列表中的站點包含Active Sever Pages,但不包含SQL。當必須排除特定的記錄時,可以使用NOT。
用SQL執行的查詢與用Internet搜索引擎執行的搜索非常相似。 當執行一個SQL查詢時,通過使用包括邏輯運算符的查詢條件,你可以得到一個記錄列表。此時查詢結果是來自一個或多個表。
I. sql簡單查詢語句
1、首先打開資料庫,建立好表。
J. SQL 查詢記錄數的SQL語句
sql中查詢記錄數用count函數。
1、創建測試表,插入數據:
create table test
(id int)
insert into test values (1)
insert into test values (2)
insert into test values (3)
insert into test values (null)2、查詢記錄數為兩種,一種是count(*),一種是count(欄位值):
測試一:
select count(*) from test結果:
測試二:
select count(id) from test結果:
說明:如果count(欄位名)的欄位中含有空值,則在count中不計數,而count(*)則是查詢全部的行數。