Tìm hiểu ngôn ngữ T-SQL(SQL Server) phần Data Definition Language (DDL)
Đăng lúc: 10:09 AM - 15/09/2023 bởi Charles Chung - 674Trong bài viết này tôi sẽ hướng dẫn các bạn sử dụng một số lệnh Data Definition Language (DDL) trong T-SQL để tạo, xóa, sửa cơ sơ dữ liệu, cấu trúc bảng và ràng buộc
1. Giới thiệu cấu trúc database trong SQL Server
Trong SQL Server, ở dạng vật lý thì database được cấu thành bởi 3 loại tệp tin:
- *.mdf là tệp tin dữ liệu chính, 1 database chỉ có duy nhất 1 tệp mdf, mặc định sinh ra khi database được tạo
- *.log là tệp tin lưu log , 1 database có thể tạo nhiều file .log, tối thiểu phải có 1 tệp khi database được
- *.ndf là tệp dữ liệu phụ, 1 database có thể tạo nhiều file .ndf, người dùng có thể tạo hoặc không
Ở dạng logic thì database chứa các bảng và rất nhiều các thành phần khác như view, trigger, store procedure....
2. Tạo, xóa database bằng các lệnh T-SQL
- Cú pháp
CREATE DATABASE DATABASE_NAME
On Primary ( Name=logical_file_name , FileName='os_file_name', Size=size ,
MaxSize=max_size], FileGrowth=growth_increment )
Log On ( Name= logical_file_name, FileName='os_file_name', Size=size,
MaxSize=max_size, FileGrowth= growth_increment )
COLLATE collation_name:
[;]
- Ví dụ
--tạo database có tên StoreManagement với các thông số mặc định
Create database StoreManagement
--tạo database có tên StoreManagement với các thông số chi tiết
Create database StoreManagement
on primary
(
name='StoreManagement_data',
filename='F:\StorageOnline\Database\StoreManagement.mdf',
size = 10MB,
maxsize = 50MB,
filegrowth = 10%
)
log on
(
name='StoreManagement_log',
filename='F:\StorageOnline\Database\StoreManagement.ldf',
size = 2MB,
maxsize = unlimited,
filegrowth = 10%
)
--gọi database StoreManagement để sử dụng--
use StoreManagement
--xóa StoreManagement--
drop database StoreManagement
3. Tạo bảng bằng các lệnh T-SQL
- Cú pháp tạo bảng
CREATE TABLE [database_name] . [ schema_name ] table_name
( { <column_definition> | <computed_column_definition> }
[ <table_constraint> ] [ ,...n ] ) [ ; ]
<column_definition> ::= column_name <data_type>
<data type> ::= [ type_schema_name . ] type_name
<column_constraint> ::= [ CONSTRAINT constraint_name ] { { PRIMARY KEY | UNIQUE }] | [ FOREIGN KEY ] REFERENCES [ schema_name . ] referenced_table_name [ ( ref_column ) ]
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] | CHECK ( logical_expression )
- Ví dụ
/*
VÍ DỤ TẠO BẢNG STORE (KHO LƯU TRỮ)
StoreId: mã kho - khóa chính
StoreName: tên kho
Address:địa chỉ
Phone: điện thoại
Description: mô tả
*/
Create table Store
(
StoreId varchar(8) primary key, -- ràng buộc khóa chính
StoreName nvarchar(128) unique not null, --tạo khóa duy nhất
Address nvarchar(256) not null,
Phone nvarchar(32) unique, --tạo khóa duy nhất
Description nvarchar(512) --mặc định không chỉ ra là null
);
--Thêm dữ liệu mẫu
insert into Store values('KHO1',N'Kho 1 - Lê Thu Trang',N'Đông Lý - Lý Nhân',null,N'Kho đang đóng cửa');
-------Dòng thêm dữ liệu bên dưới sẽ báo lỗi vì giá trị 'Kho 1 - Lê Thu Trang' đã tồn tại rồi
insert into Store values('KHO2',N'Kho 1 - Lê Thu Trang',N'204 Nguyễn Công Thanh - Phủ Lý','02434547654',null);
---------Tạo bảng Category với thuộc tính Identity--------
Create table Category
(
CategoryId int identity(1,5) primary key,
CategoryName nvarchar(200),
OrderNo int,
ParentId int foreign key references Category(CategoryId) null,
);
---------Thêm dữ liệu cho bảng Category
insert into Category values(N'Điện thoại',1,null);
insert into Category values(N'Laptop',2,null);
insert into Category values(N'Giầy Dép',3,1);
insert into Category values(N'Quần áo',4,1);
---------Tạo bảng Brand
Create table Brand
(
BrandId int identity primary key,
BrandName nvarchar(100)
);
---------Thêm dữ liệu cho bảng Brand
insert into Brand values(N'Nhà bè');
insert into Brand values(N'May 10');
insert into Brand values(N'Quảng châu');
insert into Brand values(N'Chưa rõ nguồn gốc');
--Tạo bảng Product với các ràng buộc check, default, foreign key
Create table Product
(
ProductId varchar(16) primary key,
ProductName nvarchar(128),
CategoryId int foreign key references Category(CategoryId) null,
BrandId int foreign key references Brand(BrandId) null,
Picture nvarchar(512),
Price float check (Price>0),
Unit nvarchar(16) default N'Bộ',
Note nvarchar(max)
);
--Thêm dữ liệu cho bảng
insert into Product values('AN001',N'Áo sơ mi',4,2,'',120000,N'Cái',N'');
insert into Product values('BN002',N'Bộ đồ công sở trắng',4,2,'',140000,N'Bộ',N'');
insert into Product values('BN003',N'Bộ đồ công sở kẻ caro',4,2,'',80000,N'Bộ',N'');
insert into Product values('DN334',N'Đầm Bbd Thuỷ Thủ 334',4,3,'',160000,N'Chiếc',N'');
insert into Product values('DN332',N'Đầm Bbd Thuỷ Thủ 332',4,3,'',180000,N'Chiếc',N'');
insert into Product values('QJ119',N'Quần Jean Dài Nữ 13 ( 119)',4,3,'',180000,N'Chiếc',N'');
insert into Product values('AC331',N'Set Caro 331',4,3,'',190000,N'Chiếc',N'');
insert into Product values('QL54',N'Quần Legging Asos Nâng Mông Đen 54',4,3,'',120000,N'Chiếc',N'');
insert into Product values('QD296',N'Quần Dài Đen + Áo Voan 296',4,3,'',145000,N'Chiếc',N'');
insert into Product values('SM449',N'Sơ Mi Chấm Bi Khoét Vai 449',4,3,'',85000,N'Chiếc',N'');
insert into Product values('VN009',N'Ví nữ dài họa tiết gấu da mềm đẹp 009',6,3,'',65000,N'Chiếc',N'');
insert into Product values('VN001',N'Ví forever young đa di năng',6,3,'',65000,N'Chiếc',N'');
insert into Product values('TV103',N'Ví Nữ Mini Da Thật Nhiều Ngăn TV103',6,3,'',500000,N'Chiếc',N'');
insert into Product values('VN209',N'Ví Nữ Ngắn Da Bò Thật Cao Cấp Sáp Dầu Bóng Đẹp Có Dây Kéo Khóa An Toàn Nhỏ Gọn Sang Trọng Thương Hiệu Chính Hãng Banyanu',6,3,'',185000,N'Chiếc',N'');
--------------Tạo bảng với khóa chính gộp từ nhiều cột và có đặt tên
Create table StoreProduct
(
StoreId varchar(8) foreign key references Store(StoreId),
ProductId varchar(16) foreign key references Product(ProductId),
Quantity float,
Note nvarchar(512),
constraint pk_storeid_productid primary key(StoreId,ProductId)
);
--------Thêm dữ liệu
insert into StoreProduct values('KHO1','P0001',10,N'Sẵn hàng');
insert into StoreProduct values('KHO1','QD296',4,N'Sẵn hàng');
insert into StoreProduct values('KHO1','QJ119',10,N'Sẵn hàng');
insert into StoreProduct values('KHO1','SM449',4,N'Sẵn hàng');
insert into StoreProduct values('KHO1','TV103',2,N'Sẵn hàng');
insert into StoreProduct values('KHO2','VN209',30,N'Sẵn hàng');
insert into StoreProduct values('KHO2','AC331',1,N'Sẵn hàng');
----Dòng bên dưới báo lỗi vì cặp dữ liệu KHO1 và QD296 đã tồn tại----
insert into StoreProduct values('KHO1','QD296',2,N'Sẵn hàng');
--Tạo bảng lịch sử nhập xuất với các ràng buộc foreign key, check, default
Create table HistoryProduct
(
HistoryId int identity primary key,
StoreId varchar(8) foreign key references Store(StoreId),
ProductId varchar(16) foreign key references Product(ProductId),
Quantity float check(Quantity>0),
Price float check(Price>=0),
CreateDate date default getdate(),
HistoryType bit,
Note nvarchar(200)
);
--Thêm dữ liệu cho bảng HistoryProduct
insert into HistoryProduct values('KHO1','SM449',10,1200,getdate(),1,N'Nhập trực tiếp từ hãng');
insert into HistoryProduct values('KHO1','TV103',4,1400,getdate(),1,N'Nhập thông qua trung gian');
insert into HistoryProduct values('KHO1','VN209',2,800,getdate(),1,'');
insert into HistoryProduct values('KHO2','AC331',30,1200,getdate(),1,'');
insert into HistoryProduct values('KHO2','P0001',1,1400,getdate(),1,'');
4. Chỉnh sửa bảng bằng các lệnh T-SQL
- Cú pháp đơn giản
ALTER TABLE TABLE_NAME
Add Column <column_name> <data_type>
ALTER TABLE TABLE_NAME
Alter Column <column_name> <data_type_new>
ALTER TABLE TABLE_NAME
Drop Column <column_name>
ALTER TABLE TABLE_NAME
Add constraint <constraint_name> primary key | foreign key | default | check
ALTER TABLE TABLE_NAME
Drop constraint <constraint_name>
- Ví dụ
--Thêm ràng buộc unique cho bảng category
Alter table Category
Add constraint uq_category_categoryname unique(CategoryName)
--Xóa ràng buộc unique trong bảng category
Alter table Category
drop constraint uq_category_categoryname
---Thêm cột CustomerName vào bảng HistoryProduct
Alter table HistoryProduct
Add CustomerName nvarchar(200)
---Sửa cột Note trong bảng HistoryProduct
Alter table HistoryProduct
Alter column Note nvarchar(500)
---Xóa cột CustomerName trong bảng HistoryProduct
Alter table HistoryProduct
Drop column CustomerName
5. Xóa bảng bằng các lệnh T-SQL
- Cú pháp
DROP TABLE TABLE_NAME
- Ví dụ
--Xóa bảng HistoryProduct
Drop table HistoryProduct
KẾT QUẢ SAU KHI TẠO XONG DATABASE VÀ CÁC BẢNG
thay lời cảm ơn!
Các bài cũ hơn
- Tìm hiểu các kiểu dữ liệu phổ biến trong SQL Server (08:34 AM - 15/09/2023)
- Bộ hình nền độ phân giải 4k windows11 tuyệt đẹp (08:12 AM - 25/08/2023)
- Lập trình Front-End là gì? Lập trình Back-End là gì? Lập trình FullStack là gì? (08:24 PM - 23/08/2023)
- Lấy IP Address V4 của máy Client khi truy cập vào Website trong Asp.net Core 6.0 (10:19 PM - 04/08/2023)
- Sử dụng Microsoft Bing Chat AI để lập trình (04:56 PM - 31/07/2023)