查詢是SQL語言的核心,SQL語言只提供唯一一個用於資料庫查詢的語句,即SELECT語句。用於表達SQL查詢的SELECT語句是功能最強也是最復雜的SQL語句,它提供了很多選項和使用方法。SELECT語句的命令格式如下:
SELECT查詢語句是由七個子句構成,其中SELECT和FROM子句是一個完整SELECT查詢語句必須要有的,其它的子句可以根據具體需要任選。上述的每個子句功能說明如下:
(1)SELECT子句
列出所有要求SELECT語句進行檢索的數據項,這些項可能取自資料庫中關系表的列,也可以是SQL在執行查詢時進行計算的表達式。這里的ALL和DISTINCT選項,表示查詢出的結果中是否容許有內容重復的行出現,預設時是ALL項,表示容許有重復的行出現,而*則表示查詢出所指定關系表中所有的列。
(2)FROM子句
FROM子句列出包含所要查詢的數據關系表。
(3)WHERE子句
WHERE子句告訴SQL只查詢某些關系表中滿足一定要求的行的數據,查詢要求由WHERE子句中的查詢條件確定。
(4)GROUP BY子句
GROUP BY子句指定當前查詢是匯總查詢,即不是對根據每行產生一個查詢結果,而是對相似的行進行分組,然後再對每組產生一個匯總查詢的結果。
(5)HAVING子句
HAVING子句告訴SQL只對由GROUP BY所得到的某些行組的結果進行過濾,選擇出滿足分組條件的分組。
(6)ORDER BY子句
ORDER BY子句確定是否將查詢出的結果按一列或多列中的數據進行排序,預設時是不排序的。
(7)INTO子句
INTO子句確定是否將查詢出的結果存入一張新的關系表中,預設時只將查詢出現的結果顯示在屏幕上。這是非標准SELECT語句中的子句,但目前絕大多數實際應用的SQL資料庫系統的SQL語言提供了這一選項。
下面是一些使用SELECT查詢語句進行數據查詢的示例。
例1:列出銷售額超過6000元的銷售人員的姓名、銷售目標和超過銷售目標的銷售額。
SELECT NAME,QUOTA,(SALES_QUOTA)
FROM SALESREPS
WHERE SALES>6000
例2:查出1999年最後一個季度的訂單情況。
SELECT ORDER_NUM,ORDER_DATE,PRODUCT,AMOUNT
FROM ORDERS
WHERE ORDER_DATE BETWEEN "01-OCT-99" AND "31-DEC-99"
例3:查出名稱是以ABC開頭的產品訂單情況。
SELECT ORDER_NUM,ORDER_DATE,PRODUCT,AMOUNT
FROM ORDERS
WHERE PRODUCT LIKE "ABC%"
例4:列出所有的銷售處,按區域名字母順序排列。
SELECT CITY,REGION
FROM OFFICE
ORDER BY REGION ASC
在這里ASC表示升序,如果表示降序可用DESC。
例5:列出每個銷售人員以及他們工作的城市和區域的情況。
SELECT NAME,CITY,REGION
FROM SALESREPS,OFFICE
WHERE REP_OFFICE=OFFICE
例6:查出有多少銷售員的銷售額超過了其目標額,以及他們的銷售額總和。
SELECT COUNT(NAME),SUM(SALES)
FROM SALESREPS
WHERE SALES>QUOTA
B. SQLServer如何用T-SQL命令查詢一個資料庫中有哪些表
1、查詢SQL中的所有表:
Select TABLE_NAME FROM 資料庫名稱.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 執行之後,就可以看到資料庫中所有屬於自己建的表的名稱
2、查詢SQL中所有表及列:
Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id Where (dbo.sysobjects.xtype = 'u') AND (NOT (dbo.sysobjects.name LIKE 'dtproperties'))
3、在Sql查詢分析器,還有一個簡單的查詢方法:
EXEC sp_MSforeachtable @command1="sp_spaceused '?'" 執行完之後,就可以看到資料庫中所有用戶表的信息
4、查詢總存儲過程數:
select count(*) 總存儲過程數 from sysobjects where xtype='p'
D = 默認值或 DEFAULT 約束
F = FOREIGN KEY 約束
L = 日誌
FN = 標量函數
IF = 內嵌表函數
P = 存儲過程
PK = PRIMARY KEY 約束(類型是 K)
RF = 復制篩選存儲過程
S = 系統表
TF = 表函數
TR = 觸發器
U = 用戶表
UQ = UNIQUE 約束(類型是 K)
V = 視圖
X = 擴展存儲過程
C. 如何查詢sql server資料庫中的數據
工具/材料:Management Studio。
1、首先雙擊「Management Studio」圖標,打開SQL Server。
D. SQLServer如何用T—SQL命令查詢一個資料庫中有哪些表
所有用戶表都存放在資料庫中的系統對象表sysobjects中。
筆者以個人專用資料庫為例:
select *
from sysobjects --系統對象表
where xtype = 'U' --U表示所有用戶表
執行後影響的行數為180(rows),如下圖:
E. 關於資料庫SQL語句的查詢
select
deptclass_three,count(*)
ty_grade_num
from
table
where
deptclass_two='校機關'
and
ty_grade='正廳級'
group
by
deptclass_three
q求出結果是校機關--正廳級中每個存在的deptclass_three所對應的人數,應該一個人一行吧。
F. 資料庫移植到SQL Server 2008R2出現「3145錯誤」怎麼辦
SQL Server 2000資料庫移植到SQL Server 2008R2資料庫伺服器中碰到的」3145錯誤」及解決辦法
辛苦忙碌了一個星期終於安裝配置好了TFS伺服器,給每個團隊成員分配了賬戶和郵箱。不過,老機器中的部分數據需要備份到新機器中,其中在移植一個使用DVBBS架設的論壇的時候,出了點問題,記錄如下,以備查找,也希望能幫助到其他人。
由於論壇已經運行了一段時間,包括公司注冊用戶、相關討論共享等重要資料,需要將其移植到新安裝TFS伺服器的機器上,並對外公開訪問許可權。舊的機器上安裝的是SQL Server 2000,在將論壇資料庫備份之後,在SQL Server 2008R2的資料庫上還原的過程中,出現了如下的3145錯誤:
備份集中的資料庫備份與現有的 'xxx' 資料庫不同。
一直以為SQL Server資料庫是向前後兼容的,怎麼可能存在這樣的問題呢?不過檢查一番之後,確定兩台資料庫伺服器都沒有問題,且論壇的備份在原資料庫伺服器上可以正常還原。沒辦法,改之,把在SQL Server 2008R2上新建的資料庫更改為 SQL Server 2000格式的,再嘗試還原,仍然是同樣的錯誤。在網上找了下,說到的辦法,嘗試了不少,其中有一篇是「備份集中的資料庫備份與現有的資料庫不同 SQL 2005 ERROR:3145 解決辦法 」,提供了如下命令方法:
1.新建一個與現有資料庫重名的資料庫
2.在查詢窗口運行如下語句:
use master
restore database AdventureWorks from disk = 'E:databasebackupAdventureWorks.bak'
with replace, MOVE N'AdventureWorks_Data' TO N'C:Program FilesMicrosoft SQL ServerMSSQL.5MSSQLDataAdventureWorks.mdf', MOVE N'AdventureWorks_Log' TO N'C:Program FilesMicrosoft SQL ServerMSSQL.5MSSQLDataAdventureWorks_log.ldf'
從語句上來看,和在圖形界面的操作是一樣的,但是結果卻是語句運行成功,圖形界面怎麼過不去。
在其他網頁上也看到了類似的方法,也有不少成功解決這個錯誤的,不過,在SQL Server 2008R2伺服器上,還是無法正確備份,也沒有找到有其它人在SQL Server 2008R2上,用其它方法解決還原備份的問題。
不過,將論壇資料庫從舊的SQL Server 2000上分離出來,再附加上SQL Server 2008R2上,成功,數據完整的恢復了!
不清楚為什麼在SQL Server 2005上可以,在SQL Server 2008R2卻不能恢復備份。不過,好在使用分離和附加的方法,成功將論壇遷移。在此記下,做為參考吧。
G. 如何查看SQL資料庫內容
1、首先,打開SQL Server的電腦軟體,進入軟體載入界面等待載入。
H. 如何根據sql資料庫表中數據進行查詢
sql server 查詢一個表的所有信息:查詢語法為:select * from 表名 語法中的」*「代表所有。
實際操作舉例:某數據中有一表叫」user_user「,表中存儲了一些用戶信息;
1、查詢」user_user「表中所有人員信息且所有欄位,sql語句:select * from user_user
2、查詢」user_use「表中所有人員信息且部分欄位。sql語句:select user_show_id,user_name,pinyin,password from user_user
3、條件查詢」user_user「表,以user_name為查詢條件查詢所有信息。sql語句:select * from user_user where user_name='李丹'
4、模糊查詢」user_user「表,以user_name為模糊查詢條件查詢所有信息。sql語句:select * from user_user where user_name like '%張%'
I. SQL Server 資料庫查詢語句的語法有哪些
一、 簡單查詢簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。它們分別說明所查詢列、查詢的表或視圖、以及搜索條件等。例如,下面的語句查詢testtable表中姓名為「張三」的nickname欄位和email欄位。SELECT nickname,emailFROM testtableWHERE name='張三' (一) 選擇列表選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變數(包括局部變數和全局變數)等構成。1、選擇所有列例如,下面語句顯示testtable表中所有列的數據:SELECT *FROM testtable 2、選擇部分列並指定它們的顯示次序查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。例如:SELECT nickname,emailFROM testtable 3、更改列標題在選擇列表中,可重新指定列標題。定義格式為:列標題=列名列名 列標題如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列標題:SELECT 昵稱=nickname,電子郵件=emailFROM testtable 4、刪除重復行SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認為ALL。使用DISTINCT選項時,對於所有重復的數據行在SELECT返回的結果集合中只保留一行。5、限制返回的行數使用TOP n [PERCENT]選項限制返回的數據行數,TOP n說明返回n行,而TOP n PERCENT時,說明n是表示一百分數,指定返回的行數等於總行數的百分之幾。例如:SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable(二)FROM子句FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,它們之間用逗號分隔。在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應使用下面語句格式加以限定:SELECT username,citytable.cityidFROM usertable,citytableWHERE usertable.
J. SQL資料庫 查詢方法
--SQL 查詢所有表名:
SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'
SELECT * FROM INFORMATION_SCHEMA.TABLES
--查詢表的所有欄位名:
SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID(' 表名' )
SELECT * FROM INFORMATION_SCHEMA.TABLES
SELECT * FROM INFORMATION_SCHEMA.VIEWS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
---------以下為其他資料庫查詢表----------
--ORACLE 查看所有表名:
SELECT TABLE_NAME FROM USER_TABLES
--ACCESS 查看所有表名:
SELECT NAME FROM MSYSOBJECTS WHERE TYPE=1 AND FLAGS=0
--MSYSOBJECTS 是系統對象,默認情況是隱藏的。通過工具、選項、視圖、顯示、系統對象可以使之顯示出來。