Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tạo truy vấn trong SQL Server 2017

Cách tạo truy vấn trong cơ sở dữ liệu SQL Server 2017.

Một trong những truy vấn cơ bản nhất mà bạn có thể thực hiện như sau:

SELECT * 
FROM TableName;

Truy vấn này trả về tất cả dữ liệu từ một bảng nhất định. TableName là tên của bảng bạn muốn truy vấn. Tất cả những gì bạn cần làm là thay thế nó bằng tên của một bảng trong cơ sở dữ liệu của bạn, chạy truy vấn và nội dung của bảng đó sẽ được hiển thị.

Cơ sở dữ liệu của chúng tôi bao gồm ba bảng. Mỗi chứa dữ liệu. Hãy xem những gì trong mỗi bảng.

Artists bảng:

SELECT * 
FROM Artists;
Kết quả
ArtistId  ArtistName              ActiveFrom              
--------  ----------------------  ------------------------
1         Iron Maiden             1975-12-25T00:00:00.000Z
2         AC/DC                   1973-01-11T00:00:00.000Z
3         Allan Holdsworth        1969-01-01T00:00:00.000Z
4         Buddy Rich              1919-01-01T00:00:00.000Z
5         Devin Townsend          1993-01-01T00:00:00.000Z
6         Jim Reeves              1948-01-01T00:00:00.000Z
7         Tom Jones               1963-01-01T00:00:00.000Z
8         Maroon 5                1994-01-01T00:00:00.000Z
9         The Script              2001-01-01T00:00:00.000Z
10        Lit                     1988-06-26T00:00:00.000Z
11        Black Sabbath           1968-01-01T00:00:00.000Z
12        Michael Learns to Rock  1988-03-15T00:00:00.000Z
13        Carabao                 1981-01-01T00:00:00.000Z
14        Karnivool               1997-01-01T00:00:00.000Z
15        Birds of Tokyo          2004-01-01T00:00:00.000Z
16        Bodyjar                 1990-01-01T00:00:00.000Z

16 row(s) returned

Executed in 1 ms

Albums bảng:

SELECT * 
FROM Albums;
Kết quả
AlbumId  AlbumName                 ReleaseDate               ArtistId  GenreId
-------  ------------------------  ------------------------  --------  -------
1        Powerslave                1984-09-03T00:00:00.000Z  1         1      
2        Powerage                  1978-05-05T00:00:00.000Z  2         1      
3        Singing Down the Lane     1956-01-01T00:00:00.000Z  6         3      
4        Ziltoid the Omniscient    2007-05-21T00:00:00.000Z  5         1      
5        Casualties of Cool        2014-05-14T00:00:00.000Z  5         1      
6        Epicloud                  2012-09-18T00:00:00.000Z  5         1      
31       Somewhere in Time         1986-09-29T00:00:00.000Z  1         1      
32       Piece of Mind             1983-05-16T00:00:00.000Z  1         1      
33       Killers                   1981-02-02T00:00:00.000Z  1         1      
34       No Prayer for the Dying   1990-10-01T00:00:00.000Z  1         1      
35       No Sound Without Silence  2014-09-12T00:00:00.000Z  9         4      
36       Big Swing Face            1967-06-01T00:00:00.000Z  4         2      
37       Blue Night                2000-11-01T00:00:00.000Z  12        4      
38       Eternity                  2008-10-27T00:00:00.000Z  12        4      
39       Scandinavia               2012-06-11T00:00:00.000Z  12        4      
40       Long Lost Suitcase        2015-10-09T00:00:00.000Z  7         4      
41       Praise and Blame          2010-06-26T00:00:00.000Z  7         4      
42       Along Came Jones          1965-05-21T00:00:00.000Z  7         4      
43       All Night Wrong           2002-05-05T00:00:00.000Z  3         2      
44       The Sixteen Men of Tain   2000-03-20T00:00:00.000Z  3         2      

20 row(s) returned

Executed in 1 ms

Genres bảng:

SELECT * 
FROM Genres;
Kết quả
GenreId  Genre  
-------  -------
1        Rock   
2        Jazz   
3        Country
4        Pop    
5        Blues  
6        Hip Hop
7        Rap    
8        Punk   

8 row(s) returned

Executed in 1 ms

Trong cả ba trường hợp, truy vấn của chúng tôi đều giống nhau. Điều duy nhất đã thay đổi là tên bảng.

Đây là một trong những truy vấn cơ bản nhất mà chúng tôi có thể thực hiện. Nó chỉ trả về tất cả các hàng và tất cả các cột từ một bảng.

Chúng tôi có thể sửa đổi truy vấn này theo một số cách để chỉ trả về dữ liệu mà chúng tôi muốn xem. Dưới đây là một số cách phổ biến mà chúng tôi có thể sửa đổi truy vấn để trả về chính xác kết quả mà chúng tôi cần.

Chỉ định các cột

Thay vì sử dụng dấu hoa thị (* ) để trả về tất cả các cột, bạn chỉ có thể nêu rõ ràng những cột bạn muốn được trả về.

SELECT AlbumId, AlbumName, ArtistId 
FROM Albums;
Kết quả
AlbumId  AlbumName                 ArtistId
-------  ------------------------  --------
1        Powerslave                1       
2        Powerage                  2       
3        Singing Down the Lane     6       
4        Ziltoid the Omniscient    5       
5        Casualties of Cool        5       
6        Epicloud                  5       
31       Somewhere in Time         1       
32       Piece of Mind             1       
33       Killers                   1       
34       No Prayer for the Dying   1       
35       No Sound Without Silence  9       
36       Big Swing Face            4       
37       Blue Night                12      
38       Eternity                  12      
39       Scandinavia               12      
40       Long Lost Suitcase        7       
41       Praise and Blame          7       
42       Along Came Jones          7       
43       All Night Wrong           3       
44       The Sixteen Men of Tain   3       

20 row(s) returned

Executed in 1 ms

Thu hẹp tiêu chí

Bạn có thể thêm WHERE để chỉ trả lại những hàng phù hợp với tiêu chí do bạn cung cấp.

SELECT AlbumId, AlbumName, ArtistId 
FROM Albums 
WHERE ArtistId = 1;
Kết quả
AlbumId  AlbumName                ArtistId
-------  -----------------------  --------
1        Powerslave               1       
31       Somewhere in Time        1       
32       Piece of Mind            1       
33       Killers                  1       
34       No Prayer for the Dying  1       

5 row(s) returned

Executed in 1 ms

Tham gia một bàn khác

Bạn có thể sử dụng một phép nối để trả về kết quả từ nhiều bảng chia sẻ dữ liệu. Đây là những gì các mối quan hệ là về tất cả. Cụ thể, một phép nối thường được sử dụng khi khóa ngoại của một bảng khớp với khóa chính của bảng khác.

SELECT AlbumId, AlbumName, ArtistName 
FROM Albums 
	INNER JOIN Artists 
	ON Albums.ArtistId = Artists.ArtistId 
WHERE ReleaseDate < '1980-01-01';
Kết quả
AlbumId  AlbumName              ArtistName
-------  ---------------------  ----------
2        Powerage               AC/DC     
3        Singing Down the Lane  Jim Reeves
36       Big Swing Face         Buddy Rich
42       Along Came Jones       Tom Jones 

4 row(s) returned

Executed in 1 ms

Bạn sẽ thấy rằng WHERE mệnh đề vẫn hoạt động trên các cột không thực sự được bao gồm trong đầu ra. Trong trường hợp này, nó đã được áp dụng cho ReleaseDate , ngay cả khi chúng tôi không đưa cột đó vào kết quả.

Bạn cũng sẽ thấy rằng chúng tôi đủ điều kiện cho hai ArtistId các cột có tên của bảng (tức là Albums.ArtistIdArtists.ArtistId ). Chúng ta phải làm điều này để SQL Server biết bảng nào chúng ta đang đề cập đến khi tham chiếu cột đó. Một số nhà phát triển cơ sở dữ liệu coi đây là phương pháp hay để đủ điều kiện cho tất cả các tên cột trong tất cả các truy vấn SQL, tuy nhiên, đây là trường hợp sở thích cá nhân hoặc quy ước mã hóa dành riêng cho dự án.

Thêm bí danh

Bạn cũng có thể thêm bí danh bảng vào các truy vấn của mình để làm cho mã ngắn gọn hơn. Ví dụ:bạn có thể tặng Artists bí danh của arAlbums bí danh của al (hoặc bất kỳ chuỗi nào khác mà bạn thích).

Bạn có thể sử dụng các bí danh này để xác định tên cột. Đây là truy vấn tương tự như trên, nhưng với tất cả các tên cột đủ điều kiện với bí danh bảng:

SELECT al.AlbumId, al.AlbumName, ar.ArtistName 
FROM Albums al
	INNER JOIN Artists ar
	ON al.ArtistId = ar.ArtistId 
WHERE al.ReleaseDate < '1980-01-01';
Kết quả
AlbumId  AlbumName              ArtistName
-------  ---------------------  ----------
2        Powerage               AC/DC     
3        Singing Down the Lane  Jim Reeves
36       Big Swing Face         Buddy Rich
42       Along Came Jones       Tom Jones 

4 row(s) returned

Executed in 1 ms

Bạn cũng có thể gán bí danh cho các cột (không chỉ bảng). Chúng tôi làm điều này trong ví dụ tiếp theo.

Định dạng ngày

Có nhiều cách khác nhau để xử lý ngày và giờ trong cơ sở dữ liệu. Trong SQL Server có các kiểu dữ liệu khác nhau để lưu trữ ngày tháng (chẳng hạn như date , time , datetime , smalldatetime , v.v.) và có nhiều hàm khác nhau để xử lý ngày tháng (ví dụ:SYSDATETIME() , GETDATE( ) , CURRENT_TIMESTAMP , v.v.).

Trong ví dụ này, chúng tôi sẽ sử dụng YEAR() hàm để chỉ trả về phần năm của ngày.

SELECT AlbumName, YEAR(ReleaseDate) AS Year 
FROM Albums;
Kết quả
AlbumName                 Year
------------------------  ----
Powerslave                1984
Powerage                  1978
Singing Down the Lane     1956
Ziltoid the Omniscient    2007
Casualties of Cool        2014
Epicloud                  2012
Somewhere in Time         1986
Piece of Mind             1983
Killers                   1981
No Prayer for the Dying   1990
No Sound Without Silence  2014
Big Swing Face            1967
Blue Night                2000
Eternity                  2008
Scandinavia               2012
Long Lost Suitcase        2015
Praise and Blame          2010
Along Came Jones          1965
All Night Wrong           2002
The Sixteen Men of Tain   2000

20 row(s) returned

Executed in 1 ms

Trong ví dụ này, chúng tôi cũng chỉ định một bí danh cho một cột. Cụ thể hơn, chúng tôi chỉ định một bí danh cho kết quả của YEAR() , trong đó chúng tôi chuyển ReleaseDate cột như một đối số.

Một điểm khác về ví dụ này là chúng tôi đã sử dụng AS từ khóa khi gán bí danh. Đây là tùy chọn và chúng tôi cũng có thể đã sử dụng AS từ khóa khi gán bí danh cho bảng trong ví dụ trước.

Giới thiệu về SQL và Transact-SQL

Các truy vấn trên (và các truy vấn khác trong hướng dẫn này) được viết bằng Ngôn ngữ truy vấn có cấu trúc (SQL). Cụ thể hơn, SQL Server sử dụng Transact-SQL (đôi khi được rút ngắn thành T-SQL ), là phần mở rộng độc quyền của Microsoft và Sybase cho SQL.

SQL là ngôn ngữ truy vấn tiêu chuẩn được sử dụng trên hầu hết các hệ quản trị cơ sở dữ liệu quan hệ. Đó là tiêu chuẩn của Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) và của Tổ chức Tiêu chuẩn hóa Quốc tế (ISO).

Trong khi hầu hết các truy vấn cơ bản sẽ hoạt động trên hầu hết các cơ sở dữ liệu quan hệ, một số truy vấn có thể cần được sửa đổi một chút khi chuyển giữa hệ thống cơ sở dữ liệu này sang hệ thống cơ sở dữ liệu khác. Ví dụ:bạn có thể có một tập lệnh chạy trong SQL Server. Bạn cũng có thể sử dụng tập lệnh đó trong MySQL, tuy nhiên, bạn có thể thấy rằng mình cần phải thay đổi một số thứ trước khi nó chạy thành công.

Các tập lệnh SQL trong hướng dẫn này chỉ trình bày một số mẫu nhỏ về những thứ bạn có thể làm với SQL. Để biết thêm thông tin, hãy xem Hướng dẫn SQL của tôi hoặc truy cập Tài liệu tham khảo Microsoft Transact-SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật một bước công việc cho một công việc đại lý máy chủ SQL (T-SQL)

  2. Cài đặt Microsoft SQL Server 2012 Enterprise Edition w / Service Pack 1

  3. Thêm gợi ý truy vấn khi gọi Hàm Table-Valued

  4. Cách cài đặt SQL Server trên SUSE 12

  5. T-SQL trim   (và các ký tự không phải chữ và số khác)