Sau Query Turning thì dường như như trên đây là nội dung bài viết đầu tiên về sql của mình. Cũng lừng khừng nói sao, đó là một nội dung bài viết không thiên hẳn về học tập thuật xuất xắc thực hành, nó chỉ dễ dàng là một trong những kiến thức với tip nhưng mà mình nghĩ về là đề nghị thiết. Hi vọng bài viết sẽ có ích với các bạn

1. Reset password

Với một đứa não tàn như bản thân thì Reset password là trong số những tip mình không thể lần khần

*

Quy trình này khá dễ dàng thôi. Đầu tiên, bạn phải stop service mysql. Chạy lệnh

$ /etc/init.d/mysql stophoặc

$ sudo service mysql stopSau đó, các bạn hãy bật safe mode để truy vấn mysql cơ mà không cần password

$ sudo mysqld_safe --skip-grant-tables &Lưu ý: ví như bạn gặp lỗi như vậy

$ sudo mkdir -p /var/run/mysqld$ sudo chown mysql:mysql /var/run/mysqldCuối cùng bạn hãy truy vấn hệ cai quản trị đại lý dữ liệu

$ mysql -u root mysqlđể chạt lệnh update password nào

$ update user set password=PASSWORD("newpassword") where User="root";hoặc

$ update user mix authentication_string=PASSWORD("secret") where User="root";cho mysql serrver ver 5.7 trở lên

Trong đó: newpassword là mật khẩu bắt đầu của bạn

Nếu hiệu quả sau lúc update do đó là được

Query OK, 0 rows affected, 1 warning (0.00 sec)Rows matched: 1 Changed: 0 Warnings: 1Giờ thì bạn hãy restart lại để truy cập lại nhé

$ /etc/init.d/mysql restarthoặc

$ sudo service mysql restartNếu bạn dùng docker, thì chúng ta chỉ việc chuyển đổi config password, rất là đơn giản luôn luôn =)).

Bạn đang xem: Mysqld_safe directory "/ var / run / mysqld" cho tệp ổ cắm unix không tồn tại cập nhật mới nhất tháng 02 2022

services: mysql: image: mysql:8 environment: MYSQL_DATABASE: $DB_DATABASE MYSQL_USER: $DB_USERNAME MYSQL_PASSWORD: $DB_PASSWORD MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PASSWORD:-rootTham khảo thêm về docker qua series này của bản thân nhé

2. Export & import database

Để export cơ sở dữ liệu (CSDL), chúng ta sẽ sử dụng mysqldump

mysqldump --routines -u username -p dbname > dbexport.sqlTrong đó

username: tên singin hệ cai quản trị cơ sở dữ liệu (HQTCSDL)dbname: tên CSDL bạn có nhu cầu export

File export sẽ là 1 file sql

Ngược lại, để import một cơ sở dữ liệu trong tệp tin .sql, các bạn cầnTạo 1 cơ sở dữ liệu mới

CREATE DATABASE newdb;mysql -u username -p newdb Tương tự

username: tên singin HQTCSDLnewdbname: tên CSDL bạn muốn import dữ liệu

3. Các bước truy vấn

Bạn hãy coi hình ảnh dưới phía trên để thấy được đồ vật tự tiến hành các mệnh đề trong những truy vấn SQL

*

(I) quy trình xử lý súc tích của một truy vấn vấn SQL bước đầu bằng câu lệnh FROM, câu lệnh này sẽ tích lũy dữ liệu từ những bảng được yêu ước trong tầm nã vấn. Nó cũng rất có thể chứa một mệnh đề JOIN phối hợp hai hoặc nhiều bảng bằng cách sử dụng toán tử ON.

(II) Mệnh đề được xử lý tiếp sau là mệnh đề WHERE, lệnh này sẽ lọc các bản ghi của những bảng và chỉ còn lấy những phiên bản ghi thỏa mãn nhu cầu (các) đk do người tiêu dùng chỉ định.

(III) Theo sau mệnh đề WHERE là mệnh đề GROUP BY, nó sẽ nhóm các bạn dạng ghi nhận ra từ điều kiện WHERE.

(IV) tiếp theo sau sẽ là mệnh đề HAVING. Lệnh này sẽ lọc đa số nhóm bạn dạng ghi được tạo thành từ mệnh đề GROUP BY trước đó, và chỉ còn lấy những phiên bản ghi vừa lòng điều kiện chỉ định.

(V) Giờ quy trình xử lý súc tích sẽ chuyển mang đến lệnh SELECT. Nó đã lấy các cột được chỉ định từ phần lớn cột nguồn vào của nó. Nó cũng review thêm 1 số yếu tố như UNIQUE, DISTINCT và TOP, nếu như được yêu cầu.

(VI) Mệnh đề ORDER BY được thực hiện ở cuối quy trình ngắn gọn xúc tích này. Lệnh này sẽ thu xếp dữ liệu theo (các) cột được chỉ định trong những số đó và theo trang bị tự tăng hoặc bớt dần (mặc định là tăng dần).

Có lẽ đây là kiến thức vượt căn bản rồi nhỉ, nhưng mà càng căn phiên bản thì họ càng nên biết phải không nào. Hiểu tiến trình truy vấn để giúp đỡ bạn hiểu được systax, cũng giống như cách viết tróc nã vấn hiệu quả hơn.

4. WHERE với HAVING

Đây là nhị mệnh đề mà bọn họ rất giỏi dùng vày chả mấy khi họ truy vấn toàn bộ phiên bản ghi mà không kèm điều kiện. Vậy WHERE với HAVING tương đương và khác nhau như nạm nào? cùng mình tò mò nhé

Về sự kiểu như nhau, nhị mệnh đề này có tương đối nhiều toán tử giúp bọn họ tạo và phối hợp các điều kiện như:

Toán tử so sánh: , =, =, Toán tử kiểm tra null, exists: IS NULL, IS NOT NULL, EXISTSToán tử khớp chuỗi: LIKE, "%=_"Toán tử phạm vi: BETWEEN, INToán tử so sánh định lượng: ALL, ANY, SOMEToán tử phối hợp điều kiện: AND, OR, NOT

Nhưng khác với WHERE, mệnh đề HAVING còn có thể tạo điều kiện từ những aggregate functions như: MIN, MAX, SUM, COUNT, AVG,... Tuy nhiên bạn có thể sử dụng những aggregate functions này ở select, tiếp nối dùng mệnh đề WHERE để lọc sút các bạn dạng ghi không vừa lòng điều kiện.

Chúng ta hoàn toàn có thể tóm tắt một số đặc điểm biệt lập chính giữa WHERE và HAVING như sau:

Mệnh đề WHEREMệnh đề HAVING
Tính chấtWHERE được áp dụng để thanh lọc các phiên bản ghi (hàng) tự bảng dựa trên đk được chỉ định.HAVING lọc các nhóm bản ghi (hàng) được tạo bởi vì GROUP BY, tức là đầu ra của mệnh đề GROUP BY là đầu vào để WHERE
Cách lọcMệnh đề WHERE được tiến hành trước GROUP BY, trước khi việc gom team được thực hiệnMệnh đề HAVING được thực hiện GROUP BY, sau khi đã gồm nhóm các bản ghi
Điều kiệnCó thể áp dụng WHERE mà không tồn tại GROUP BYKhông thể áp dụng HAVING mà không có GROUP BY
Cú phápWHERE được để trước GROUP BYHAVING được đặt sau GROUP BY
Khả năng kết phù hợp với các mệnh đề khácMệnh đề WHERE có thể được thực hiện với câu lệnh SELECT, UPDATE, DELETEMệnh đề HAVING chỉ rất có thể được sử dụng với lệnh SELECT.

Xem thêm: Cách Chơi Huskar Trong Dota 2, Dota 2: Hướng Dẫn Đối Đầu Với Huskar Trong 7

Khả năng lọcMệnh đề WHERE không thể chứa aggregate functionsMệnh đề HAVING hoàn toàn có thể chứa aggregate function

Từ các sự biệt lập này, các bạn nên thực hiện HAVING nếu bạn cần thanh lọc những bản ghi của GROUP, nếu như không, hãy áp dụng WHERE nhé, nó sẽ tác dụng hơn đó. Mình cũng đã từng viết về điều này, tham khảo tại phía trên nhé.

5. TRUNCATE, DELETE và DROP

Bạn tất cả nghĩ rằng TRUNCATE, DELETE và DROP là các lệnh hệt nhau nhau. Tất yếu là không rồi đề xuất không. Vậy chúng không giống nhau như cố kỉnh nào? bao giờ chúng ta nên áp dụng TRUNCATE và khi nào chúng ta nên áp dụng DELETE, tuyệt DROP?

1. DELETE

DELETE là lệnh DML (Data Manipulation Language). Lệnh này xóa các bạn dạng ghi khỏi bảng chứ không cần xóa bảng khỏi đại lý dữ liệu.

Nếu bạn không thích xóa cấu tạo bảng hoặc bạn chỉ xóa các bạn dạng ghi nỗ lực thể, hãy thực hiện lệnh DELETE. Nó hoàn toàn có thể xóa một, một vài hoặc tất cả các bản ghi vào bảng. DELETE vẫn trả về số hàng bị xóa bỏ bảng.

DELETE thực hiện row lock trong quá trình thực thi và hoàn toàn có thể khôi phục lại dữ liệu sau khi xóa. Rất nhiều hàng đã xóa đều sẽ bị khóa (locked), bởi vậy sẽ cần rất nhiều lock trường hợp bạn thao tác với một bảng lớn. Bạn có thể thấy DELETE giữ nguyên ID trong bảng. Nếu khách hàng xóa phiên bản ghi ở đầu cuối trong bảng bao gồm ID = đôi mươi và sau đó thêm bản ghi mới, bạn dạng ghi này sẽ có ID = 21.

2. TRUNCATE

TRUNCATE là một trong lệnh DML (Data Manipulation Language). Lệnh này sẽ xóa cục bộ các bản ghi của bảng. Nó chỉ được sử dụng khi bạn muốn xóa cục bộ dữ liệu của bảng, và tất nhiên, nó không xóa bảng khỏi cửa hàng dữ liệu.

TRUNCATE cấp tốc hơn DELETE do nó không đề nghị lọc các bạn dạng ghi bị xóa. Nó không buộc phải lọc bản ghi mà chỉ việc lock cục bộ bảng, và nó ko trả về số mặt hàng bị xóa như DELETE.

3. DROP

DROP là một trong những phương thức DDL (Data Definition Language). Nó không đơn giản dễ dàng chỉ xóa dữ liệu khỏi bảng nhưng mà nó xóa cả cấu trúc bảng khỏi đại lý dữ liệu.

DROP đang xóa cấu tạo bảng và tổng thể dữ liệu của bảng đó, bên cạnh đó giải phóng bộ nhớ. Vậy nên, dĩ nhiên, bọn họ không thể phục sinh lại dữ liệu sau khi đã DROP.

Bạn hoàn toàn có thể xem tót tắt vào bảng này

*

Về cách sử dụng

Để xóa các bạn dạng ghi rứa thể, hãy sử dụng DELETE.Để xóa tất cả các bản ghi khỏi một bảng bự và move nó khỏi cấu tạo bảng, hãy sử dụng TRUNCATE. Nó cấp tốc hơn DELETE.Để xóa toàn bộ bảng, bao gồm cả kết cấu và tài liệu của bảng đó, hãy áp dụng DROP.

6. Update table by itself

Trong một vài ngôi trường hợp, nếu bạn muốn mở rộng lớn bảng nhưng mà trường bạn mở rộng liên quan đến một trong những trường sẽ tổn tại trong bảng, các bạn hãy thử lệnh này nhé

UPDATE Table1 t1, Table2 t2SET t1.column1 = t2.column2WHERE t1.ID = t2.ID;

7. INSERT IGNORE và UPSERT

INSERT hoặc UPDATE hẳn khá quen thuộc với bạn, vậy INSERT IGNORE cùng UPSERT thì sao?

Nếu chúng ta có một lượng lớn dữ liệu mới và cần INSERT một phần dữ liệu có chứa quý giá trường id (là PRIMARY_KEY DUY NHẤT vào bảng) thì việc thực hiện INSERT cơ phiên bản chắc chắn sẽ tạo ra lỗi:

INSERT INTO books (id, title, author, year_published)VALUES (1, "Green Eggs và Ham", "Dr. Seuss", 1960);ERROR 1062 (23000): Duplicate entry "1" for key "PRIMARY"Khi đó, bạn có thể sử dụng INSERT IGNORE, nó để giúp bạn bỏ qua dữ liệu có đựng id đang tồn trên trong bảng

INSERT IGNORE INTO books (id, title, author, year_published)VALUES (1, "Green Eggs và Ham", "Dr. Seuss", 1960);Query OK, 0 rows affected (0.00 sec)Một trường đúng theo khác, các bạn có một lượng bự dữ liệu, trong đó, một phần là tài liệu mới để insert, một trong những phần là dữ liệu cập nhật cho những phiên bản ghi đã tồn trên trong bảng.Với lượng dữ liệu nhỏ, tất nhiên, bạn cũng có thể tạo từng câu lệnh INSERT hoặc UPDATE, tuy nhiên với lượng tài liệu lớn thì sao? 1 vòng for những queries hả, đang chẳng phù hợp tí nào cần không.Khi kia UPSERT sẽ giúp đỡ bạn.

UPSERT là đang lệnh insert nếu như dữ liệu tạo nên 1 bản ghi mới chưa tồn tại trong bảng, ngược lại nó đã update phiên bản ghi cũ đã có trong bảng. Việc update xuất xắc insert được xét thông qua các trường unique của bảng.

INSERT INTO Table1 (column_1, column_2,.. , column_n)VALUES (value_1, value2,... , value_n)ON DUPLICATE KEY UPDATE column_1 = ..., column_2 = ...,;Lưu ý: số đông trưởng để check DUPLICATE KEY đề nghị là unique nhé

Bài viểt đến đây là hết rồi. Hi vọng bài viết này hữu ích với bạn. Hẹn chạm chán lại chúng ta ở những nội dung bài viết tiếp theo