Giáo Trình SQL bài 7
Chia sẻ bởi Trần Thị Thanh Diệu |
Ngày 19/03/2024 |
12
Chia sẻ tài liệu: Giáo Trình SQL bài 7 thuộc Công nghệ thông tin
Nội dung tài liệu:
1
TRUY XUẤT CƠ SỞ DỮ LIỆU CỦA SQL SERVER
2
1. Câu lệnh SELECT
SELECT [ALL | DICTINCT] [TOP n [WITH TIES] ]
[INTO new_table]
FROM table_source [AS newname]
[WHERE search_condition]
[GROUP BY goup_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC | DESC] ]
[COMPUTE | COMPUTEBY expression]
3
Từ khóa DISTINCT: Loại bỏ các mẫu tin trùng trong tập kết quả.
Từ khóa TOP n: Lấy ra n mẫu tin đầu tiên
+ WITH TIES các mẫu tin ngang bằng giá trị trong cột ORDER BY được liệt kê.
vd:
Select Top 5 With Ties orderid, productid, quantity
From [Order Details]
Order By quantity DESC
4
Từ khóa AS: Đặt bí danh cho bảng, cột
Select p.Productname as Name
From Products as p
Mệnh đề SELECT INTO: Sinh thêm một bảng mới mà dữ liệu được lấy từ các bảng khác.
Select FirstName, Lastname
Into EmployeeNames
From Employees
Dùng với các hàm: Sum, Max, Min, Avg, Count
Select Sum(quantity)
From [Order details]
5
Mệnh đề WHERER, GROUP BY, và HAVING:
Where và Having dùng để lọc dữ liệu trong câu Select với nhằm thỏa điều kiện
Các phép toán có thể dùng cho Where:
> , >= , < , <= , =, <> , ! =
NOT, AND, OR
LIKE, BETWEEN … AND ...
IS NULL, NOT IS NULL
Lưu ý: Having để giới hạn kết quả do Group By sản sinh ở các hàm và chỉ dùng với Group By; Whewe giới hạn kết quả trước khi Group By
6
Sử dụng Group By với toán tử WITH ROLLUP:
ROLLUP sẽ chèn thêm các dòng Total nằm trước các nhóm mẫu tin được phân theo GROUP BY
Ví dụ:
Select ProductID, OrderID, Sum (Quantity) as Total_quantity
From [Order details]
Where OrderID < 10250
Group By OrderID, ProductID With Rollup
Order By OrderID, ProductID
7
Sử dụng Group By với toán tử WITH CUBE:
CUBE thêm các dòng Total của mỗi sự kết hợp có thể có giữa các cột
Ví dụ:
Select ProductID, OrderID, Sum (Quantity) as Total_quantity
From [Order details]
Where OrderID < 10250
Group By OrderID, ProductID With Cube
Order By OrderID, ProductID
8
Dùng toán tử COMPUTE và COMPUT BY: Thông thường dùng để kiểm tra số liệu, dùng kèm với các hàm thống kê SUM, AVG, MAX, MIN…
Vd1:
Select productID, orderid, quantity
From [Order Details]
Order By productID, OrderId
Compute Sum (quantity)
Vd2:
Select productID, orderid, quantity
From [Order Details]
Order By productID, OrderId
Compute Sum (quantity) By productid
Compute Sum (quantity)
Ghi chú Khi dùng toán tử Compute thì khi Select buộc phải có Order By
9
2. Dùng JOIN: sử dụng JOIN để select data từ nhiều table dựa trên mối quan hệ logic giữa các table (logical relationships). Có thể tóm tắt các loại Join thông dụng bằng các hình sau:
Inner Join Left Outer Join Right Outer Join Full Outer Join
10
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors AS a INNER JOIN publishers AS p
ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors a LEFT OUTER JOIN publishers p
ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors AS a RIGHT OUTER JOIN publishers AS p
ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors a FULL OUTER JOIN publishers p
ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
11
3. Dùng Sub_Queries
Sub queries là một câu lệnh Select mà nó trả về một giá trị đơn hoặc một tập các giá trị và nó được nằm trong các câu lệnh như Select, Insert, Update, or Delete.
Một SubQuery có thể được dùng bất kỳ nơi nào trong biểu thức được cho phép.
Một SubQuery cũng có thể được gọi từ một câu Select khác (32 cấp).
+ Ngắt câu lệnh phức tạp thành những đoạn truy vấn đơn giản.
+ Trả lời một truy vấn từ một truy vấn khác.
+ Các Sub Query hầu như có thể viết bằng Join và SQL Server luôn luôn thi hành những câu lệnh Join nhanh hơn SubQueries.
+ Không thể dùng SubQueries trên cột hình ảnh.
12
Select Distinct pub_name From publishers
Where pub_id IN
( Select pub_id From titles
Where pub_id = publishers.pub_id And type = `business` )
Select Distinct pub_name From publishers as P Inner Join titles as T ON P.pub_id = T.pub_id
Where type = `business`
Select Distinct pub_name From publishers as p, titles as t
Where p.pub_id = t.pub_id And type = `business`
13
SELECT title FROM titles
WHERE EXISTS
(SELECT * FROM publishers
WHERE pub_id = titles.pub_id AND city LIKE `B%`)
SELECT title FROM titles
WHERE pub_id IN
(SELECT pub_id FROM publishers
WHERE city LIKE `B%`)
Select Distinct title From titles as T Inner Join publishers as P ON T.pub_id = P.pub_id
Where city LIKE `B%`
14
SELECT title FROM titles
WHERE EXISTS
(SELECT * FROM publishers
WHERE pub_id = titles.pub_id AND city LIKE `B%`)
SELECT title FROM titles
WHERE pub_id IN
(SELECT pub_id FROM publishers
WHERE city LIKE `B%`)
Select Distinct title From titles as T Inner Join publishers as P ON T.pub_id = P.pub_id
Where city LIKE `B%`
15
4. Chèn dữ liệu:
INSERT [INTO] (Col_1, Col_2, ...)
VALUES (Value_1,Value_2, ...)
Chèn dữ liệu từ 1 câu lệnh Select
INSERT INTO
SELECT FROM
[ WHERE search_condition ]
Insert Into MyBooks
Select title_id, title, type
From titles Where type = `mod_cook`
16
5. Cập nhật dữ liệu:
UPDATE
SET = [, n…]
[ FROM ]
[ WHERE ]
Update authors
Set state = `PC’ , city = `Bay City`
Where state = `CA` And city = `Oakland‘
Update titleauthor
Set title_id = T.title_id
From titles as T Inner Join titleauthor Ta On T.title_id = Ta.title_id Inner Join authors as A On Ta.au_id = A.au_id
where T.title = `Net Etiquette‘ And au_lname = `Locksley`
17
6. Xóa dữ liệu:
DELETE
[ FROM ]
[ WHERE ]
Delete authors
Where au_lname = `McBadden`
Delete From authors
where au_lname = `McBadden`
Xóa toàn bộ dữ liệu dùng TRUNCATE TABLE.
Giống như câu lệnh Delete. Nhanh hơn câu lệnh Delete.
Không bật các bẫy lỗi (trigger)
Cú pháp: TRUNCATE TABLE
18
Xây dựng truy vấn CSDL
bằng Enterprise Manager
TRUY XUẤT CƠ SỞ DỮ LIỆU CỦA SQL SERVER
2
1. Câu lệnh SELECT
SELECT [ALL | DICTINCT] [TOP n [WITH TIES] ]
[INTO new_table]
FROM table_source [AS newname]
[WHERE search_condition]
[GROUP BY goup_by_expression]
[HAVING search_condition]
[ORDER BY order_expression [ASC | DESC] ]
[COMPUTE | COMPUTEBY expression]
3
Từ khóa DISTINCT: Loại bỏ các mẫu tin trùng trong tập kết quả.
Từ khóa TOP n: Lấy ra n mẫu tin đầu tiên
+ WITH TIES các mẫu tin ngang bằng giá trị trong cột ORDER BY được liệt kê.
vd:
Select Top 5 With Ties orderid, productid, quantity
From [Order Details]
Order By quantity DESC
4
Từ khóa AS: Đặt bí danh cho bảng, cột
Select p.Productname as Name
From Products as p
Mệnh đề SELECT INTO: Sinh thêm một bảng mới mà dữ liệu được lấy từ các bảng khác.
Select FirstName, Lastname
Into EmployeeNames
From Employees
Dùng với các hàm: Sum, Max, Min, Avg, Count
Select Sum(quantity)
From [Order details]
5
Mệnh đề WHERER, GROUP BY, và HAVING:
Where và Having dùng để lọc dữ liệu trong câu Select với nhằm thỏa điều kiện
Các phép toán có thể dùng cho Where:
> , >= , < , <= , =, <> , ! =
NOT, AND, OR
LIKE, BETWEEN … AND ...
IS NULL, NOT IS NULL
Lưu ý: Having để giới hạn kết quả do Group By sản sinh ở các hàm và chỉ dùng với Group By; Whewe giới hạn kết quả trước khi Group By
6
Sử dụng Group By với toán tử WITH ROLLUP:
ROLLUP sẽ chèn thêm các dòng Total nằm trước các nhóm mẫu tin được phân theo GROUP BY
Ví dụ:
Select ProductID, OrderID, Sum (Quantity) as Total_quantity
From [Order details]
Where OrderID < 10250
Group By OrderID, ProductID With Rollup
Order By OrderID, ProductID
7
Sử dụng Group By với toán tử WITH CUBE:
CUBE thêm các dòng Total của mỗi sự kết hợp có thể có giữa các cột
Ví dụ:
Select ProductID, OrderID, Sum (Quantity) as Total_quantity
From [Order details]
Where OrderID < 10250
Group By OrderID, ProductID With Cube
Order By OrderID, ProductID
8
Dùng toán tử COMPUTE và COMPUT BY: Thông thường dùng để kiểm tra số liệu, dùng kèm với các hàm thống kê SUM, AVG, MAX, MIN…
Vd1:
Select productID, orderid, quantity
From [Order Details]
Order By productID, OrderId
Compute Sum (quantity)
Vd2:
Select productID, orderid, quantity
From [Order Details]
Order By productID, OrderId
Compute Sum (quantity) By productid
Compute Sum (quantity)
Ghi chú Khi dùng toán tử Compute thì khi Select buộc phải có Order By
9
2. Dùng JOIN: sử dụng JOIN để select data từ nhiều table dựa trên mối quan hệ logic giữa các table (logical relationships). Có thể tóm tắt các loại Join thông dụng bằng các hình sau:
Inner Join Left Outer Join Right Outer Join Full Outer Join
10
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors AS a INNER JOIN publishers AS p
ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors a LEFT OUTER JOIN publishers p
ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors AS a RIGHT OUTER JOIN publishers AS p
ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors a FULL OUTER JOIN publishers p
ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
11
3. Dùng Sub_Queries
Sub queries là một câu lệnh Select mà nó trả về một giá trị đơn hoặc một tập các giá trị và nó được nằm trong các câu lệnh như Select, Insert, Update, or Delete.
Một SubQuery có thể được dùng bất kỳ nơi nào trong biểu thức được cho phép.
Một SubQuery cũng có thể được gọi từ một câu Select khác (32 cấp).
+ Ngắt câu lệnh phức tạp thành những đoạn truy vấn đơn giản.
+ Trả lời một truy vấn từ một truy vấn khác.
+ Các Sub Query hầu như có thể viết bằng Join và SQL Server luôn luôn thi hành những câu lệnh Join nhanh hơn SubQueries.
+ Không thể dùng SubQueries trên cột hình ảnh.
12
Select Distinct pub_name From publishers
Where pub_id IN
( Select pub_id From titles
Where pub_id = publishers.pub_id And type = `business` )
Select Distinct pub_name From publishers as P Inner Join titles as T ON P.pub_id = T.pub_id
Where type = `business`
Select Distinct pub_name From publishers as p, titles as t
Where p.pub_id = t.pub_id And type = `business`
13
SELECT title FROM titles
WHERE EXISTS
(SELECT * FROM publishers
WHERE pub_id = titles.pub_id AND city LIKE `B%`)
SELECT title FROM titles
WHERE pub_id IN
(SELECT pub_id FROM publishers
WHERE city LIKE `B%`)
Select Distinct title From titles as T Inner Join publishers as P ON T.pub_id = P.pub_id
Where city LIKE `B%`
14
SELECT title FROM titles
WHERE EXISTS
(SELECT * FROM publishers
WHERE pub_id = titles.pub_id AND city LIKE `B%`)
SELECT title FROM titles
WHERE pub_id IN
(SELECT pub_id FROM publishers
WHERE city LIKE `B%`)
Select Distinct title From titles as T Inner Join publishers as P ON T.pub_id = P.pub_id
Where city LIKE `B%`
15
4. Chèn dữ liệu:
INSERT [INTO]
VALUES (Value_1,Value_2, ...)
Chèn dữ liệu từ 1 câu lệnh Select
INSERT INTO
SELECT
[ WHERE search_condition ]
Insert Into MyBooks
Select title_id, title, type
From titles Where type = `mod_cook`
16
5. Cập nhật dữ liệu:
UPDATE
SET
[ FROM
[ WHERE
Update authors
Set state = `PC’ , city = `Bay City`
Where state = `CA` And city = `Oakland‘
Update titleauthor
Set title_id = T.title_id
From titles as T Inner Join titleauthor Ta On T.title_id = Ta.title_id Inner Join authors as A On Ta.au_id = A.au_id
where T.title = `Net Etiquette‘ And au_lname = `Locksley`
17
6. Xóa dữ liệu:
DELETE
[ FROM ]
[ WHERE
Delete authors
Where au_lname = `McBadden`
Delete From authors
where au_lname = `McBadden`
Xóa toàn bộ dữ liệu dùng TRUNCATE TABLE.
Giống như câu lệnh Delete. Nhanh hơn câu lệnh Delete.
Không bật các bẫy lỗi (trigger)
Cú pháp: TRUNCATE TABLE
18
Xây dựng truy vấn CSDL
bằng Enterprise Manager
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Trần Thị Thanh Diệu
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)