Hình 2.1. Tạo kiểu dữ liệu người dùng
Bước 2: Nhập tên kiểu dữ liệu tại hộp Name/Chọn kiểu dữ liệu tại mục Data type/ Chọn độ dài tại mục Length/Chọn Allow Nulls (Nếu cần)/Nhập giá trị mặc định tại mục Default (nếu cần)/Thiết lập quy tắc tại mục Rule (Nếu cần)/Chọn OK.
Hình 2.2. Thiết lập các thông số cho kiểu dữ liệu người dùng
- Sử dụng câu lệnh T-SQL: Chúng có thể được tạo bằng cách sử dụng câu lệnh CREATE TYPE.
Cú pháp
CREATE TYPE [ schema_name. ] type_name {FROM base_type [ ( precision [ , scale ] ) ] [ NULL | NOT NULL ] } [ ; ]
Trong đó:
- schema_name: là tên của giản đồ mà kiểu dữ liệu người dùng đang được tạo ra.
- type_name: là tên kiểu dữ liệu người dùng.
- base_type: là tên của kiểu dữ liệu hệ thống cơ sở.
- precision and scale: chỉ ra độ chính xác và độ co dãn đối với kiểu dữ liệu numeric
không.
- NULL | NOT NULL: qui định kiểu dữ liệu có cho phép chứa giá trị null hay
Ví dụ:
CREATE TYPE usertype FROM varchar(20) NOT NULL
3) Các toán tử (Operators)
Trong SQL Server các biểu diễn (expression) có thể xuất hiện nhiều toán tử.
Độ ưu tiên của toán tử sẽ quyết định thứ tự thực hiện của các phép tính. Thứ tự thực hiện ảnh hưởng rất lớn đến kết quả. Bảng dưới đây mô tả các toán tử trong SQL Server 2008 và mức độ ưu tiên của các toán tử đó.
Operators | |
1 | * (Multiply), / (Division), % (Modulo) |
2 | + (Positive), - (Negative), + (Add), (+ Concatenate), - (Subtract) |
3 | =, >, <, >=, <=, <>, !=, !>, !< (Comparison operators) |
4 | NOT |
5 | AND |
6 | ALL, ANY, BETWEEN, IN, LIKE, OR, SOME |
7 | = (Assignment) |
Có thể bạn quan tâm!
- Kiểm Tra Các Yêu Cầu Của Máy Tính Trước Khi Cài Đặt
- Dịch Vụ Sql Server Configuration Manager
- SQL Server - 5
- SQL Server - 7
- SQL Server - 8
- Kết Quả Khi Xác Định Tiêu Đề Trường
Xem toàn bộ 323 trang tài liệu này.
4) Biểu thức
Biếu thức là kết hợp nhiều phần tử: toán tử, giá trị, định danh mà SQL Server có thể ước tính được để trả về một kết quả. Biểu thức có thể được sử dụng trong nhiều trường hợp khi truy cập hoặc thay đổi dữ liệu. Sử dụng toán tử trong biểu thức. Toán tử được dùng để thực hiện tính toán, so sánh, ghép hoặc gán giá trị.
5) Các hàm
Hàm là tập lệnh Transact-SQL để thực hiện công việc nào đó. Hàm trong SQL làm việc với dữ liệu, nhóm dữ liệu để trả về một kết quả mong đợi. Transact-SQL có các loại hàm sau:
- Các hàm tập hợp.
- Các hàm chuyển đổi kiểu dữ liệu.
- Các hàm ngày tháng.
- Các hàm toán học.
- Các hàm xử lý xâu.
- Các hàm hệ thống.
- Các hàm xếp hạng.
a) Các hàm tập hợp: Transact-SQL hỗ trợ các hàm tập hợp để thống kê dữ
liệu.
Tên hàm | Giá trị trả về | Ví dụ | |
1 | SUM(col_name) | Hàm tính tổng, trả về tổng giá trị của col_name | SELECT SUM(soluong) AS Total FROM muaban |
2 | AVG(col_name) | Trả tính giá trị trung bình | SELECT AVG(soluong*dongia) AS AveragePrice FROM muaban |
3 | COUNT | Đếm số bản ghi trong bảng | SELECT COUNT(*) AS „Number of Large Orders‟ FROM muaban WHERE soluong > 100 |
4 | MAX(col_name) | Trả về giá trị lớn nhất | SELECT MAX(soluong*dongia) AS „Largest Order‟ FROM Purchasing.PurchaseOrderDetail |
5 | MIN(col_name) | Trả về giá trị nhỏ nhất | SELECT MIN(soluong*dongia) AS „Smallest Order‟ FROM muaban |
b) Hàm chuyển đổi kiểu dữ liệu
Hàm chuyển đổi được sử dụng để biến đổi giá trị của một kiểu dữ liệu sang kiểu dữ liệu khác
Cú pháp:
CONVERT(datatype[(length)], expression [,style]) Trong đó:
- datatype là kiểu dữ liệu cần chuyển sang,
- length chỉ ra độ dài của dữ liệu,
- expression chỉ ra tên trường, hằng số, hàm, biến hoặc là câu truy vấn con
- style chỉ ra kiểu hiển thị giá trị ngày tháng(dd/mm/yyyy hay mm/dd/yyyy)
c) Các hàm ngày tháng
Hàm ngày tháng được dùng để thao tác giá trị ngày tháng. Hàm ngày tháng cho phép chúng ta lấy một phần của giá trị ngày tháng như: lấy ngày, tháng hoặc năm. DATEPART là một phần giá trị ngày tháng, được kết hợp sử dụng trong hàm ngày tháng để lấy một phần nào đó của giá trị ngày tháng. Tất cả các DATEPART được hỗ trợ trong Transact-SQL.
Datepart | Abbreviation | Values | |
1 | Hour | Hh | 0-23 |
2 | Minute | Mi | 0-59 |
3 | Second | Ss | 0-59 |
4 | Millisecond | Ms | 0-999 |
5 | Day of Year | Dy | 1-366 |
6 | Day | Dd | 1-31 |
7 | Week | Wk | 1-53 |
8 | Weekday | Dw | 1-7 |
9 | Month | Mm | 1-12 |
10 | Quarter | 1-4 | |
11 | Year | Yy | 1753-9999 |
Các hàm ngày tháng
Hàm | Giá trị trả về | Ví dụ | |
1 | GETDATE() | Trả về ngày hiện tại của hệ thống | SELECT GETDATE() |
2 | DATEADD(datepart,number,date) | Cộng vào thêm number giá trị vào date | SELECT DATEADD(mm,4,‟0 1/01/99‟) - returns 05/01/99 in the current date format |
SELECT | |||
3 | DATEDIFF(datepart,date1,date2) | So sánh giữa hai giá trị ngày tháng | DATEDIFF(mm,‟01/ 01/99‟,‟05/01/99‟) - |
returns 4 | |||
4 | DATENAME(datepart,date) | Trả về giá trị ngày tháng dưới dạng chuỗi | SELECT DATENAME(dw,‟0 1/01/2000‟) - returns Saturday |
SELECT | |||
5 | DATEPART(datepart,date) | Trả về một phần giá trị ngày tháng | DATEPART(day,‟01 /15/2000‟) - returns |
15 |
d) Các hàm toán học: Thực hiện các phép tính đại số trên trường dữ liệu/giá trị
số.
Hàm | Giá trị trả về | Ví dụ | |
1 | ABS(num_expr) | Trả về giá trị tuyệt đối | SELECT ABS (-43) return 43 |
2 | CEILING(num_expr) | Trả về giá trị nhỏ nhất lớn hơn hoặc bằng num_expr | SELECT CEILING(43.5) returns 44 |
3 | FLOOR(num_expr) | Trả về giá trị lớn nhất nhỏ hơn hoặc bằng num_expr | SELECT FLOOR(43.5) returns 43 |
4 | POWER(num_expr,y) | Hàm lũy thừa | SELECT POWER(5,2) returns 25 |
5 | ROUND(num_expr,length) | Hàm làm tròn | SELECT ROUND(43.543 ,1) returns 43.500 |
6 | SIGN(num_expr) | Trả về +1 nếu num_expr là số dương, -1 nếu num_expr là số âm, 0 nếu num_expr bằng 0 | SELECT SIGN(-43) returns -1 |
7 | SQRT(float_expr) | Hàm căn bậc hai | SELECT SQRT(9) returns 3 |
8 | ISNUMERIC(num_expr) | Hàm isNumeric kiểm tra một giá trị có phải thuộc kiểu dữ liệu số hay không. | select CUSTOMERN AME, isnumeric(ADD RESS) as ISNUMERIC from customers |
e) Hàm xử lý xâu:
Hàm | Giá trị trả về | Ví dụ | |
1 | ASCII(st) | Trả về mã ASCII của kí tự đầu tiên trong xâu st | ASCII(“A”) Trả về 65 |
2 | CHAR(n) | Trả về kí tự có mã ASCII là n | Char(90) Trả về Z |
3 | UPPER() | Chuyển các chuỗi ký tự thường trong chuỗi thành các ký tự hoa. | select upper(„khoa cntt‟) Trả về „KHOA CNTT‟ |
4 | LOWER(st) | Chuyển các ký tự hoa trong chuỗi thành các kí tự thường. | select lower(„KHOA CNTT‟) Trả về „khoa cntt‟ |
5 | LEN(st) | Trả về chiều dài một chuỗi | select len(„KHOA CNTT‟) Trả về 9 |
6 | LTRIM() | Cắt các khoảng trắng bên trái của chuỗi | select ltrim(„ KHOA‟) Trả về „KHOA‟ |
7 | RTRIM() | Cắt các khoảng trắng bên phải của chuỗi | select ltrim(„KHOA „) Trả về „KHOA‟ |
8 | LEFT(st,k) | Trả về một chuỗi ký tự có chiều dài k được chỉ định tính từ bên trái của chuỗi. | select left(„KHOA CNTT‟, 4) Trả về „KHOA‟ |
9 | RIGHT(st,k) | Trả về một chuỗi ký tự có chiều dài k được chỉ định tính từ bên phải của chuỗi. | select right(„KHOA CNTT‟, 4) Trả về „CNTT‟ |
10 | SUBSTRING (st, i, k) | Trích xuất một chuỗi con gồm k từ vị trí thứ k. | select substring(„KHOA CNTT‟, 4) Trả về „CNTT‟ |
11 | REPLACE(st,s t1, st2) | Thay thế chuỗi st1 trong chuỗi st bởi chuỗi st2 | select replace(„KHOA CNTT‟, „CNTT‟, „TIN HOC‟) Trả về „KHOA TIN HOC‟ |
STUFF(st,n,k,s t1) | Thay thế k ký tự trong chuỗi st bằng chuỗi st1 bắt đầu từ vị trí thứ n. | select stuff(„KHOA CNTT‟, 6, 4, „TIN HOC‟) Trả về „KHOA TIN HOC‟ | |
13 | CHARINDEX( st1,st[,n]) | Trả về vị trí đầu tiên của chuỗi st1 xuất hiện trong chuỗi st của lần xuất hiện thứ n | select CHARINDEX(„CNTT‟,‟ KHOA CNTT‟) Trả về 6 |
g) Hàm hệ thống: Trả về dữ liệu hệ thống hay thông tin cấu hình của SQL Server .
Hàm | Giá trị trả về | |
1 | DB_ID([„database_name‟]) | Trả về số định danh của cơ sở dữ liệu |
2 | DB_NAME([database_id]) | Trả về tên cơ sở dữ liệu |
3 | HOST_ID() | Trả về số định danh cho máy trạm |
4 | HOST_NAME() | Trả về tên máy trạm |
5 | ISNULL(expr,value) | Nếu expr là NULL thì được thay thế bằng giá trị VALUE |
6 | OBJECT_ID(„obj_name‟) | Số định danh đối tượng |
7 | OBJECT_NAME(object_id) | Trả về tên đối tượng |
8 | USER_ID([„user_name‟]) | Số định danh người dùng |
9 | USER_NAME([user_id]) | Tên người dùng |
h) Hàm xếp hạng:
Những hàm này trong SQL Server được dùng để liên kết các tập kết quả đã sắp xếp và các giá trị hàng đầu dùng thứ tự chỉ ra độc lập với thứ tự kết quả.
- Hàm ROW_NUMBER()
Cú pháp:
ROW_NUMBER() OVER (ORDER BY expression) Trong đó: expression chỉ ra tên trường, hằng số, hàm, biến.
Hàm này trả về số nguyên với giá trị tăng dần dựa trên mệnh đề ORDER BY được truyền cho hàm. Nếu ORDER BY của ROW_NUMBER trùng với thứ tự kết quả thì giá trị được tăng lên. Nếu ORDER BY của ROW_NUMBER không trùng với ORDER BY của tập kết quả thì những giá trị này không được liệt kê theo thứ tự nhưng vẫn thể hiện theo thứ tự ORDERY BY của ROW_NUMBER.
Ví dụ 1: Trong phát biểu sau, thứ tự ORDER BY của ROW_NUMBER trùng khớp với thứ tự ORDER BY trong tập kết quả. Do đó, giá trị của ROW_NUMBER trả về được liệt kê theo thứ tự.
USE QLTS
SELECT sbd, hoten, dtoan, ROW_NUMBER() OVER (ORDER BY dtoan) FROM thisinh
ORDER BY dtoan as sx
Ví dụ 2: Trong phát biểu sau, thứ tự ORDER BY của ROW_NUMBER không trùng khớp với thứ tự ORDER BY trong tập kết quả.
USE QLTS
SELECT sbd, hoten, dtoan, ROW_NUMBER() OVER (ORDER BY dtoan)as sx
FROM thisinh ORDER BY sbd
Kết quả ví dụ 1 Kết quả ví dụ 2
- Hàm RANK()
Dùng hàm Rank để một dòng có cùng sắp xếp giá trị trường như các dòng khác có cùng một xếp loại.
Cú pháp:
RANK() OVER (ORDER BY expression)
Trong đó: expression chỉ ra tên trường, hằng số, hàm, biến.
Hàm RANK sẽ đánh số liên tục một tập hợp bản ghi nhưng khi có 2 dòng có cùng giá trị sắp xếp thì hàm sẽ đánh giá là cùng bậc giá trị. Giá trị xếp loại vẫn sẽ tăng