Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Programming » MySQL » Tổng hợp các câu lệnh SQL hay sử dụng – MySQL

Tổng hợp các câu lệnh SQL hay sử dụng – MySQL

Chủ Nhật, 05/10/2014 by Hoàng Quách

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Một số lệnh sql hay sử dụng:
Sql

Insert SQL

Câu lệnh Insert thông thường, chèn dữ liệu vào bảng.

insert into tab1 set field1='val1', field2='val2',..

Có thể viết field và value một nơi.

INSERT INTO ins_duplicate VALUES (1,'Antelope');

Chèn thêm nhiều dòng dữ liệu vào bảng, liệt kê giá trị của fields theo từng record.

INSERT INTO ins_duplicate VALUES (1,'Aardvark'), (2,'Cheetah'), (3,'Zebra');

Kết quả duyệt bảng:

SELECT * FROM ins_duplicate;
+----+----------+
| id | animal   |
+----+----------+
|  1 | Aardvark |
|  2 | Cheetah  |
|  3 | Zebra    |
+----+----------+

Bảng có 1 primary key
Lệnh insert kết hợp với thuộc tính ON DUPLICATE KEY UPDATE vẫn mang nghĩa sửa đổi bản ghi vào bảng. Tìm giá trị của trường khóa (primary field), nếu đã tồn tại thì cập nhật lại record còn không thì thêm mới , chỉ đơn giản sử dụng một dòng sql duy nhất giúp bạn thực hiện 2 công việc, một mục tiêu trúng một trong 2 đích.

INSERT INTO ins_duplicate VALUES (4,'Gorilla') ON DUPLICATE KEY UPDATE animal='Gorilla';

Không chỉ định fields sau tên bảng mặc định sử dụng toàn bộ thứ tự fields của table. Hoặc chỉ định giá trị field cụ thể cái này thuộc về cấu trúc insert rồi mình nhắc lại thôi:

INSERT INTO ins_duplicate(id,animal) VALUES (4,'Gorilla') ON DUPLICATE KEY UPDATE animal='Gorilla';

Các chuỗi sau từ VALUES là giá trị thiết lập cho fields, chính mệnh đề ‘ON DUPLICATE KEY UPDATE’ có vai trò giống như Update.
Nếu không tìm thấy key id=4 thì thực hiện lệnh insert bình thường. Chạy lệnh cho ra kết quả record mới id=4.

+----+----------+
| id | animal   |
+----+----------+
|  1 | Aardvark |
|  2 | Cheetah  |
|  3 | Zebra    |
|  4 | Gorilla  |
+----+----------+

Sử dụng lệnh Insert thông thường với primary key (id) bạn thiết lập, nếu trùng key sql sẽ báo lỗi:

INSERT INTO ins_duplicate VALUES (1,'Antelope');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

Tuy nhiên bạn có thể gọi lệnh INSERT ON DUPLICATE KEY UPDATE sẽ có tác dụng vừa cập nhật và thêm mới bản ghi mà không cần phải sử lệnh 2 lệnh: update và insert. Giúp cải thiện tốc độ sử lý sql.

INSERT INTO ins_duplicate VALUES (1,'Antelope') ON DUPLICATE KEY UPDATE animal='Antelope';
Query OK, 2 rows affected (0.09 sec)

Bây giờ bạn thử kiểm tra lại dòng id=1 giá trị field animal đã bị sửa đổi.

SELECT * FROM ins_duplicate;
+----+----------+
| id | animal   |
+----+----------+
|  1 | Antelope |
|  2 | Cheetah  |
|  3 | Zebra    |
|  4 | Gorilla  |
+----+----------+

Đối với table có 2 primary key
Thêm unique field và thiết lập giá trị cho trường này lấy giá trị primary key ‘id’ tương ứng cộng thêm 10, sử dụng các lệnh sql sau:

ALTER TABLE ins_duplicate ADD id2 INT;
UPDATE ins_duplicate SET id2=id+10;
ALTER TABLE ins_duplicate ADD UNIQUE KEY(id2);

Ví dụ sau, tìm thấy record khớp giá trị của 2 field gồm: key và field khác nhưng key thứ 2 không khớp với cùng record đó, tuy nhiên lại tồn tại trong record khác của bảng. Kết quả chạy lệnh chỉ 1 dòng bản ghi đầu tiên được tìm thấy, được thay đổi dữ liệu.

INSERT INTO ins_duplicate VALUES (2,'Lion',13) ON DUPLICATE KEY UPDATE animal='Lion';
Query OK, 2 rows affected, 1 warning (0.06 sec)

SHOW WARNINGS;
+-------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message                                                                                                                                                                                  |
+-------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Note  | 1592 | Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE  on a table with more than one UNIQUE KEY is unsafe |
+-------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

SELECT * FROM ins_duplicate;
+----+----------+------+
| id | animal   | id2  |
+----+----------+------+
|  1 | Antelope |   11 |
|  2 | Lion     |   12 |
|  3 | Zebra    |   13 |
|  4 | Gorilla  |   14 |
+----+----------+------+

Có 2 key tranh dành nhau, thì giá trị primary key đầu tiên tìm thấy sẽ được cập nhật không căn cứ ưu tiên key viết trước hay sau. Ở đây key có giá trị ‘2’ tìm thấy đầu tiên là ‘id’. Câu lệnh này không khuyến khích áp dụng cho table có 2 primary key.
TH1 viết theo tự tự primary key
on-duplicate-key-update2
TH2 viết ngược lại primary key
on-duplicate-key-update1
Kết quả đều sửa vào record có id=’2′.

Ứng dụng to lớn của ON DUPLICATE KEY UPDATE là tìm và sửa đổi hoặc thêm mới dữ liệu một cách linh hoạt. Sau khi định hình các record được tìm thấy, lệnh sẽ làm việc trên từng các record đó. Ví dụ sau cập nhật lại field ‘t2’ có giá trị = id+t1

INSERT INTO ins_duplicate (id,t1,t2) VALUES (1,2,5),(4,5,6)
    ON DUPLICATE KEY UPDATE t2=VALUES(id)+VALUES(t1);

on-duplicate-key-update

Xóa bản ghi

Xóa một hoặc nhiều dòng dữ liệu ra khỏi bảng chúng ta có lệnh delete.

delete from table1 where id in (1,2,3,4,5)

Cập nhật dữ liệu

Thay đổi giá trị các fields của một hay nhiều dòng dữ liệu thì sử dụng câu lệnh update, ví dụ:

update table1 set field1='value1',field2='value2',..

Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Hoangweb trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: MySQL Tìm kiếm: mysql, sql

Comments

  1. Quang Huy says

    Thứ Hai, 06/10/2014 at 7:13 sáng

    Các câu lệnh sql cơ bản và nâng cao

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.