Sử dụng SQL server

Sử dụng SQL server

Kiểu dữ liệu trong SQL Server Kiểu dữ liệu trong SQL Server Kiểu dữ liệu trong SQL Server Kiểu dữ liệu trong SQL Server Kiểu dữ liệu trong SQL Server 4/5 (116 reviews)

Kiểu dữ liệu trong SQL Server

Đã đăng 2017-03-01 08:39:22 bởi Kteam
7 bình luận 25139 lượt xem
Kiểu dữ liệu trong SQL Server 4 /5 stars (9 reviews)
 

Dẫn nhập

Trong bài lần trước, chúng ta đã tìm hiểu CÁCH KHỞI TẠO XÓA SỬA TABLE TRONG SQL và một số lưu ý liên quan trong quá trình sử dụng SQL MANAGEMENT STUDIO. Nếu bạn còn nhớ trong cú pháp của tạo bảng còn có phần kiểu dữ liệu chưa được Kteam giới thiệu.

Vậy Kiểu dữ liệu là gì? Trong bài này, chúng ta sẽ cùng nhau tìm hiểu về KIỂU DỮ LIỆU TRONG SQL nhé!


Nội dung chính

Để theo dõi tốt nhất bài này, bạn nên xem qua bài: 

Trong bài này, Kteam sẽ cùng bạn tìm hiểu một số vấn đề sau:

  • Kiểu dữ liệu trong SQL.
  • Danh sách các kiểu dữ liệu.
  • Một số điều cần lưu ý.

Kiểu dữ liệu trong SQL

Kiểu dữ liệu là gì?

KIỂU DỮ LIỆU – DATA TYPE là một quy trình về cấu trúc, miền giá trị của dữ liệu có thể nhập vào và tập các phép toán / toán tử có thể tác động lên miền giá trị đó.

Như một số khóa học C++ CĂN BẢN, C# CĂN BẢN tại Howkteam.com đã đề cập rất kỹ đến định nghĩa chi tiết của Kiểu dữ liệu. Bạn dễ dàng nhận thấy được mỗi ngôn ngữ chỉ chấp nhận và xử lý những dữ liệu tuân theo sự quy định của ngôn ngữ lập trình đó. Trong lập trình, một sữ liệu luôn thuộc về một kiểu dữ liệu nhất định.

Tương tự vậy, kiểu dữ liệu trong SQL là:

  • Dạng dữ liệu chỉ định mà mỗi Column (Trường thuộc tính) có thể lưu trữ để thể hiện dữ liệu thuộc tính của nó.
  • Quyết định kích thước mà dữ liệu trong Column đó sử dụng trong vùng nhớ.
  • Dựa trên cơ sở các Kiểu dữ liệu do chuẩn ANSI/ISO cung cấp.
  • Trong đó, 16/143 kiểu được sử dụng thông dụng trong các Hệ quản trị cơ sở dữ liệu thương mại hiện nay.

Tại sao phải dùng các kiểu dữ liệu riêng?

Tại sao không thể dùng chung một kiểu dữ liệu cho tất cả các Column (Trường thuộc tính) trong một Table hoặc một Database?

Nếu việc lưu trữ các dữ liệu cùng một kiểu, bạn không thể phân loại đâu là ngày tháng, đâu là chuỗi, đâu là số…. Vì vậy việc thực hiện các toán tử, tìm kiếm cũng trở nên rất khó khăn trong quá trình truy vấn dữ liệu.

Mặt khác, đặt ra một bài toán thực tế: Khi bạn thiết kế một CSDL thương mại, việc cài đặt Database lưu trữ rất quan trọng. Ta có một ví dụ nhỏ như sau, giả sử:

  • Trong một Table, cứ 1 record (bản ghi) tương ứng 1 byte bộ nhớ.
  • Một ngày bạn lưu 1.000.000 records sẽ chiếm 1.000.000 byte.
  • Nếu lưu một năm sẽ là 365.000.000 byte.

Vậy nếu lưu trữ thừa 1byte/ ngày, bạn sẽ gây ra thất thoát dung lượng đến 365.000.000 byte /năm. Ngược lại, việc thiếu dung lượng gây ra trì trệ hệ thống như lỗi thiếu bộ nhớ, không đủ dung lượng lưu trữ. Đó chỉ là một bài toán minh họa nhỏ, còn thực tế thường gấp nhiều lần như vậy.

Ngày nay, dung lượng máy tính thường khá lớn, việc thất thoát dung lượng lưu trữ nên trên có thể tạm chấp nhận. Nhưng còn đối với lập trình di động thì sao? Theo xu hướng sử dụng thiết bị hiện đại, bạn thấy rõ rằng việc tiết kiệm dung lượng là rất quan trọng. Các thiết bị nhỏ không thể lưu trữ dung lượng quá lớn, vì vậy nếu xảy ra thất thoát dữ liệu sẽ gây trì trệ ảnh hưởng đến hệ thống thiết bị.

Vì vậy, cần thiết để xác định KIỂU DỮ LIỆU THÍCH HỢP cho từng thuộc tính dữ liệu để đảm bảo tối ưu bộ nhớ trong quá trình sử dụng.


Danh sách các kiểu dữ liệu

Trong phần này, Kteam sẽ giới thiệu đến các bạn một số kiểu dữ liệu thông dụng. Bạn có thể xem chi tiết hơn trong Tài liệu đầy đủ từ Tutorielspoint.com

Theo chuẩn ANSI/ISO SQL, các kiểu dữ liệu trong SQL được quy định và phân loại thành các nhóm chính như sau:

 



Một số điều cần lưu ý

Cấp phát động và cấp phát tĩnh

Ở kiểu dữ liệu char(n), varchar(n) ta có thể thấy sự khác biệt giữa hai kiểu dữ liệu này là khả năng cấp phát bộ nhớ. Vậy chúng khác nhau như thế nào?

Ví dụ sau sẽ giúp bạn dễ hiểu hơn khái niệm này

USE SQLDBUI
GO

CREATE TABLE TEST
(
--Cấp phát bộ nhớ tĩnh cho column MASV
            MASV CHAR(10),

--Cấp phát bộ nhớ động cho column MALop
            MALop VARCHAR(50)
)

Với đoạn code trên, khi bạn nhập dữ liệu “Kteam” cho 2 Column trên

  • Ở column MASV sẽ CẤP PHÁT TĨNH và luôn lưu trữ trên 10 ô nhớ trong bộ nhớ, với 5 ký tự nhập vào và 5 ký tự rỗng. 
  • Ở column MALop sẽ CẤP PHÁT ĐỘNG  theo số ký tự nhập vào. Ở đây, sẽ là 5 ký tự tương ứng “Kteam” không có ký tự rỗng theo sau.

Việc sử dụng varchar(n) giúp việc lưu trữ trở nên linh hoạt hơn và tiết kiệm bộ nhớ hơn. Tuy nhiên trong thực tế, có lúc bạn cần đảm bảo số lượng ký tự lưu trữ có độ dài giống nhau, chính xác ở mọi dữ liệu trong một trường thược tính, vì vậy cần thiết sử dụng char(n) trong trường hợp này.


Chương trình minh họa

Để hiểu hơn về cách sử dụng Kiểu dữ liệu, bạn có thể tham khảo chương trình đơn giản sau:

-- Khởi tạo Database Quản lý bán hàng
CREATE DATABASE QUANLYBANHANG
GO

-- Sử dụng Database Quản lý bán hàng
USE QUANLYBANHANG
GO

--Tạo Table Khách
CREATE TABLE KHACH
(
MAKH CHAR(5),
TENKH NVARCHAR(30),
GIOITINH BIT,
DIACHI NTEXT,
DTHOAI CHAR(11)
)
GO

-- Tạo Table Hàng hóa
CREATE TABLE HANG_HOA
(
MAHH VARCHAR(5),
TENHH NTEXT,
DVTINH NVARCHAR(10),
DONGIA MONEY
)
GO

-- Tạo Table Hóa đơn
CREATE TABLE HOADON
(
SOHD CHAR(5),
MAKH CHAR(5),
NGAYBAN DATETIME
)
GO

Thử tự viết chương trình cơ bản của bạn, tìm kiểu dữ liệu thích hợp cho từng trường thuộc tính và tự tìm hiểu một số câu hỏi trong phần cuối Video hướng dẫn nhé!

Comment câu trả lời của bạn xuống dưới và cùng giải đáp với Kteam ở hướng dẫn lần sau.


Kết

Trong bài này, chúng ta đã tìm hiểu về KIỂU DỮ LIỆU trong SQL cũng như cách sử dụng chúng.

Bài sau, chúng ta sẽ tìm hiểu về INSERT, DELETE, UPDATE TABLE TRONG SQL.

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó

 



Tài liệu 

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học KIỂU DỮ LIỆU TRONG SQL dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like hoặc +1 Google để ủng hộ Kteam và tác giả nhé! 


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. 

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Kiểu dữ liệu trong SQL Server
pquocthang67 2018-08-28 16:10:48

Bit mới nhận giá trị 0 và 1 chứ ko phải byte trong video bị nhầm chổ đó 

0 bình chọn
Reply
Kiểu dữ liệu trong SQL Server
cactus_165 2018-02-17 01:26:24

editted ^^ 

17/2/2018 hoàn thành bài 4.

Mỗi khi hoàn thành 1 bài học mình sẽ comment lại để đánh dấu, cố gắng bài nào cũng có comment ^^
Nếu 2 hôm liên tiếp mà các  bài sau của khóa học mình chưa comment thì mong admin, mod, hay ai đó tốt bụng hãy nhắc nhở mình nhé, hoặc inb nhắc mình thì thật tuyệt vời ^^ 
Nếu có ai đang học mà có người học cùng để nhắc nhở nhau thế này thì inbox mình nhé ^^ 
https://www.facebook.com/123dna

0 bình chọn
Reply
Kiểu dữ liệu trong SQL Server
cactus_165 2018-02-17 01:25:33

17/2/2018 hoàn thành bài 3.

Mỗi khi hoàn thành 1 bài học mình sẽ comment lại để đánh dấu, cố gắng bài nào cũng có comment ^^
Nếu 2 hôm liên tiếp mà các  bài sau của khóa học mình chưa comment thì mong admin, mod, hay ai đó tốt bụng hãy nhắc nhở mình nhé, hoặc inb nhắc mình thì thật tuyệt vời ^^ 
Nếu có ai đang học mà có người học cùng để nhắc nhở nhau thế này thì inbox mình nhé ^^ 
https://www.facebook.com/123dna

0 bình chọn
Reply
Kiểu dữ liệu trong SQL Server
baovulehoa123 2017-11-09 14:36:20

Khi mình set kiểu dữ liệu cho ngaysinh la datetime(mm/dd/yyyy). Và khi nhập bằng code cũng theo mm/dd/yyyy

Cho em hỏi làm thế nào khi select table, thuộc tính ngaysinh ra theo định dạng dd/mm/yyyy .

Giúp em với, em cảm ơn !

0 bình chọn
Reply
Kiểu dữ liệu trong SQL Server
boyqn676 2017-03-10 14:14:48
Góp ý tý, tập số nguyên là tập Z gồm cả số âm nhé anh, N là tập số tự nhiên từ 0,1,2.... không gồm số âm.
0 bình chọn
Reply
View all 2 comments
Kteam - Howkteam Free Education
K9 2017-03-12 12:23:20
hình như bạn bị nhầm. N* mới là k âm :3
0 bình chọn
Reply
Kteam - Howkteam Free Education
K9 2017-03-12 12:24:07
uầy. mình bị nhầm @@
0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education