第一篇:SQL Server查詢語句學習心得
SQL Server查詢語句學習心得
李臻敏
摘要:數據庫技術已經廣泛地滲透到各個領域,數據庫應用技術也已經成為計算機必修課程,SQL Server2005是Microsoft 公司推出的數據庫服務產品,是一個企業級的網絡關系型數據庫管理系統,越來越得到廣大用戶的青睞。本文以SQL Server2005教材為基礎,從中選取數據庫查詢為理論要材,從數據庫的應用方法來針對SQL Server查詢來進行簡單的論述學習心得。關鍵詞:選擇列表;FROM子句;WHERE子句;查詢結果排序
SQL Server查詢語句的語法格式: SELECT [列名] FROM [表名] [WHERE <查詢條件表達式>] [ORDER BY <排序的列名>[ASC或DESC]] 其中:[]代表可選的;<>代表必須的。如果有多個列名,需要用逗號隔開。ORDER BY是用于排序的,可以將查詢出的數據按照ORDER BY 所指定的字段進行排序,排序時還可以通過ASC或DESC指定升序或降序排列。
簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。它們分別說明所查詢列、查詢的表或視圖、以及搜索條件等。
例如,下面的語句查詢work表中姓名為“許劍鋒”的stname字段和score字段。
SELECT stname,score
FROM work
WHERE name='許劍鋒'
(一)選擇列表
選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變量(包括局部變量和全局變量)等構成。
1、選擇所有列
例如,下面語句顯示work表中所有列的數據:
SELECT *
FROM work
2、選擇部分列并指定它們的顯示次序
查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。
例如:
SELECT stname,score
FROM work
3、更改列標題
在選擇列表中,可重新指定列標題。定義格式為:
title=列名
列名 title
如果指定的title不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列標題:
SELECT 昵稱=stname,分數=score
FROM work
4、使用DISTINCT關鍵字屏蔽重復數據
數據表中難免會出現重復數據,DISTINCT的作用是屏蔽結果集中的重復數據行。
SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認為ALL。使用DISTINCT選項時,對于所有重復的數據行在SELECT返回的結果集合中只保留一行。
5、使用TOP關鍵字查詢表中限定行數
使用TOP n [PERCENT]選項限制返回的數據行數,TOP n說明返回n行,而TOP n PERCENT時,說明n是表示一個百分數,指定返回的行數等于總行數的百分之幾。
例如:
SELECT TOP 5 *
FROM work
SELECT TOP 10 PERCENT *
FROM work
(二)FROM子句
FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。
在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。例如在student和teaching 表中同時存在name列,在查詢兩個表中的name時應使用下面語句格式加以限定:
SELECT stname,teaching.name
FROM student,teaching
WHERE student.name=teaching.name
在FROM子句中可用以下兩種格式為表或視圖指定別名:
表名 as 別名
表名 別名
例如上面語句可用表的別名格式表示為:
SELECT stname,b.name
FROM student a,teaching b
WHERE a.name=b.name
(三)使用WHERE子句過濾部分行數據
在數據庫中查詢數據時,有時用戶只希望可以得到一部分數據而不是全部,如果還使用SELECT…FROM結構,就會因為大量不需要的數據而使應用實現起來很麻煩,這時就需要在SELECT語句中加入條件語句,即WHERE子句。
例如下面語句查詢體重大于60的數據:
SELECT *
FROM student
WHERE weight >60
WHERE子句可包括各種條件運算符:
比較運算符(大小比較):>、>=、=、<、<=、<>、!>、!<
范圍運算符(表達式值是否在指定的范圍):BETWEEN?AND?
NOT BETWEEN?AND?
列表運算符(判斷表達式是否為列表中的指定項):IN(項1,項2??)
NOT IN(項1,項2??)
模式匹配符(判斷值是否與指定的字符通配格式相符):LIKE、NOT LIKE
空值判斷符(判斷表達式是否為空):IS NULL、NOT IS NULL
邏輯運算符(用于多條件的邏輯連接):NOT、AND、OR
1、范圍運算符例:age BETWEEN 10 AND 30相當于age>=10 AND age<=30
2、列表運算符例:city IN('Beijin ','Shanghai ')
3、模式匹配符例:常用于模糊查找,它判斷列值是否與指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等類型查詢。
可使用以下通配字符:
百分號%:可匹配任意類型和長度的字符,如果是中文,請使用兩個百分號即%%。
下劃線_:匹配單個任意字符,它常用來限制表達式的字符長度。
方括號[]:指定一個字符、字符串或范圍,要求所匹配對象為它們中的任一個。[^]:其取值也[] 相同,但它要求所匹配對象為指定字符以外的任一個字符。
例如:
限制以Publishinshanghai 結尾,使用LIKE '%Publishinshanghai '
限制以G開頭:LIKE '[G]%'
限制以G開頭外:LIKE '[^G]%'
4、邏輯運算符:優先級為NOT、AND、OR
(四)查詢結果排序
使用SELECT語句進行數據查詢后,為了方便閱讀,可以使用ORDER BY 子句對生成的結果集進行排序。在SELECT語法中ORDER BY后面的排序列名可以是字段名,也可以是表達式,有多個排序列時,需要用逗號隔開。拍序列名后面還可以指定排序方式,ASC表示升序,DESC表示降序,如果不指定默認為升序。
ORDER BY子句的語法格式為:
ORDER BY {column_name [ASC|DESC]} [,?n]
例如:
SELECT *
FROM student
ORDER BY score desc,address ASC 以上是一些關于數據庫查詢的介紹,用戶可以根據需要應用這些查詢技巧從數據庫中檢索數據,并將查詢結果以表格的形式輸出。
在信息技術廣泛應用的今天,數據庫技術作為數據管理的核心技術在社會各個領域發揮著強大的功能,SQL Server 2008是由Microsoft公司發布的最新關系數據庫管理系統。然而要用好數據庫的管理功能,就必須從簡單的數據庫查詢開始,數據庫查詢是數據庫應用的根基,只有基土之堅固才有高大之建筑。所以,數據庫查詢在數據庫應用中有舉足輕重的地位。
作者單位:福建省安溪陳利職業中專學校 作者姓名:李臻敏
通訊地址:福建省安溪縣陳利職業中專學校 郵編:362403 電子郵箱:rose_lzm@163.com 聯系電話:***
第二篇:sqlserver分頁語句
QL Server 2000/2005 分頁SQL — 單條SQL語句
有關分頁 SQL 的資料很多,有的使用存儲過程,有的使用游標。本人不喜歡使用游標,我覺得它耗資、效率低;使用存儲過程是個不錯的選擇,因為存儲過程是經過預編譯的,執行效率高,也更靈活。先看看單條 SQL 語句的分頁 SQL 吧。
方法1:
適用于 SQL Server 2000/2005
SELECT TOP 頁大小 *
FROM table1
WHERE id NOT IN
(SELECT TOP 頁大小*(頁數-1)id FROM table1 ORDER BY id)
ORDER BY id
方法2:
適用于 SQL Server 2000/2005
SELECT TOP 頁大小 *
FROM table1
WHERE id >
(SELECT ISNULL(MAX(id),0)
FROM
(SELECT TOP 頁大小*(頁數-1)id FROM table1 ORDER BY id)A)
ORDER BY id
方法3:
適用于 SQL Server 2005
SELECT TOP 頁大小 *
FROM
(SELECT ROW_NUMBER()OVER(ORDER BY id)AS RowNumber,* FROM table1)A
WHERE RowNumber > 頁大小*(頁數-1)
說明,頁大小:每頁的行數;頁數:第幾頁。使用時,請把“頁大小”和“頁大小*(頁數-1)”替換成數字。
第三篇:SQL查詢語句
SQL查詢語句
第一次:查詢(顯示)、條件、排序、空記錄
第二次:通配符、生成表、文件(記事本)、數組、臨時表,數學函數、分組、嵌套查詢
第三次:插入記錄、刪除記錄、更新記錄 第四次:超連接、新建(打開)數據庫、表的建立、表的刪除、第五次 表結構的修改,添加記錄 顯示同張芳同一天出生的學生的信息 格式:
1、查詢(顯示)記錄
顯示所有男學生的學號,姓名,性別 區分:字段、條件、表名
Select 字段名列表(*)from 表名; where 條件表達式;
into table(dbf)文件名;
into cursor 臨時表名;
into array 數組名;
to file 文件名;
order by 字段名列表(asc desc);
group by 字段名 having 條件;
顯示所有大于平均分的學生的學號、姓名 顯示同E4掙同樣工資的職工信息
Select * from 職工 where 工資=(select 工資 from 職工 where 職工號=”E4”)職工(倉庫號C(10),職工號 C(10),工資 N(10,2))
顯示所有工資大于1500的員工的倉庫號、職工號及所在的城市
2、插入記錄
Insert into 表名(字段名列表)values(記錄值)
3、刪除記錄
Delete from 表名 where 條件
4、更新記錄
Update 表名 set 字段名=記錄值; Where 條件
5、表的刪除
drop table 表名
6、表的建立
create table 表名(字段名 數據類型(寬度))
7、表結構的修改select * from 職工where 職工號!=“E4” AND 工資=(select 工資 from 職工 where 職工號=“E4”)
alter table 表名
1)增加字段
alter table student add 身份證號 c(10)
2)刪除字段
alter table student drop colum 身份證號
3)修改字段名
alter table student rename colum 出生日期 to 出生年月
4)增加字段有效性規則
alter table student alter 成績 set check 成績>=0 and 成績<=100;
error “成績輸入錯誤,成績應該在0-100之間”
5)刪除字段有效性規則
alter table student alter 成績 drop check 注意:
以上題目中用到的 SQL語句粘貼到計事本文件XY.TXT中(每行一條語句)。對兩個表操作的方法:
1)同時打開兩個表
select 倉庫.倉庫號,城市,職工號,工資 from 倉庫,職工;
where 職工.倉庫號=倉庫.倉庫號 and 工資=1250
2)超連接(內連接、左連接、右連接、全連
接)
內連接:只顯示符合條件的記錄
左連接:顯示符合條件的記錄及第一個表中不符合條件的記錄
右連接:顯示符合條件的記錄及第二個表中不符合條件的記錄
全連接:顯示符合條件的記錄及第一、二個表中不符合條件的記錄
成績表(score)
學號姓名課程名成績 2001張三計算機10 2003張四英語20 2001張三語言30 2005張三數據40 2003張四計算機50
Select sum(成績)from score group by 學號
Select sum(成績)from score group by 課程名
select 字段名列表(*)from 表名;where 條件;
order by 字段名列表 asc|desc;
into table(dbf)表名;
into array 數組名;
to file 文件名;
into cursor 臨時表名
題目練習
實現以下功能:在考生文件夾下,打開“陶的數據庫”的數據庫,并利用SQL語句在該數據庫中新建一個表:gongzi(職工號 c(4),實發工資 n(7,0)),將zhigong表中基本工資大于1330(含1330)的記錄存儲在gongzi表中,其中實發工資為:基本工資+加班費(白天20,晚上30),最后將所有的SQL語句保存到考生目錄下的sqlanswer.txt文件中(自行建立,一行一條語句)
open database 陶的數據庫
create table gongzi(職工號 c(4),基本工資 n(7,2))
select 職工號,基本工資+白班*20+晚班*30 from zhigong;where 基本工資>1350 into array xy
insert into gongzi from array xy
第四篇:Sql語句查詢
sql語句多表連接查詢
在程序開發過程中,不僅可以對單一數據表進行查詢,還可以進行多表查詢,用戶通過多表查詢從多個表中提取出需要的數據。
多表查詢可以分為內連接查詢、外連接查詢以及聯合查詢。
1.內連接查詢
連接查詢是指通過各個表之間共同列的關聯性查詢數據。連接查詢分為內連接查詢和外連接查詢。內連接是將兩個相互交叉的數據集合中重疊部分的數據行連接起來,返回表示兩個數據集合之間匹配連接關系的數據行。
可以在FORM子句中使用INNER JOIN?ON?建立內連接,也可以在WHERE子句中指定連接條件建立內連接,例如:
select a.UserName,b.BookName,b.Datetm from UserInfo as a inner join SellSheet as b on a.UserID= b.UserID
也可以用下面的語句實現。
select a.UserName,b.BookName,b.Datetm from UserInfo as a,SellSheet as b where a.UserID=b.UserID
2.外連接查詢
外連接是對內連接的擴充,除了將兩個數據集合中重疊部分以內的數據行連接起來之外,還可以根據要求返回左側或右側數據集合中非匹配的數據,即左外連接(LEFT OUTER JOIN)和右外連接(RIGHT OUTER JOIN)。
l左外連接LEFT OUTER JOIN
左外連接LEFT OUTER JOIN邏輯運算符除了返回兩個數據表中滿足連接條件的行,它還返回任何在后一個數據表中沒有匹配行的前一個數據表中的行。非匹配行的部分字段列作為空值返回。
l右外連接RIGHT OUTER JOIN
右外連接RIGHT OUTER JOIN是左外連接的反向連接。它除了返回兩個數據表中滿足連接條件的行,還返回任何在前一個數據表中沒有匹配行的后一個數據表中的行。非匹配行的部分字段列作為空值返回。
3.使用UNION進行聯合查詢
使用UNION運算符可以進行聯合查詢。UNION運算符連接多個SELECT語句,將兩個或更多查詢的結果組合為單個結果集,該結果集包含聯合查詢中所有查詢的全部行。使用UNION運算符遵循的規則如下:
(1)在使用UNION運算符組合的語句中,所有選擇列表的表達式數目必須相同(列名、算術表達式、聚集函數等)。
(2)在使用UNION組合的結果集中的相應列必須具有相同數據類型,或者兩種數據類型之間必須存在可能的隱性數據轉換,或者提供了顯式轉換。例如,在datetime數據類型的列和binary數據類型的列之間不能使用UNION運算符,除非提供了顯式轉換,而在money數據類型的列和int數據類型的列之間可以使用UNION運算符,因為它們可以進行隱性轉換。
(3)結果集中列的名字或者別名是由第一個SELECT語句的選擇列表決定的。
注意:對數據表進行聯合查詢時,結果集中行的最大數量是各表行數之“和”,而對數據表進行連接查詢時,結果集中行的最大數量是各表行數之“積”。
第五篇:SqlServer教學大綱
《SQL Server2005案例教程》教學大綱
一、教學目的:
1.通過本門課程的學習,使學員掌握數據庫的概念,安裝以及數據庫在程序設計中的重要地位和作用 2.理解關系型數據庫和表,約束,索引的創建
3.了解SQL語言基礎與使用SQL語言實現數據的查詢與更新 4.熟悉sqlserver的應用環境及掌握常用的管理方法 5.掌握視圖,存儲過程,觸發器等數據庫對象的創建與使用 6.掌握數據庫的安全管理 7.掌握數據的備份與恢復 8.掌握數據的導入導出步驟
9.理解SqlServer下事務的概念,并能在實際應用中合理的使用事務控制命令
二、教學重點:
1.數據庫基本概念
2.數據庫表,約束,索引的創建 3.使用SQL語言實現數據的查詢與更新 4.Select,update,delete,insert 5.index 6.constraint 7.view視圖
三、教學難點:
1.SqlServer體系結構
2.SqlServer下事務的概念,并能在實際應用中合理的使用事務控制 3.存儲過程 4.觸發器
四、教學內容及學時分配
第1章、數據庫概述 6課時
第2章、SQL Server安裝及管理 4課時 第3章、數據庫及表的設計 4課時 第4章、T-ransact SQL語言基礎 6課時 第5章、T-ransact SQL數據查詢與更新 14課時 第6章、視圖 6課時 第7章、存儲過程 復習
5課時
4課時
第8章、觸發器
6課時 第9章、SQL安全 3第10章、數據備份與恢復 第11章、數據轉換
復習4
課時 4課時 2課時
課時 68課時