Skip to main content

6. Creating Tables

Download Slide

Categories​

Cấu trúc bảng​

IdColumn NameData TypeNullKeyDefaultConstraint
1IdintPKAUTONUMBER
2Namenvarchar(50)UNIQUE
3Descriptionnvarchar(500)yes

Script T-SQL​

Create table [Categories]
CREATE TABLE [dbo].[Categories] (
[Id] INT IDENTITY(1,1) NOT NULL,
[Name] NVARCHAR(50) NOT NULL,
[Description] NVARCHAR(500) NULL,
);
GO
Create PRIMARY KEY
ALTER TABLE [dbo].[Categories]
ADD CONSTRAINT [PK_Categories] PRIMARY KEY ([Id]);
GO
Create UNIQUE KEY (Name))
ALTER TABLE [dbo].[Categories]
ADD CONSTRAINT [UQ_Categories_Name] UNIQUE ([Name]);
GO

Các câu lệnh DML​

Insert data
INSERT INTO [dbo].[Categories] ([Name], [Description])
VALUES
(N'CPU', N'Chip xử lý'),
(N'HDD', N'Ổ cứng'),
(N'RAM', N'Bộ nhớ'),
(N'VGA', N'Card đồ họa'),
(N'Monitor', N'Màn hình'),
(N'Keyboard', N'Bàn phím'),
(N'Mouse', N'Chuột'),
(N'Printer', N'Máy in'),
(N'UPS', N'Nguồn'),
(N'Headphone', N'Tai nghe');
GO
Update data
UPDATE [dbo].[Categories]
SET [Description] = N'Điện thoại di động'
WHERE [Name] = N'Điện thoại';
GO
Delete data
DELETE FROM [dbo].[Categories]
WHERE [Name] = N'Điện thoại';
GO

Suppliers​

Cấu trúc bảng​

IdColumn NameData TypeNullKeyDefaultConstraint
1IdintPKAUTONUMBER
2Namenvarchar(100)
3Emailvarchar(50)UNIQUE
4PhoneNumbervarchar(50)UNIQUE
5Addressnvarchar(500)

Script T-SQL​

Create table [Suppliers]
CREATE TABLE [dbo].[Suppliers] (
[Id] INT IDENTITY(1,1) NOT NULL,
[Name] NVARCHAR(100) NOT NULL,
[Email] VARCHAR(50) NOT NULL,
[PhoneNumber] VARCHAR(50) NOT NULL,
[Address] NVARCHAR(500) NOT NULL,
);
GO
Create PRIMARY KEY
ALTER TABLE [dbo].[Suppliers]
ADD CONSTRAINT [PK_Suppliers] PRIMARY KEY ([Id]);
GO
Create UNIQUE KEY (Email)
ALTER TABLE [dbo].[Suppliers]
ADD CONSTRAINT [UQ_Suppliers_Email] UNIQUE ([Email]);
GO
Create UNIQUE KEY (PhoneNumber)
ALTER TABLE [dbo].[Suppliers]
ADD CONSTRAINT [UQ_Suppliers_PhoneNumber] UNIQUE ([PhoneNumber]);
GO

Các câu lệnh DML​

Insert data
INSERT INTO [dbo].[Suppliers] ([Name], [Email], [PhoneNumber], [Address])
VALUES
(N'SONY', 'contact@sony.com', '0123456788', N'Japan'),
(N'APPLE', 'contact@apple.com', '0123456789', N'USA'),
(N'SAMSUNG', 'contact@samsung.com', '321456765', N'Unknown');
GO
Update data
UPDATE [dbo].[Suppliers]
SET [Address] = N'Korea'
WHERE [Name] = N'SAMSUNG';
GO
Delete data
DELETE FROM [dbo].[Suppliers]
WHERE [Name] = N'SAMSUNG';
GO

Customers​

Cấu trúc bảng​

IdColumn NameData TypeNullKeyDefaultConstraint
1IdintPKAUTONUMBER
2FirstNamenvarchar(50)
3LastNamenvarchar(50)
4Emailvarchar(50)UNIQUE
5PhoneNumbervarchar(50)UNIQUE
6Addressnvarchar(500)
7Birthdaydatetimeyes

Script T-SQL​

Create table [Customers]
CREATE TABLE [dbo].[Customers] (
[Id] INT IDENTITY(1,1) NOT NULL,
[FirstName] NVARCHAR(50) NOT NULL,
[LastName] NVARCHAR(50) NOT NULL,
[Email] VARCHAR(50) NOT NULL,
[PhoneNumber] VARCHAR(50) NOT NULL,
[Address] NVARCHAR(500) NOT NULL,
[Birthday] DATETIME NULL,
);
GO
Create PRIMARY KEY
ALTER TABLE [dbo].[Customers]
ADD CONSTRAINT [PK_Customers] PRIMARY KEY ([Id]);
GO
Create UNIQUE KEY (Email)
ALTER TABLE [dbo].[Customers]
ADD CONSTRAINT [UQ_Customers_Email] UNIQUE ([Email]);
GO
Create UNIQUE KEY (PhoneNumber)
ALTER TABLE [dbo].[Customers]
ADD CONSTRAINT [UQ_Customers_PhoneNumber] UNIQUE ([PhoneNumber]);
GO

Các câu lệnh DML​

Insert data
INSERT INTO [dbo].[Customers] (
[FirstName],
[LastName],
[Email],
[PhoneNumber],
[Address],
[Birthday]
)
VALUES
(N'Nguyễn', N'Văn A', 'a@gmail.com', '0123456789', N'Việt Nam', '1990-11-21'),
(N'Nguyễn', N'Văn B', 'b@gmail.com', '0123456788', N'Việt Nam', '1990-05-18');
GO
Update data
UPDATE [dbo].[Customers]
SET [Address] = N'Korea'
WHERE [FirstName] = N'Nguyễn' AND [LastName] = N'Văn B';
GO
Delete data
DELETE FROM [dbo].[Customers]
WHERE [Email] = 'a@gmail.com'
GO

Employees​

Cấu trúc bảng​

IdColumn NameData TypeNullKeyDefaultConstraint
1IdintPKAUTONUMBER
2FirstNamenvarchar(50)
3LastNamenvarchar(50)
4Emailvarchar(50)UNIQUE
5PhoneNumbervarchar(50)UNIQUE
6Addressnvarchar(500)
7Birthdaydatetimeyes

Script T-SQL​

Create table [Employees]
CREATE TABLE [dbo].[Employees] (
[Id] INT IDENTITY(1,1) NOT NULL,
[FirstName] NVARCHAR(50) NOT NULL,
[LastName] NVARCHAR(50) NOT NULL,
[Email] VARCHAR(50) NOT NULL,
[PhoneNumber] VARCHAR(50) NOT NULL,
[Address] NVARCHAR(500) NOT NULL,
[Birthday] DATETIME NULL,
);
GO
Create PRIMARY KEY
ALTER TABLE [dbo].[Employees]
ADD CONSTRAINT [PK_Employees] PRIMARY KEY ([Id]);
GO
Create UNIQUE KEY (Email)
ALTER TABLE [dbo].[Employees]
ADD CONSTRAINT [UQ_Employees_Email] UNIQUE ([Email]);
GO
Create UNIQUE KEY (PhoneNumber)
ALTER TABLE [dbo].[Employees]
ADD CONSTRAINT [UQ_Employees_PhoneNumber] UNIQUE ([PhoneNumber]);
GO

Các câu lệnh DML​

Insert data
INSERT INTO [dbo].[Employees] (
[FirstName],
[LastName],
[Email],
[PhoneNumber],
[Address],
[Birthday]
)
VALUES
(N'Nguyễn', N'Văn A', 'aa@gmail.com', '0123456333', N'Việt Nam', '1990-11-22'),
(N'Trần', N'Thị B', 'bb@gmail.com', '0123456000', N'Việt Nam', '1990-10-01')
GO
Update data
UPDATE [dbo].[Employees]
SET [Address] = N'Korea'
WHERE [FirstName] = N'Nguyễn' AND [LastName] = N'Văn A';
GO
Delete data
DELETE FROM [dbo].[Employees]
WHERE [Email] = 'bb@gmail.com';
GO

Products​

Cấu trúc bảng​

IdColumn NameData TypeNullKeyDefaultConstraint
1IdintPKAUTONUMBER
2Namenvarchar(100)
3Pricemoneyn > 0
4Discountdecimal(18,2)00 <= n <= 90
5Stockdecimal(18,2)0n >= 0
6Descriptionnvarchar(max)yes
7CategoryIdintFKRefrence to Categories (Id)
8SupplierIdintFKRefrence to Suppliers (Id)

Script T-SQL​

Create table [Products]
CREATE TABLE [dbo].[Products] (
[Id] INT IDENTITY(1,1) NOT NULL,
[Name] NVARCHAR(100) NOT NULL,
[Price] MONEY NOT NULL,
[Discount] DECIMAL(18,2) NOT NULL,
[Stock] DECIMAL(18,2) NOT NULL,
[Description] NVARCHAR(MAX) NULL,
[CategoryId] INT NOT NULL,
[SupplierId] INT NOT NULL,
);
GO
Create PRIMARY KEY
ALTER TABLE [dbo].[Products]
ADD CONSTRAINT [PK_Products] PRIMARY KEY ([Id]);
GO
Create FOREIGN KEY (CategoryId)
ALTER TABLE [dbo].[Products]
ADD CONSTRAINT [FK_Products_Categories] FOREIGN KEY ([CategoryId]) REFERENCES [dbo].[Categories] ([Id]);
GO
Create FOREIGN KEY (SupplierId)
ALTER TABLE [dbo].[Products]
ADD CONSTRAINT [FK_Products_Suppliers] FOREIGN KEY ([SupplierId]) REFERENCES [dbo].[Suppliers] ([Id]);
GO
Create CHECK (Price > 0)
ALTER TABLE [dbo].[Products]
ADD CONSTRAINT [CK_Products_Price] CHECK ([Price] > 0);
GO
Create CHECK (Discount >= 0 AND Discount <= 90)
ALTER TABLE [dbo].[Products]
ADD CONSTRAINT [CK_Products_Discount] CHECK ([Discount] >= 0 AND [Discount] <= 90);
GO
Create CHECK (Stock >= 0)
ALTER TABLE [dbo].[Products]
ADD CONSTRAINT [CK_Products_Stock] CHECK ([Stock] >= 0);
GO

Các câu lệnh DML​

Insert data
INSERT INTO [dbo].[Products] (
[Name],
[Price],
[Discount],
[Stock],
[Description],
[CategoryId],
[SupplierId]
)
VALUES
(N'Product 1', 100000, 10, 100, N'Product 1', 1, 1),
(N'Product 2', 200000, 20, 200, N'Product 2', 2, 2),
(N'Product 3', 300000, 30, 300, N'Product 3', 3, 3),
(N'Product 4', 400000, 40, 400, N'Product 4', 4, 4)
GO;
Update data
UPDATE [dbo].[Products]
SET [Description] = N'Product 1 updated'
WHERE [Name] = N'Product 1';
GO
Delete data
DELETE FROM [dbo].[Products]
WHERE [Name] = N'Product 1';
GO

Orders​

Cấu trúc bảng​

IdColumn NameData TypeNullKeyDefaultConstraint
1IdintPKAUTONUMBER
2CreatedDatedatetimeNOW
3ShippedDatedatetimeyesn < CreatedDate
4Statusvarchar(50)WAITINGn in [WAINTING, COMPLETED, CANCELED]
5Descriptionnvarchar(max)
6ShippingAddressnvarchar(500)yes
7ShippingCitynvarchar(50)
8PaymentTypevarchar(20)CASHn in [CASH, CREDIT CARD]
9CustomerIdintFKRefrence to Customers (Id)
10EmployessIdintFKRefrence to Employees (Id)

Script T-SQL​

Create table [Orders]
CREATE TABLE [dbo].[Orders] (
[Id] INT IDENTITY(1,1) NOT NULL,
[CreatedDate] DATETIME NOT NULL,
[ShippedDate] DATETIME NULL,
[Status] VARCHAR(50) NOT NULL,
[Description] NVARCHAR(MAX) NULL,
[ShippingAddress] NVARCHAR(500) NULL,
[ShippingCity] NVARCHAR(50) NOT NULL,
[PaymentType] VARCHAR(20) NOT NULL,
[CustomerId] INT NOT NULL,
[EmployessId] INT NOT NULL,
);

GO
Create PRIMARY KEY
ALTER TABLE [dbo].[Orders]
ADD CONSTRAINT [PK_Orders] PRIMARY KEY ([Id]);
GO
Create FOREIGN KEY (CustomerId)
ALTER TABLE [dbo].[Orders]
ADD CONSTRAINT [FK_Orders_Customers] FOREIGN KEY ([CustomerId]) REFERENCES [dbo].[Customers] ([Id]);
GO
Create FOREIGN KEY (EmployessId)
ALTER TABLE [dbo].[Orders]
ADD CONSTRAINT [FK_Orders_Employees] FOREIGN KEY ([EmployessId]) REFERENCES [dbo].[Employees] ([Id]);
GO
Create CHECK (Status in [WAITING, COMPLETED, CANCELED])
ALTER TABLE [dbo].[Orders]
ADD CONSTRAINT [CK_Orders_Status] CHECK ([Status] IN ('WAITING', 'COMPLETED', 'CANCELED'));
GO
Create CHECK (PaymentType in [CASH, CREDIT CARD])
ALTER TABLE [dbo].[Orders]
ADD CONSTRAINT [CK_Orders_PaymentType] CHECK ([PaymentType] IN ('CASH', 'CREDIT CARD'));
GO
Create CHECK (ShippedDate < CreatedDate)
ALTER TABLE [dbo].[Orders]
ADD CONSTRAINT [CK_Orders_ShippedDate] CHECK ([ShippedDate] < [CreatedDate]);
GO

Các câu lệnh DML​

Insert data
INSERT INTO [dbo].[Orders] (
[CreatedDate],
[ShippedDate],
[Status],
[Description],
[ShippingAddress],
[ShippingCity],
[PaymentType],
[CustomerId],
[EmployessId]
)
VALUES
(GETDATE(), GETDATE(), 'WAITING', N'Order 1', N'Address 1', N'City 1', 'CASH', 1, 1),
(GETDATE(), GETDATE(), 'WAITING', N'Order 2', N'Address 2', N'City 2', 'CASH', 2, 2),
(GETDATE(), GETDATE(), 'WAITING', N'Order 3', N'Address 3', N'City 3', 'CASH', 3, 3),
(GETDATE(), GETDATE(), 'WAITING', N'Order 4', N'Address 4', N'City 4', 'CASH', 4, 4);
GO
Update data
UPDATE [dbo].[Orders]
SET [Description] = N'Order 1 updated'
WHERE [Id] = 1;
GO
Delete data
DELETE FROM [dbo].[Orders]
WHERE [Id] = 1;
GO

Order Details​

Cấu trúc bảng​

IdColumn NameData TypeNullKeyDefaultConstraint
1OrderIdintPK + FKRefrence to Orders (Id)
2ProductIdintPK + FKRefrence to Products (Id)
3Quantitydecimal(18,2)n < 0
4Discountdecimal(18,2)WAITING0 <= n <=90

Script T-SQL​

Create table [OrderDetails]
CREATE TABLE [dbo].[OrderDetails] (
[OrderId] INT NOT NULL,
[ProductId] INT NOT NULL,
[Quantity] DECIMAL(18,2) NOT NULL,
[Discount] DECIMAL(18,2) NOT NULL,
);
GO
Create PRIMARY KEY
ALTER TABLE [dbo].[OrderDetails]
ADD CONSTRAINT [PK_OrderDetails] PRIMARY KEY ([OrderId], [ProductId]);
GO
Create FOREIGN KEY (OrderId)
ALTER TABLE [dbo].[OrderDetails]
ADD CONSTRAINT [FK_OrderDetails_Orders] FOREIGN KEY ([OrderId]) REFERENCES [dbo].[Orders] ([Id]);
GO
Create FOREIGN KEY (ProductId)
ALTER TABLE [dbo].[OrderDetails]
ADD CONSTRAINT [FK_OrderDetails_Products] FOREIGN KEY ([ProductId]) REFERENCES [dbo].[Products] ([Id]);
GO
Create CHECK (Quantity >= 0)
ALTER TABLE [dbo].[OrderDetails]
ADD CONSTRAINT [CK_OrderDetails_Quantity] CHECK ([Quantity] >= 0);
GO
Create CHECK (Discount >= 0 AND Discount <= 90)
ALTER TABLE [dbo].[OrderDetails]
ADD CONSTRAINT [CK_OrderDetails_Discount] CHECK ([Discount] >= 0 AND [Discount] <= 90);
GO

Các câu lệnh DML​

Insert data
INSERT INTO [dbo].[OrderDetails] (
[OrderId],
[ProductId],
[Quantity],
[Discount]
)
VALUES
(1, 1, 1, 0),
(2, 2, 2, 0),
(3, 3, 3, 0),
(4, 4, 4, 0);
GO
Update data
UPDATE [dbo].[OrderDetails]
SET [Quantity] = 2
WHERE [OrderId] = 1 AND [ProductId] = 1;
GO
Delete data
DELETE FROM [dbo].[OrderDetails]
WHERE [OrderId] = 1 AND [ProductId] = 1;
GO