查看數據庫中各表的大小
SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,
TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), 'MB')
as data FROM TABLES WHERE TABLE_SCHEMA='dbname';
修改數據庫表文件的儲存位置(詳細步驟)
#登入數據庫
mysql -u root -p
#查看數據庫的存放位置,即datadir的值
show variables like '%dir%';
#退出數據庫
quit
#停止mysql,失敗的話用root權限
service mysqld stop
#創建新的數據儲存位置
mkdir /data/mysql
#將舊文件移動到新位置,第一個參數是前面datadir的值
mv /usr/local/mysql/data/* /data/mysql
#修改新位置的權限
chown mysql:mysql -R /data/mysql/
#修改數據庫配置,修改這一行datadir=/data/mysql
nano /etc/my.cnf
##修改數據庫配置,修改這一行datadir=/data/mysql
##這個我並沒有找到,所以不修改應該也可以
##nano /etc/init.d/mysqld
#啟動數據庫服務
service mysqld start
參考鏈接:mysql数据库目录存放位置更改
導入與導出mysql數據庫
#導出數據庫,前面是mysql的程序位置
/data/soft/mysql-5.5.30/client/mysqldump -u root -p video > db_video.sql
#壓縮一下便於傳輸
tar -zcvf db_video.tar.gz db_video.sql
#導入某數據庫
mysql -u user42 -p -h localhost video < db_video.sql
#導出所有數據庫
mysqldump -u root -p --all-databases | gzip > alldb.sql.gz
#導入所以數據庫
gunzip < alldb.sql.gz | mysql -u root -p
新增用戶及設置權限
转载自:MySQL新增用户以及数据库访问授权
mysql -u root -p
# 允许本地 IP 访问 localhost, 127.0.0.1
CREATE USER 'user42'@'localhost' IDENTIFIED BY 'PASSWORD';
# 允许外网 IP 访问
CREATE USER 'user42'@'%' IDENTIFIED BY 'PASSWORD';
# 刷新授权
flush privileges;
# 创建数据库
create database db42 DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
# 授予用户通过外网IP对于该数据库的全部权限
GRANT ALL ON db42.* TO 'user42'@'%';
# 刷新权限
flush privileges;
# 退出 root 重新登录
\q
# 已新帐号 user42 登录,由于使用的是 % 任意IP连接,所以需要指定外部访问IP
mysql -u user42 -h 192.168.1.168 -p
新建一個庫一張表
CREATE DATABASE `djangoTask` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE `bonus` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`userid` int(10) NOT NULL,
`bonus` int(10) DEFAULT NULL COMMENT '奖励金',
`level` int(3) DEFAULT NULL COMMENT '等级',
`nowTimestamp` int(13) DEFAULT NULL COMMENT '插入时间戳',
`nowDateTime` datetime DEFAULT NULL COMMENT '插入时间',
`updateInfo` varchar(128) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=66156 DEFAULT CHARSET=utf8 COMMENT='bonus';
對某個時間段內某個值出現的次數做統計
SELECT info, count(info) FROM aso.aso_apple
where nowTimestamp>'1489161600' GROUP BY info;
對某個時間段內的數據按天展示統計
SELECT COUNT(id) as 'sum', DATE_FORMAT(nowDatetime, '%Y-%m-%d') as 'day'
FROM aso.aso_apple WHERE nowTimestamp>'1488643200'
GROUP BY DATE_FORMAT(nowDatetime, '%Y-%m-%d');
昨天各商品的銷售總額
SELECT product_id,
SUM (order_price)
FROM orders WHERE create_time > CURDATE()-1
GROUP BY product_id;
使用inner join查看關聯數據
SELECT * FROM test.t_account a
INNER JOIN test.t_client b
ON a.cId = b.id WHERE b.sn like '%sz%';
刪除inner join查詢到的關聯數據
DELETE a.* FROM test.t_account a
INNER JOIN test.t_client b ON a.cId = b.id
WHERE (b.sn like '%sz%');
更新inner join查詢到的關聯數據
UPDATE task_new.t_account AS a
INNER JOIN task_new.t_client AS b
ON a.cId = b.id
AND b.sn like '%sz%'
SET a.status='1' ;
使用子查詢
SELECT id, first_name
FROM student_details
WHERE first_name IN (SELECT first_name
FROM student_details
WHERE subject= 'Science');
<h3>使用新表來去重</h3>
#先新建一張表
CREATE TABLE newtable LIKE oldtable;
#將去重後的數據插入新表
INSERT INTO newtable SELECT * FROM oldtable GROUP BY key;
#把舊表備份下
ALTER TABLE oldtable RENAME TO oldtable_bak ;
#把新表改名為舊錶
ALTER TABLE newtable RENAME TO oldtable ;
本文更新於 2020/12/28。