Một số câu lệnh cơ bản và nâng cao MySQL

Cơ bản

Login MySQL.

mysql -u root -p

Tạo user và Database.

create database dbcuaban;
create user 'usercuaban'@'localhost' identified by 'passcuaban';
grant all on dbcuaban.* to usercuaban@localhost;
FLUSH PRIVILEGES;

Tạo table.

CREATE TABLE ten_table(id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT, cot1 VARCHAR(20) NOT NULL Unique, cot2 VARCHAR(50) NOT NULL, cot3 DATETIME NOT NULL) ENGINE=InnoDB;

Chèn thêm 1 cột.

ALTER TABLE ten_table ADD COLUMN cot4 VARCHAR(300) NOT NULL;

Ghi dòng.

INSERT INTO ten_table(cot1,cot2,cot3,cot4) VALUES ('$value1','$value','$value3','$value4');

Update dòng 1

UPDATE ten_table SET cot1='$value1', cot2='$value2', cot3='$value3', cot4='$value4' where id = 1 limit 1;

Xóa dòng 1

Delete From ten_table where id = 1 limit 1;

Đếm số dòng

Select count(id) as total from ten_table;

Thêm chỉ mục Index.

ALTER TABLE ten_table ADD INDEX cot1 (cot1);

Dump all database

mysqldump -u [uname] -p[pass] --all-databases | gzip > db_backup.sql.gz

Nâng cao.

Full text search

ALTER TABLE ten_table ADD FULLTEXT INDEX cot2 (cot2); 
SELECT * FROM ten_table WHERE MATCH(cot2) AGAINST ('keyword' IN NATURAL LANGUAGE MODE);

Xóa dữ liệu trùng nhau của dòng.

Đơn giản là add index là unique và bỏ qua lỗi, các dòng trùng nhau sẽ tự động xóa.

ALTER IGNORE TABLE ten_table ADD UNIQUE INDEX cot3 (cot3);

Update nếu trùng nhau.

INSERT INTO ten_table(cot1,cot2,cot3,cot4) VALUES ('$value1','$value2','$value3','$value4') ON DUPLICATE KEY UPDATE cot1=VALUES(cot1), cot2=VALUES(cot2), cot3=VALUES(cot3), cot4=VALUES(cot4);

Tối ưu Select với Table hàng triệu dòng.

Thường các truy vấn có order và limit mà số dòng trong table lên đến hàng triệu thì truy vấn rất chậm, mẹo sau đây giúp tăng tốc độ truy vấn của bạn lên gấp nhiều lần.

SELECT  t.* FROM (SELECT `id` FROM `ten_table` FORCE INDEX (ten_table) WHERE `cot1` like '$value1' ORDER BY `cot2` DESC LIMIT 0, 50) q JOIN `ten_table` t ON t.id = q.id;
Updated: 02/08/2017 — 10:28 chiều
Dương Triều Blog © 2016