http://vietjack.com/mysql/index.jsp Copyright © vietjack.com Xử lý MySQL Các bảng tập hợp kết chứa ghi Đơi khi, cho phép đơi bắt buộc để ngăn chặn Đơi khi, bắt buộc để nhận diện xóa chúng khỏi bảng Chương miêu tả cách ngăn cản liệu xuất bảng cách để gỡ bỏ chúng Ngăn cản xuất bảng Bạn sử dụng PRIMARY KEY UNIQUE Index bảng cho trường thích hợp để ngăn cản xuất Ví dụ: bảng nhanvienIT sau khơng chứa mục dạng này, cho phép xuất cho ho ten: CREATE TABLE nhanvienIT ( CHAR(30) ); ho CHAR(20), ten CHAR(20), diachi Để ngăn cản nhiều ghi với giá trị họ tên với giá trị họ tên tạo bảng này, thêm PRIMARY KEY vào định nghĩa Khi bạn làm điều này, cần thiết phải khai báo cột lập mục NOT NULL, PRIMARY KEY khơng cho phép giá trị NOT NULL CREATE TABLE nhanvienIT ( ho CHAR(20) NOT NULL, diachi CHAR(30), PRIMARY KEY (ho, ten) ); ten CHAR(20) NOT NULL, Sự có mặt mục UNIQUE bảng thường gây lỗi bạn chèn mọt ghi vào bảng ghi tồn cột cột định nghĩa mục Sử dụng INSERT IGNORE thay cho INSERT Nếu ghi không ghi tồn tại, MySQL chèn bình thường Nếu ghi sao, từ khóa IGNORE nói cho MySQL để loại bỏ cách lặng lẽ mà khơng cần tạo lỗi Ví dụ sau khơng tạo lỗi lúc khơng chèn ghi mysql> INSERT IGNORE INTO nhanvienIT (ho, ten) -> VALUES( 'Jay', 'Thomas'); Query OK, row affected (0.00 sec) mysql> INSERT IGNORE INTO nhanvienIT (ho, ten) -> VALUES( 'Jay', 'Thomas'); Query OK, rows affected (0.00 sec) Sử dụng REPLACE thay cho INSERT Nếu ghi mới, chèn với lệnh INSERT Nếu sao, ghi thay cho ghi cũ http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/mysql/index.jsp Copyright © vietjack.com mysql> REPLACE INTO nhanvienIT (ho, ten) -> VALUES( 'Ajay', 'Kumar'); Query OK, row affected (0.00 sec) mysql> REPLACE INTO nhanvienIT (ho, ten) -> VALUES( 'Ajay', 'Kumar'); Query OK, rows affected (0.00 sec) Bạn nên chọn INSERT IGNORE REPLACE theo cách xử lý bạn muốn INSERT IGNORE giữ lại tập hợp ghi loại bỏ phần lại REPLACE giữ tập hợp cuối xóa phần trước Cách khác để áp dụng tính thêm mục UNIQUE thay PRIMARY KEY cho bảng CREATE TABLE nhanvienIT ( ho CHAR(20) NOT NULL, diachi CHAR(30) UNIQUE (ho, ten) ); ten CHAR(20) NOT NULL, Đếm xác định MySQL Ví dụ sau truy vấn để đếm với ho ten bảng SELECT COUNT(*) as sobansao, ho, ten HAVING sobansao > 1; FROM nhanvienIT GROUP BY ho, ten Truy vấn trả danh sách tất bảng nhanvienIT Nói chung, để xác định tập hợp giá trị có bị hay khơng, bạn thực hiện: • Xác định xem cột chứa giá trị mà bị • Liệt kê tất cột đó, với COUNT(*) • Liệt kê cột mệnh đề GROUP BY • Thêm mệnh đề HAVING để loại bỏ giá trị việc yêu cầu giá trị đếm nhóm lớn Loại bỏ từ kết truy vấn Bạn sử dụng DISTINCT với lệnh SELECT để tìm ghi có bảng SELECT DISTINCT ho, ten FROM nhanvienIT ORDER BY ten; Ngoài DISTINCT, bạn thêm mệnh đề GROUP BY để xác định cột bạn chọn SELECT ho, ten FROM nhanvienIT GROUP BY (ho, ten); http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/mysql/index.jsp Copyright © vietjack.com Xóa sử dụng bảng thay Nếu bạn có bảng bạn muốn xóa tất từ bảng đó, thủ tục: CREATE TABLE nhanvienIT1 SELECT ho, ten, diachi FROM nhanvienIT; GROUP BY (ho, ten); DROP TABLE nhanvienIT; ALTER TABLE nhanvienIT1 RENAME TO nhanvienIT; Một cách dễ dàng để xóa từ bảng thêm INDEX PRIMARY KEY cho bảng Ngay bảng có sẵn, bạn sử dụng kỹ thuật để xóa ALTER IGNORE TABLE nhanvienIT ADD PRIMARY KEY (ho, ten); http://vietjack.com/ Trang chia sẻ các bài học online miễn phí ... (ho, ten) ); ten CHAR(20) NOT NULL, Đếm xác định MySQL Ví dụ sau truy vấn để đếm với ho ten bảng SELECT COUNT(*) as sobansao, ho, ten HAVING sobansao > 1; FROM nhanvienIT GROUP BY ho, ten Truy...http://vietjack.com /mysql/ index.jsp Copyright © vietjack.com mysql> REPLACE INTO... REPLACE INTO nhanvienIT (ho, ten) -> VALUES( 'Ajay', 'Kumar'); Query OK, row affected (0.00 sec) mysql> REPLACE INTO nhanvienIT (ho, ten) -> VALUES( 'Ajay', 'Kumar'); Query OK, rows affected (0.00