Danh sách các hàm số
Như chúng tôi đã nói ở trên, DBMS chỉ lưu trữ dữ liệu thuộc một loại nhất định là chưa đủ, nó còn cần hỗ trợ một tập hợp rộng lớn các hoạt động siêu nhanh trên dữ liệu thuộc các loại này.
Và, như bạn đã biết, tất cả các DBMS đều hỗ trợ nhiều loại số và thao tác trên chúng. Hôm nay bạn sẽ làm quen với phổ biến nhất trong số họ.
Tất cả các hàm số trong MySQL có thể được chia thành 5 nhóm một cách có điều kiện:
- Phép toán số học
- hoạt động bit
- hàm làm tròn
- hàm đại số
- Hàm lượng giác
Nhân tiện, bạn đã quen thuộc với nhiều người trong số họ nhờ ngôn ngữ Java, vì vậy tôi nghĩ họ sẽ không làm bạn ngạc nhiên. Nhưng hãy bắt đầu theo thứ tự.
Danh sách đầy đủ các tính năng có thể được tìm thấy ở đây .
Các phép tính toán học
Về nguyên tắc, không có gì bất ngờ, tất cả các hoạt động tiêu chuẩn giống như ở những nơi khác:
# | Ví dụ | ||
---|---|---|---|
1 | +, -, *, / | 2+2*2 | Cộng, trừ, nhân, chia (không hoàn hảo!) |
2 | % | 13% 5 | Số dư của phép chia |
3 | chế độ | 13MOD5 | Số dư của phép chia |
4 | BHTG | 13 KHỐI 5 | chia cho số nguyên |
Từ một điều thú vị: khi chia hai số nguyên, bạn sẽ nhận được một số thực. Để chia cho số nguyên, bạn cần sử dụng toán tử DIV.
Nếu bạn muốn lấy phần còn lại của một phép chia cho một số nguyên, thì bạn cần sử dụng toán tử MOD hoặc %, như trong ngôn ngữ Java. Tôi sẽ không đưa ra ví dụ, vì đối với tôi mọi thứ đều rõ ràng ở đây.
hoạt động bit
Bạn cũng có thể thực hiện các thao tác theo bit trên các số trong SQL, giống như trong Java. Mặc dù có những sắc thái. Danh sách các hoạt động bit có sẵn được trình bày trong bảng dưới đây:
# | Ví dụ | Ghi chú | ||
---|---|---|---|---|
1 | & | 0b1111 & 0b1000 | Bitwise AND | |
2 | | | 0b1111 | 0b0001 | Bitwise HOẶC | |
3 | ^ | 0b1111^0b1111 | Bit XOR | |
4 | ~ | ~0b1111 | đảo ngược bit | |
5 | >> | 128 >> 5 | Dịch bit sang phải | |
6 | << | 2 << 5 | Dịch bit sang trái | |
7 | BIT_COUNT() | BIT_COUNT(255) | Trả về số bit là 1 |
Trước phiên bản MySQL 8.0, các hoạt động như vậy chỉ có thể được thực hiện trên kiểu dữ liệu BIGINT, dài 64 bit và tương tự như kiểu dài của Java. Tuy nhiên, trong MySQL 8.0 (mà chúng tôi đang xem xét), khái niệm này đã thay đổi. Bây giờ các hoạt động này có thể được thực hiện trên các loại nhị phân đặc biệt:
- nhị phân
- BIẾN THÂN
- Và cả trên các loại BLOB (là một mảng byte)
Tất cả các loại khác được chuyển đổi đơn giản thành loại BIGINT và các hoạt động được thực hiện như trước (chỉ trên 64 bit đầu tiên).
hàm làm tròn
Để làm tròn trong các chức năng MySQL rất quen thuộc với bạn được sử dụng. Một danh sách của họ được đưa ra trong bảng dưới đây:
# | Ví dụ | Ghi chú | |
---|---|---|---|
1 | TRẦN(), TRẦN() | TRẦN (5,1) = 6 | Làm tròn một số thực lên |
2 | SÀN NHÀ() | TẦNG(5.9) = 5 | Làm tròn một số thực xuống |
3 | TRÒN() | VÒNG(4.1) = 4 | Làm tròn một số thực thành số nguyên gần nhất |
4 | CẮT CẮT() | CẮT CẮT(4.123, 2) = 4.12 | Cắt bớt một số đến N chữ số thập phân |
5 | RAND() | 0,61914388706828 | Trả về một số thực ngẫu nhiên trong khoảng từ 0 đến 1 |
6 | RAND(N) | 0,93845168309142 | Trả về một số thực ngẫu nhiên trong khoảng từ 0 đến 1. N được sử dụng làm giá trị gốc |
Bạn đã quen thuộc với tất cả các hàm làm tròn kể từ nhiệm vụ đầu tiên trong Java. Chỉ các hàm TRUNCATE() và RANDOM(N) mới có thể được quan tâm ở đây.
Hàm TRUNCATE (số, số lượng) nhận tham số đầu tiên là một số thực và tham số thứ hai là số vị trí thập phân còn lại. Số được cắt thành số vị trí thập phân mong muốn.
Đối với hàm RAND(N), mọi thứ phức tạp hơn một chút. Như bạn có thể biết, máy tính không thể tạo số ngẫu nhiên. Thay vào đó, nó tạo ra cái gọi là chuỗi số giả ngẫu nhiên. Tức là nhìn vào 1 số chưa rõ là ngẫu nhiên hay không nhưng dãy số có thể đã giống ngẫu nhiên rồi. Các nhà phát triển tận dụng điều này bằng cách tạo ra một dãy số rất giống với ngẫu nhiên.
Trong trường hợp này, mỗi số mới của dãy số được tạo ra theo một quy tắc phức tạp dựa trên số trước đó của dãy số này . Do đó, nếu bạn chuyển một số bắt đầu nhất định (còn gọi là hạt giống) cho thuật toán tạo số ngẫu nhiên, thì mỗi lần bạn sẽ nhận được cùng một dãy số ngẫu nhiên .