Tổng quan về các thành phần DML, DDL, và DCL của SQL Pat Moffatt, Giám đốc Chương trình quản lý thông tin, Sáng kiến học đường, IBM Bruce Creighton, Chuyên viên lập kế hoạch các phần kỹ năng, IBM Jessica Cao, Chuyên viên phát triển các công cụ đào tạo, IBM Tóm tắt: Hướng dẫn này, Phần 6 của loạt bài hướng dẫn SQL & XQuery cho IBM DB2 , phát triển theo ngôn ngữ xử lý dữ liệu (DML) và giới thiệu ngôn ngữ định nghĩa dữ liệu (DDL) và ngôn ngữ kiểm soát dữ liệu (DCL). Nó cũng...
Hướng dẫn SQL & XQuery cho IBM DB2, Phần 6: Ngôn ngữ định nghĩa liệu ngôn ngữ kiểm soát liệu Tổng quan thành phần DML, DDL, DCL SQL Pat Moffatt, Giám đốc Chương trình quản lý thơng tin, Sáng kiến học đường, IBM Bruce Creighton, Chuyên viên lập kế hoạch phần kỹ năng, IBM Jessica Cao, Chuyên viên phát triển công cụ đào tạo, IBM Tóm tắt: Hướng dẫn này, Phần loạt hướng dẫn SQL & XQuery cho IBM DB2 , phát triển theo ngôn ngữ xử lý liệu (DML) giới thiệu ngôn ngữ định nghĩa liệu (DDL) ngơn ngữ kiểm sốt liệu (DCL) Nó bàn luận đến lệnh SQL khác lệnh SELECT Trước bạn bắt đầu Về loạt Loạt hướng dẫn dạy chủ đề SQL từ đến nâng cao chủ đề XQuery Nó cách diễn đạt câu hỏi nghiệp vụ thường gặp truy vấn sở liệu sử dụng câu truy vấn SQL hay câu truy vấn XQuery Những người phát triển ứng dụng người quản trị sở liệu sử dụng hướng dẫn để nâng cao kỹ truy vấn sở liệu Các thành viên tham gia sáng kiến học đường IBM sử dụng loạt hướng dẫn phần chương trình giảng dạy sở liệu họ Loạt hướng dẫn cách diễn đạt câu hỏi kinh doanh thường gặp truy vấn sở liệu sử dụng SQL hay XQuery Tất ví dụ dựa Aroma, sở liệu mẫu chứa liệu doanh thu sản phẩm cà phê chè bán cửa hàng khắp nước Mỹ Mỗi ví dụ gồm có ba phần: Một câu hỏi kinh doanh dạng ngôn ngữ thường ngày Một nhiều ví dụ truy vấn, biểu diễn SQL hay XQuery Một bảng kết trả từ sở liệu Hướng dẫn thiết kế phép học viên học tập ngôn ngữ SQL XQuery Cũng học khác, việc bổ sung thêm tập thực hành quan trọng Dữ liệu định nghĩa bảng tạo điều kiện thuận lợi cho tập thực hành Đối với sinh viên sử dụng tài liệu phần khoá học, nhận từ thầy hướng dẫn dẫn để kết nối tới sở liệu Aroma tìm hiểu khác biệt hướng dẫn cài đặt máy cục Cảm ơn bạn lựa chọn IBM® DB2® để nghiên cứu máy chủ liệu lai, phục vụ liệu với hai cấu trúc: cấu trúc quan hệ khiết lẫn cấu trúc pureXML Hướng dẫn viết cho Express-C DB2 Linux®, UNIX®, Windows® Về hướng dẫn Tất phần trước loạt tập trung vào lệnh SELECT Hướng dẫn giới thiệu thành phần lệnh khác SQL, bao gồm: CREATE TABLE INSERT UPDATE DELETE ALTER TABLE CREATE VIEW CREATE INDEX DROP TABLE GRANT REVOKE Kết nối tới sở liệu Bạn cần kết nối tới sở liệu trước sử dụng câu lệnh SQL để truy vấn hay xử lý liệu Lệnh CONNECT kết hợp kết nối sở liệu với tên người sử dụng Đối với loạt này, tên sở liệu aromadb (Nếu bạn sinh viên sử dụng phần phần khố học, thơng qua thầy hướng dẫn để tìm tên sở liệu bạn cần nối tới.) Để kết nối tới sở liệu aromadb, gõ lệnh sau vào xử lý dòng lệnh DB2: CONNECT TO aromadb USER userid USING password Đối với sinh viên sử dụng phần phần khoá học, thay "userid" "password" số ID mật người sử dụng mà bạn nhận từ thầy hướng dẫn Nếu máy khơng hỏi userid password cần gõ vào lệnh sau đây: CONNECT TO aromadb Thông điệp sau báo cho bạn biết tạo kết nối thành công: Database Connection Information Database server = DB2/NT 9.0.0 SQL authorization ID = USERID Local database alias = AROMADB Khi kết nối được, bạn bắt đầu sử dụng sở liệu Các thành phần SQL SQL gồm có ba thành phần: ngơn ngữ xử lý liệu (DML), ngôn ngữ định nghĩa liệu (DDL) ngôn ngữ kiểm soát liệu (DCL) DML gồm lệnh SELECT, UPDATE, INSERT, DELETE; DDL gồm lệnh CREATE, ALTER, DROP ; ngơn ngữ kiểm sốt gồm có lệnh GRANT REVOKE Thành phần SQL Lệnh Mô tả SELECT Thường dùng để hiển thị kết truy vấn UPDATE Thường dùng để thay đổi giá trị có bảng UPDATE ảnh hưởng đến liệu mức cột INSERT Thường dùng để thêm hàng vào bảng INSERT ảnh hưởng đến liệu mức hàng DELETE Thường dùng để xóa hàng khỏi bảng DELETE ảnh hưởng đến liệu mức hàng CREATE TABLE Thường dùng để tạo bảng ALTER Thường dùng để thêm, điều chỉnh DML DDL TABLE hay bỏ cột CREATE VIEW Thường dùng để tạo khung nhìn CREATE INDEX Thường dùng để tạo số DROP TABLE Thường dùng để xóa bảng GRANT Thường dùng để cấp quyền cho người sử dụng sở liệu DCL Thường dùng để hủy bỏ quyền REVOKE người sử dụng sở liệu Các lưu ý cách dùng Các hướng dẫn trước loạt bàn lệnh SELECT Đó lệnh người dùng cuối sử dụng nhiều Một số lệnh, CREATE, GRANT, REVOKE, cần phải có quyền quản trị để thực lệnh Với tư cách người sử dụng, bạn hay khơng thể phép chạy lệnh Lệnh CREATE TABLE Câu hỏi Bộ phận tiếp thị bắt đầu giới thiệu chương trình thành viên để làm tăng doanh thu Các khách hàng mua "Gold Card" (Thẻ Vàng) hưởng chiết khấu, q tặng miễn phí thơng tin qua email hoạt động khuyến mại khác Mỗi cửa hàng cung cấp thẻ ghi số trước Tạo bảng sở liệu Aroma gọi Gold để lưu giữ thơng tin khách hàng Gold Card Nó cần phải có cột để chứa giá trị số nhận dạng (ID) thẻ nhất, khóa cửa hàng, họ, tên, email, trạng thái Ví dụ truy vấn CREATE TABLE aroma.gold (card_id SMALLINT NOT NULL PRIMARY KEY, storekey INTEGER NOT NULL, fname VARCHAR(20) NOT NULL, lname VARCHAR(20) NOT NULL, email VARCHAR(30), status VARCHAR(10) NOT NULL, FOREIGN KEY (storekey) REFERENCES aroma.store (storekey)); Kết Bạn thực lệnh SELECT để xem kết lệnh CREATE TABLE SELECT * FROM aroma.gold; Card_id Storekey Fname Lname Email Status Cú pháp lệnh CREATE TABLE CREATE TABLE table_name (column_name1 column_descrpition, column_name2 column_descrpition, column_name3 column_descrpition, , [FOREIGN KEY (column_name) REFERENCES table_name2 (column_name2)] ); Về truy vấn Truy vấn sử dụng lệnh CREATE TABLE để xây dựng bảng có tên Gold sở liệu Aroma Lệnh CREATE phải bắt đầu với từ CREATE Từ thứ hai nói cho DB2 biết tạo kiểu đối tượng (ở bảng - table), từ thứ ba đặt tên đối tượng (Gold) Phần nằm dấu ngoặc đơn vùng mô tả cột để định nghĩa cột Mọi cột phải gán ba phần: tên cột, kiểu liệu, đặc tính NULL Mệnh đề PRIMARY KEY tùy chọn Nó bảo đảm chắn giá trị cột card_id hai thẻ có số ID Mệnh đề FOREIGN KEY tùy chọn Nó liên kết cột storekey bảng Gold với cột storekey bảng Store Điều bảo đảm chắn khóa cửa hàng (store key) tồn hợp lệ hai cột chứa giá trị có kiểu liệu Để biết chi tiết lệnh CREATE TABLE , tìm Trung tâm thông tin DB2 (xem Tài nguyên) Trung tâm giới thiệu Phần loạt Tên cột Các bảng cột phải theo quy ước đặt tên DB2: Ký tự tên bảng phải ký tự chữ hay ký hiệu quốc gia Chúng bao gồm chữ A - Z, ký hiệu Đôla ($), ký hiệu (@), ký hiệu số (#) Các ký tự chứa tổ hợp ký tự chữ cái, chữ số 09, dấu gạch chân (_) Trong hầu hết trường hợp, dấu gạch chân sử dụng dấu phân tách trực quan Chiều dài tên bảng/ cột thay đổi tùy theo hệ thống Xin vui lòng xem SQL Reference Guide (Hướng dẫn Tham khảo SQL) đặc thù riêng (xem Resources) Kiểu liệu Một cột phải lưu trữ giá trị kiểu liệu cụ thể Numbers Tất số có dấu độ xác Độ (Các số) xác số bit hay chữ số, trừ dấu Các số gồm có SMALLINT, INTEGER, BIGINT, REAL, DOUBLE DECIMALS Một chuỗi ký tự) Một chuỗi ký tự chuỗi byte Chiều dài chuỗi số lượng byte chuỗi Nếu Character chiều dài không, giá trị gọi chuỗi rỗng string (Chuỗi Các chuỗi ký tự gồm có chuỗi ký tự có chiều dài cố định ký tự) chuỗi ký tự có chiều dài thay đổi (VARCHAR, LONG VARCHAR, CLOB) Một chuỗi đồ họa Một chuỗi đồ họa chuỗi Graphic string (Chuỗi liệu ký tự hai byte Chuỗi đồ họa gồm có chuỗi đồ họa có chiều dài cố định chuỗi đồ họa có chiều dài thay đổi đồ họa) (Chuỗi nhị phân) Một chuỗi nhị phân Một chuỗi nhị phân chuỗi byte Nó thường dùng để chứa liệu khơng truyền thống, hình ảnh Đối tượng lớn nhị phân (BLOB) chuỗi nhị phân Xem đối tượng lớn (LOBs) để biết thêm thông tin Datetime values (Các giá trị ngày giờ) Các giá trị kiểu ngày biểu diễn Date (ngày tháng), Time (thời giờ) Timestamp (thời ấn) (là chuỗi ký tự 14 ký số biểu diễn ngày tháng thời hợp lệ dạng yyyyxxddhhmmss) Các giá trị kiểu ngày sử dụng số phép toán số học phép toán chuỗi định tương thích với số chuỗi ký tự định; nhiên, chúng chuỗi ký tự mà không số Các giá trị kiểu ngày gồm có Date,Time, Timestamp Giá trị null giá trị đặc biệt, khác với tất giá trị Null value khác null Nó có nghĩa khơng có mặt giá trị (Giá trị null) khác cột dòng xét Giá trị null tồn với tất kiểu liệu XML DB2 máy chủ sở liệu lai giới cho phép quản lý liệu theo mô hình quan hệ mơ hình pureXML DB2 đưa chế tối ưu để lưu tữ liệu XML với chế quan hệ vốn có Để biết chi tiết kiểu liệu, xem lại Phần1 loạt Đặc tính NULL Tất Card_id, storekey, fname, lname định nghĩa giá trị không null (NOT NULL) chúng thông tin quan trọng mà hàng phải có Đối với bảng này, hàng khơng có card_id vô nghĩa ngôn ngữ định nghĩa liệu ngơn ngữ kiểm sốt liệu Nếu đặc tính null bị bỏ qua, NULL theo mặc định Email cho phép null khơng phải tất khách hàng có e-mails Họ hưởng chiết khấu quà tặng miễn phí Sau tất cột định nghĩa, khóa khố ngồi định nghĩa Bạn khơng cần rõ khóa mà khóa ngồi tham chiếu đến DB2 biết khóa từ thơng tin danh mục Trước chuyển sang phần tiếp theo, bạn cần vào Trung tâm thơng tin DB2 (xemTài ngun) đọc tồn tài liệu trực tuyến lệnh CREATE TABLE Điều giúp bạn trở nên quen thuộc với định dạng tài liệu trợ giúp xem lại thứ bạn vừa học Lệnh INSERT Câu hỏi Kết Trước ALTER Trước bạn thay đổi kiểu liệu card_id, dùng lệnh SELECT bảng cột hệ thống để xem loại liệu SELECT * FROM sysibm.syscolumns WHERE tbname='GOLD' AND tbcreator='AROMA'; NAME TBNAMETBCREATORREMARKS COLTYPE NULLS CARD_ID GOLD AROMA SMALLINTN EMAIL GOLD AROMA VARCHAR Y FNAME GOLD AROMA VARCHAR N LNAME GOLD AROMA VARCHAR N REFERRALSGOLD AROMA SMALLINT Y STATUS GOLD AROMA VARCHAR N STOREKEY GOLD AROMA INTEGER Ví dụ truy vấn N ALTER TABLE aroma.gold ALTER card_id SET data type INTEGER; Kết Sau ALTER Bảng cột hệ thống cho thấy kiểu liệu sau lệnh ALTER SELECT * FROM sysibm.syscolumns WHERE tbname='GOLD' AND tbcreator='AROMA'; NAME TBNAMETBCREATORREMARKS COLTYPE NULLS CARD_ID GOLD AROMA INTEGER N EMAIL GOLD AROMA VARCHAR Y FNAME GOLD AROMA VARCHAR N LNAME GOLD AROMA VARCHAR N REFERRALSGOLD AROMA SMALLINTY STATUS AROMA VARCHAR N GOLD STOREKEY GOLD AROMA INTEGER N Chú ý: Một số cột bị cắt cho vừa với trang Cú pháp lệnh ALTER TABLE ALTER TABLE table_name ALTER column_name SET data type new_definition; Về truy vấn Truy vấn thay đổi kiểu liệu card_id thành INTEGER, để hỗ trợ số nguyên lên đến 10 chữ số Ngoài ra, ý giá trị NULL cho cột referrals thêm vào Y, với ý nghĩa có giá trị null Chúng ta khơng rõ đặc tính null cho cột tạo cột Để biết chi tiết bảng hệ thống, xem Phần loạt này: "Metadata." Câu hỏi Hệ thống referral không mang lại kết hợp lý hay ý kiến ủng hộ khách hàng Công ty định kết thúc chương trình Hãy loại bỏ cột referrals Ví dụ truy vấn ALTER TABLE aroma.gold DROP COLUMN referrals; Kết SELECT * FROM aroma.gold; Card_idStorekey Fname Lname Email Status 1 Ada Alexandercoffee_lover@hotmail.comActive Ben Bowman mmmcoffee@yahoo.com Active CynthiaChen iheartcoffee@gmail.com David Doyle coffee_maniac@msn.com Active Emily Freeman cupAday@hotmail.com Cú pháp lệnh ALTER TABLE ALTER TABLE table_name Active Active DROP COLUMN colum_name; Về truy vấn Truy vấn loại bỏ cột có tên referrals Để biết thêm thơng tin lệnh ALTER TABLE, tìm kiếm Trung tâm thơng tin DB2 ( xem Resources) Lệnh CREATE VIEW Câu hỏi Để bảo vệ riêng tư khách hàng, người sử dụng sở liệu phải không xem cột fname, lname email Hãy tạo khung nhìn (view) bảng Gold chứa cột card_id, storekey, trạng thái Ví dụ truy vấn CREATE VIEW aroma.gold_public(card_id, storekey, status) AS SELECT card_id, storekey, status FROM aroma.gold; Kết SELECT * FROM aroma.gold_public; Card_id Storekey Status 1 Active Active Active Active Active Cú pháp lệnh CREATE VIEW CREATE VIEW view_name(view_column_list) AS SELECT table_column_list FROM table_name; Một danh sách tên cột cho khung nhìn Các tên cột áp dụng tương ứng - với table_column_list lệnh SELECT view_column_list Nếu tên cột không rõ, vùng nhìn thấy sử dụng tên giống cột bảng kết lệnh SELECT table_column_listMột danh sách cột để chọn từ bảng có tên table_name Về truy vấn Một khung nhìn cơng khai bảng Gold tạo để hiển thị thông tin card_id, storekey, trạng thái khách hàng Dòng truy vấn đặt tên cho khung nhìn (gold_public) định nghĩa cột (card_id, storekey, status) Tên gold_public phải bên lược đồ Tên khung nhìn xuất tên bảng khơng chứa liệu Khung nhìn có ba cột gọi card_id, storekey, status, tương ứng với cột card_id, storekey, status từ bảng Gold Dòng thứ hai hàng lệnh SELECT để mô tả giá trị chọn từ bảng Gold Nó chứa mệnh đề ALL, DISTINCT, FROM, WHERE, GROUP BY, HAVING Để biết thêm thông tin lệnh CREATE VIEW , tìm kiếm Trung tâm thơng tin DB2 ( xem Tài nguyên) Lệnh CREATE INDEX Câu hỏi Lệnh SELECT nhiều thời gian để tìm kiếm storekey từ Gold Hãy tạo mục store key để giải vấn đề Kế hoạch truy nhập- Trước Sử dụng mục cải thiện việc thực truy vấn bảng liệu Bạn so sánh việc thực truy vấn khơng có mục có dùng mục xem xét kế hoạch truy nhập Nhập truy vấn sau vào soạn thảo lệnh nhấp chuột vào nút Execute and Access plan Truy vấn thực tạo đồ thị biểu diễn kế hoạch truy nhập truy vấn SELECT * from aroma.gold; Nhấp chuột vào phiếu Access Plan bên soạn thảo lệnh để xem kế hoạch truy nhập DB2 Chú ý việc quét bảng (TBSCAN) thực bảng aroma.gold Hình Kế hoạch truy nhập trước đánh số Ví dụ truy vấn CREATE INDEX aroma.gold_index ON aroma.gold (storekey); RUNSTATS ON TABLE aroma.gold ON ALL COLUMNS; COMMIT WORK; Kết Để nhận thấy cải tiến việc thực truy vấn, nhập lệnh SELECT giống vào trình soạn thảo lệnh , nhấp chuột vào nút Execute and Access plan Hình Kế hoạch truy nhập sau đánh số Cú pháp lệnh CREATE INDEX CREATE INDEX index_name ON table (column_list); RUNSTATS ON TABLE table ON ALL COLUMNS; COMMIT WORK; column_list Một danh sách cột để tạo số Hai dịng sau bảo đảm chắn kết tạo mục phản ánh truy vấn Về truy vấn Truy vấn tạo mục nút storekey bảng aroma.gold để cải tiến hiệu truy vấn, sau thực phép toán bảng aroma.gold để bảo đảm mục DB2 xem xét Do kích thước bảng nhỏ, nên nhận thấy thay đổi hiệu truy vấn tập Mục đích đơn giản trình diễn cách tạo mục, để cải thiện đáng kể hiệu truy vấn cho bảng có số lượng liệu lớn Để biết thêm thông tin lệnh CREATE INDEX, tìm kiếm Trung tâm thơng tin DB2 (xem Tài nguyên) Lệnh DROP TABLE Câu hỏi Dự án Gold Card thành công to lớn Bộ phận tiếp thị định bắt đầu phiên có cải tiến gọi Platinum Card (Thẻ Bạch kim) Sau thời gian, dự án Gold Card hủy bỏ dần bước Hãy loại bỏ bảng Gold Ví dụ truy vấn DROP TABLE aroma.gold; Kết SELECT * FROM sysibm.systables WHERE creator='AROMA'; NAME CREATOR CLASS AROMA DEAL AROMA LINE_ITEMS AROMA MARKET AROMA ORDERS AROMA PERIOD AROMA PRODUCT AROMA PROMOTION AROMA SALES AROMA STORE AROMA SUPPLIER AROMA Về truy vấn Truy vấn loại bỏ bảng Gold khỏi sở liệu Aroma Đây hành động đảo ngược Tất liệu cất giữ bảng bị Để biết chi tiết bảng hệ thống, xem Phần loạt này: "Metadata" Để biết thêm thông tin lệnh DROP TABLE, tìm kiếm Trung tâm thơng tin DB2 (xem Tài ngun) Ngơn ngữ kiểm sốt liệu Thành phần thứ ba SQL ngơn ngữ kiểm sốt liệu (DCL) Trong DCL có lệnh quan trọng GRANT REVOKE Các lệnh kiểm soát người sử dụng có quyền với sở liệu, ví dụ việc chọn hàng, cập nhật bảng, xóa liệu, thay đổi cấu trúc bảng, vân vân Với vai trò khác nhau, người sử dụng thực nhiệm vụ khác cần phải cấp quyền khác Lệnh GRANT Câu hỏi Một người quản trị sở liệu thuê để quản lý bảng Sales cần cấp quyền SELECT, INSERT, UPDATE, DELETE Ví dụ truy vấn GRANT select, insert, update, delete ON aroma.sales TO user02; Cú pháp lệnh GRANT GRANT privilege_list ON table_name TO user_name; Một danh sách quyền cấp cho người sử privilege_listdụng Các giá trị gồm SELECT, INSERT, UPDATE, DELETE ALL PRIVILEGES Về truy vấn Lệnh GRANT dùng để cấp quyền cho người sử dụng sở liệu Truy vấn cấp cho người sử dụng có tên user02 quyền chọn, chèn, cập nhật xóa bảng Sales sở liệu Aroma Lệnh REVOKE Câu hỏi Đã định ghi vào bảng Sales, người quản trị sở liệu khơng thể thay đổi hay xóa ghi Hãy hủy bỏ quyền UPDATE DELETE user02 Ví dụ truy vấn REVOKE update, delete ON aroma.sales FROM user02; Cú pháp lệnh REVOKE REVOKE privilege_list ON table_name FROM user_name; Một danh sách quyền người sử dụng bị hủy bỏ Các giá trị sử dụng bao gồm privilege_list SELECT, INSERT, UPDATE, DELETE, ALL PRIVILEGES Về truy vấn Lệnh REVOKE dùng để hủy bỏ quyền người sử dụng sở liệu Truy vấn hủy bỏ quyền UPDATE DELETE khỏi người sử dụng có tên user02 cho bảng Sales sở liệu Aroma Để biết thêm chi tiết lệnh DCL, tìm kiếm lệnh Trung tâm thông tin DB2 (xem Tài nguyên.) Tóm tắt Hướng dẫn giúp bạn tạo bảng thực hành lệnh ngôn ngữ xử lý liệu (DML), ngôn ngữ định nghĩa liệu (DDL), ngơn ngữ kiểm sốt Lệnh CREATE TABLE dùng để tạo bảng Gold Lệnh INSERT dùng để thêm hàng vào bảng Gold Lệnh UPDATE dùng để sửa đổi hàng bảng Gold Lệnh DELETE sử dụng xóa dịng khỏi bảng Gold Lệnh ALTER TABLE sử dụng để thêm cột, thay đổi kiểu liệu cột xóa cột bảng Gold Lệnh CREATE VIEW dùng để tạo khung nhìn cơng khai bảng Gold, nhìn thấy cột card_id, storekey, status Lệnh CREATE INDEX dùng để cải thiện việc thực truy vấn bảng Gold Lệnh DROP TABLE dùng để loại bỏ bảng Gold Lệnh GRANT dùng để cấp quyền cho người sử dụng bảng Sales Lệnh REVOKE dùng để hủy bỏ quyền khỏi người sử dụng bảng Sales ... Hướng dẫn giúp bạn tạo bảng thực hành lệnh ngôn ngữ xử lý liệu (DML), ngôn ngữ định nghĩa liệu (DDL), ngơn ngữ kiểm sốt Lệnh CREATE TABLE dùng để tạo bảng Gold Lệnh INSERT dùng để thêm hàng vào... 9.0.0 SQL authorization ID = USERID Local database alias = AROMADB Khi kết nối được, bạn bắt đầu sử dụng sở liệu Các thành phần SQL SQL gồm có ba thành phần: ngôn ngữ xử lý liệu (DML), ngôn ngữ định. .. Đối với bảng này, hàng khơng có card_id vơ nghĩa ngôn ngữ định nghĩa liệu ngôn ngữ kiểm sốt liệu Nếu đặc tính null bị bỏ qua, NULL theo mặc định Email cho phép null tất khách hàng có e-mails Họ