hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Cơ sở dữ liệu
  • Micrsoft SQL Server
Table (bảng) trong SQL Server

Table (bảng) trong SQL Server

  • 21-05-2022
  • Toanngo92
  • 0 Comments

Table trong SQL Server chứa dữa liệu được sắp xếp theo dạng hàng và cột. Mỗi cột có thể chứa dữ liệu với kiểu dữ liệu và kích thước nhất định

Mục lục

  • Các data type nâng cao
  • Khởi tạo, chỉnh sửa, xóa bảng
    • Tạo bảng (Create table)
    • Chỉnh sửa bảng (alter table)
    • Xóa bảng (Drop table)
    • Các câu lệnh sửa đổi dữ liệu
    • DEFAULT Definition
    • IDENTITY Property (thuộc tính IDENTITY)
    • Globally Unique Identifier (định danh duy nhất toàn cục)

Các data type nâng cao

Ngoài các kiểu dữ liệu cơ bản như int,float nvarchar… SQL Server cũng hỗ trợ một vài kiểu dữ liệu nâng cao như sau:

TênMô tả
hiearachyidLà một kiểu dữ liệu hệ thống với độ dài biến thiên, sử dụng để biểu diễn vị trí của phân cấp (phân tầng)
geometryLà một dạng dữ liệu không gian kiểu hình học, được sử dụng để biểu diễn đối tượng trên hệ tọa độ phẳng
geograpghyLà một dạng dữ liệu không gian kiểu địa lý, mô phỏng tọa độ latitude và longtitude ( hay gọi là latlong). SQL Server hỗ trợ một tập hợp các phương thức để làm việc với kiểu dữ liệu geography.
xmlKiểu đữ liệu lưu được dữ liệu dạng XML ( bao gồm các thẻ và text nodes, có phân tầng)
cursorLà kiểu dữ liệu sử dụng cho biến hoặc stored procedure output, chứa một tham chiếu tới một con trỏ
tableLà kiểu dữ liệu đặc biệt hữu dụng cho việc lưu trữ một bảng giá trị tạm. Có thể sử dụng dữ liệu này để xử lý về sau, nó có thể sử dụng trong functions, stored procedures, batches
rowversionKiểu dữ liệu này được tự động tạo, tạo ra một số nhị phân duy nhất bên trong dataabase

Khởi tạo, chỉnh sửa, xóa bảng

Tạo bảng (Create table)

Cú pháp tạo bảng:

Docs: https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql?view=sql-server-ver15

-- Simple CREATE TABLE Syntax (common if not using options)
CREATE TABLE
    { database_name.schema_name.table_name | schema_name.table_name | table_name }
    ( { <column_definition> } [ ,...n ] )
[ ; ]

Giải thích:

  • database_name: tên database muốn tạo table
  • table_name: tên của bảng muốn tạo, tối đa 128 ký tự
  • column_name: tên của cột trong bảng. Tối đa 128 ký tự. Lưu ý: column name không cần đặt tên khi kiểu dữ liệu của column là timestamp. Column name mặc định của cột có kiểu dữ liệu timestamp là ‘timestamp’.
  • data_type: xác định data type (kiểu dữ liệu) cho column

Ví dụ:

USE AdventureWorks2019
CREATE TABLE dbo.CustomerInfo(
CustomerID int NOT NULL,
CustomerName nvarchar (40) NOT NULL
)
GO

Cú pháp ngắn gọn:

USE AdventureWorks2019
CREATE TABLE CusInfo(
CusID int identity NOT NULL,
CusName varchar(40) NOT NULL
)

Lưu ý, nếu mặc định khởi tạo, không định nghĩa lược đồ (schema), SQL Server sẽ ngầm hiểu schema là dbo.

Chỉnh sửa bảng (alter table)

Cú pháp:

Docs: https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql?view=sql-server-ver15

ALTER TABLE [[dabase_name.[schema_name].|schema_name.]table_name
ALTER COLUMN ([<column_name>] [data_type] NULL/ NOT NULL);
| ADD ([<column_name>] [data_type] NULL/NOT NULL);
| DROP COLUMN ([<column_name>]);

Giải thích:

  • ALTER TABLE: sửa bảng
  • MODIFY COLUMN: xác định cột sẽ được sửa
  • ADD: Thêm một hoặc nhiều cột vào bảng
  • DROP COLUMN (<column_name>): xác định tên cột có tên là <column_name> sẽ được xóa khỏi bảng

Ví dụ câu lệnh thêm cột:

ALTER TABLE [dbo].[CustomerInfo]
ADD [ContactNumber] [numberic](12,0) NOT NULL;

Ví dụ câu lệnh sửa cột:

ALTER TABLE [dbo].[CustomerInfo]
ALTER COLUMN [CustomerID] numberic[12,0] NOTNULL

Ví dụ câu lệnh xóa cột:

ALTER TABLE [dbo].[CustomerInfo]
DROP COLUMN [ContactNumber];

Lưu ý: trước khi xóa cột, cần đảm bảo rằng các cột không có ràng buộc gì và có thể xóa. Trong một số ràng buộc, cột không thể được xóa, ví dụ: nếu cột sử dụng các ràng buộc CHECK,FOREIGN KEY, UNIQUE, PRIMARY KEY, hay cột được xác định giá trị mặc định (DEFAULT) ( sẽ được đề cập ở phần sau).

Xóa bảng (Drop table)

Câu lệnh DROP TABLE sẽ xóa toàn bộ định nghĩa bảng, dữ liệu bên trong nó, tất cả các đối tượng liên kết với bảng như indexes, triggers, contrainst, permission specifications cho bảng.

Cú pháp:

DROP TABLE <table_name>

Ví dụ xóa bảng:

DROP TABLE dbo.CustomerInfo

Các câu lệnh sửa đổi dữ liệu

Để sửa đổi dữ liệu trong bảng, có các câu lệnh INSERT,UPDATE, DELETE thực hiện công việc này.

Xem bài viết về INSERT trong SQL Server: https://hocvietcode.com/lenh-insert-trong-sql-server/

Xem bài viết về UPDATE trong SQL Server: https://hocvietcode.com/lenh-update-trong-sql-server/

Xem bài viết về DELETE trong SQL Server: https://hocvietcode.com/lenh-delete-trong-sql-server/

DEFAULT Definition

Xét một tình huống trong đó thông tin chi tiết về sản phẩm phải được lưu trữ trong bảng SQL Server 2019, nhưng tất cả các giá trị cho chi tiết sản phẩm có thể không được biết ngay cả tại thời điểm chèn dữ liệu. Tuy nhiên, theo quy tắc nhất quán và toàn vẹn dữ liệu, các cột trong bản ghi thường phải chứa một giá trị. Việc lưu trữ các giá trị null vào các cột như vậy mà giá trị chính xác của dữ liệu không được biết có thể xảy ra một số vấn đề không được như mong muốn.

Trong những trường hợp như vậy, một định nghĩa DEFAULT có thể được cung cấp cho cột để gán nó làm giá trị mặc định nếu không có giá trị nào được đưa ra tại thời điểm tạo. Ví dụ: thường chỉ định số 0 làm mặc định cho cột số.

Định nghĩa DEFAULT cho một cột có thể được tạo tại thời điểm tạo bảng hoặc được thêm ở giai đoạn sau vào bảng hiện thời. Khi định nghĩa DEFAULT được thêm vào cột hiện có trong bảng, SQL Server chỉ áp dụng các giá trị mặc định mới cho những hàng dữ liệu mới được thêm vào bảng.

Ví dụ, câu lệnh CREATE TABLE sử dụng từ khóa DEFAULT để định nghĩa giá trị default cho cột Price

CREATE TABLE StoreProduct (ProductID int NOT NULL, Name varchar(40) NOT NULL, Price money NOT NULL DEFAULT(100))

Khi row được thêm vào bằng dòng lệnh phía dưới, cột Price sẽ có giá trị mặc định là 100 trong trường hợp không nhập giá trị.

INSERT INTO dbo.StoreProduct (ProductID,Name) VALUES (111,'Laptop Dell 5450')
SELECT * FROM dbo.StoreProduct
GO

Một số dạng cột không thể định nghĩa DEFAULT definitions:

  • A timestamp data type
  • Cột có thuộc tính IDENTITY hoặc ROWGUIDCOL

IDENTITY Property (thuộc tính IDENTITY)

Thuộc tính IDENTITY của SQL Server được sử dụng để tạo các cột định danh có thể chứa các giá trị tuần tự được tạo tự động để xác định duy nhất từng hàng trong bảng. Ví dụ, một cột định danh có thể được tạo để tự động tạo các số đăng ký sinh viên duy nhất bất cứ khi nào các hàng mới được chèn vào bảng Sinh viên. Số nhận dạng cho hàng đầu tiên được chèn vào bảng được gọi là giá trị hạt giống (seed). Phần gia tăng (increment), còn được gọi là thuộc tính Gia tăng danh tính, được cộng thêm vào hạt giống (seed) để tạo thêm giá trị nhận dạng được SQL Server tự động tạo bằng cách thêm phần gia tăng vào hạt giống. Một cột nhận dạng thường được sử dụng cho các giá trị khóa chính.

Các cột sử dụng thuộc tính IDENTITY phải là cột mang dữ liệu số nguyên:

  • decimal
  • int
  • numeric
  • smallint
  • bigint
  • tinyint

Cột có thuộc tính IDENTITY không cần thiết phải cso gái trị SEED (hạt giống) và xác định giá trị gia tăng (increment), nếu không xác định thì mặc định giá trị SEED và INCREMENT đều bằng 1.

Cú pháp:

CREATE TABLE <table_name> (column_name data_type IDENTITY(seed_value,increment_value) NOT NULL)

Giải thích:

  • seed_value: giá trị seed bắt đầu khởi tạo giá trị cho identity
  • increment_value: giá trị tăng lên sau mỗi lần cơ sở dữ liệu có bản ghi mới

Ví dụ:

CREATE TABLE HRContactPhone (Person_ID int IDENTITY(500,1) NOT NULL, MobileNumber bigint NOT NULL)

Khi insert dữ liệu vào bảng và select ra:

INSERT INTO HRContactPhone(MobileNumber) VALUES (0911222334)
INSERT INTO HRContactPhone(MobileNumber) VALUES (0934333123)
SELECT * FROM HRContactPhone
GO

Globally Unique Identifier (định danh duy nhất toàn cục)

Ngoài thuộc tính identity, SQL Server cũng hỗ trợ các số nhận dạng duy nhất trên toàn cầu. Thông thường, trong môi trường được nối mạng, nhiều bảng có thể yêu cầu phải có một cột bao gồm một giá trị duy nhất chung trên toàn cầu. Hãy xem xét một tình huống trong đó dữ liệu từ nhiều hệ thống cơ sở dữ liệu như cơ sở dữ liệu ngân hàng phải được hợp nhất tại một vị trí duy nhất. Khi dữ liệu từ khắp nơi trên thế giới được đối chiếu tại cơ quan trung tâm để tổng hợp và báo cáo, việc sử dụng các giá trị duy nhất trên toàn cầu sẽ ngăn khách hàng ở các quốc gia khác nhau có cùng số tài khoản ngân hàng hoặc ID khách hàng. Để giải quyết vấn đề này, máy chủ SQL cung cấp các cột định danh duy nhất trên toàn cầu. Chúng có thể được tạo cho mỗi bảng chứa các giá trị duy nhất trên tất cả các máy tính trong mạng. Chỉ trên cột định danh và một cột định danh duy nhất trên toàn cầu mới có thể được tạo cho mỗi bảng. Để tạo và làm việc với các số nhận dạng duy nhất trên toàn cầu, sự kết hợp của ROWGUIDCOL, uniqueidentifier và các hàm NEWID() được sử dụng để tạo ra định danh.

Ví dụ:

CREATE TABLE Emp_CellularPhone(Person_ID uniqueidentifier DEFAULT NEWID() NOT NULL, PersonName varchar(60) NOT NULL)

Sau đó, đưa dữ liệu vào bảng:

INSERT INTO Emp_CellularPhone(PersonName) VALUES ('William Smith')
SELECT * FROM Emp_CellularPhone
GO
Kết quả khi lấy dữ liệu ra

Bài viết liên quan:

Triển Khai Ứng Dụng Web Và Ứng Dụng Azure App Service
Triển Khai Quản Lý Lưu Lượng Và Chiến Lược Giám Sát Cho Dịch Vụ Web
CI/CD
Thực Hiện Dịch Vụ Web Và Quản Lý API Trên AZURE
Giới Thiệu Về Dịch Vụ WCF
Hosting Và Tiêu Thụ Web API
Các Tính Năng Bảo Mật Của AZURE
API VÀ API Restful Dành Cho Ứng Dụng Doanh Nghiệp
Tổng Quan về API Web
Làm Việc Với Dữ Liệu Trong Ứng Dụng AZURE
Cơ Chế Truy Cập Dữ Liệu Trong Azure
Azure Monitoring

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Một số cải tiến trong ASP.NET Core, Razor Page, Model Binding, Gabbage collection

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×