Tác giả Chủ đề: [Căn bản] Câu lệnh SQL thông dụng  (Đọc 2532 lần)

0 Thành viên và 1 Khách đang xem chủ đề.

Offline ddnbgroup

  • Trung úy
  • ***
  • Điểm yêu thích +5/-0
  • Diễn đàn Nhật Bản
    • DDNBGROUP
  • Paypal Account: ddnbgroup@yahoo.co.jp
[Căn bản] Câu lệnh SQL thông dụng
« vào lúc: Thứ ba, 20/09/2016, 06:54:54 pm »
# Giới thiệu
- CSLD MySQL

# Vấn đề
Config & Security
Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
# Grant privileges on IP address
grant all privileges on dbname.* to 'username'@'IP' identified by 'login'
# SELECT privileges
GRANT SELECT ON dbname TO 'username'@'IP';

Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
# Remove permission on db
revoke all privileges on dbname.* from 'username'@'%';
DROP USER 'root'@'%';
Ex: revoke all privileges on dbname.* from 'username'@'IP';

Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
# Delete user
 DELETE FROM mysql.user WHERE User='diendannhatban'
DROP USER 'diendannhatban'@'localhost'

Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
# Check user list
select user,host from mysql.user;

Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
# Get user permission
show grants for `username`;

Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
# Change root password
# MySQL 5.7.6 and later:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MatKhauMoi';
UPDATE mysql.user SET Password=PASSWORD('MatKhauMoi') WHERE User='root'; FLUSH PRIVILEGES; exit;

Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
# Reset root password
sudo /etc/init.d/mysql stop
sudo mysqld --skip-grant-tables &
mysql -u root mysql
UPDATE mysql.user SET Password=PASSWORD('MatKhauMoi') WHERE User='root'; FLUSH PRIVILEGES; exit;
sudo /etc/init.d/mysql start

Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
# MySQL 5.7.5 and earlier:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
# Upgrade mysql
mysql_upgrade

1 COUNT
- Đếm nếu có data trùng trong SQL table
Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
SELECT name, email, COUNT(*)
FROM users
GROUP BY name, email
HAVING COUNT(*) > 1

2 LEFT JOIN (No match)
Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
SELECT t1.ID
FROM Table1 t1
    LEFT JOIN Table2 t2 ON t1.ID = t2.ID
WHERE t2.ID IS NULL

3 Dump database schema
Syntax: mysqldump -d (Chỉ lưu cấu trúc của bảng dữ liệu)
Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
mysqldump -d -h [hostname] -u [dbuser] -p [dbname] > schema.sql

4 Đổi mật khẩu người dùng
MySQL
Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
mysqladmin -u root password NEWPASSWORD
mysqladmin -u root -p'oldpass' password newpass

# or
mysql> update user set password=PASSWORD("NEWPASSWORD") where User='diendannhatban';

5. Update tất cả row nếu khớp với điều kiện
Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
UPDATE table_name
SET column01=value01,column02=value02,...
WHERE column_name=valu;

6. Xoá nhiều table trong cơ sở dữ liệu (SQL, MySQL) cùng một lúc theo cách wildcard (*)
* Lưu ý: Backup dữ liệu trước khi thực hiện
Phương pháp này sẽ có 2 bước.
Bước 1: Tự động tạo ra câu lệnh SQL để xoá các table tương ứng cần xoá (search wildcard với từ khoá các bảng muốn xoá)
Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
SELECT CONCAT(  'DROP TABLE `', TABLE_NAME,  '`;' ) AS query
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE  'diendannhatban_%'
Bước 2: Thực thi những câu lệnh SQL trả về từ bước 1
Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
DROP TABLE `diendannhatban_links`;
DROP TABLE `diendannhatban_options`;
...

7. Xuất câu lệnh SELECT ra file .txt hoặc .sql
Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
mysql -e "select * from Table" -u user -pxxxxxxxx db > filename.txt

mysqldump --opt -h 127.0.0.1 -u user -p --no-create-info --where id=1 database table > filename.sql

# Search kw in table concat multifle fields
Code: Bạn không thể xem liên kết này. Đăng ký hoặc Đăng nhập
select id,name,birthday from users where Concat(internship_experience) like "%string%";
select id,name,birthday from users where internship_experience like "%string%";
select id,name,birthday from users where Concat(internship_experience) like "%string%";
« Sửa lần cuối: Thứ sáu, 3/11/2017, 01:18:10 pm gửi bởi admin »