数据库常用命令

MySQL

修改密码

mysql -uroot -p
set password = password('new password');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
flush privileges;

创建用户

use mysql
create user '新用户名'@'%' identified by '密码';

数据库授权

mysql -uroot -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'new password' WITH GRANT OPTION;
flush privileges;


#创建数据库(默认编码)
CREATE DATABASE impp_i3_mes DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
#创建数据库(指定编码)
CREATE DATABASE impp_i3_mes COLLATE 'utf8_danish_ci';


#特定账号看到特定数据库:impp_i3_mes_user用户只能看到impp_i3_mes数据库
CREATE USER 'impp_i3_mes_user'@'%' IDENTIFIED BY 'impp_i3_mes_pwd';
grant all privileges on impp_i3_mes.* to impp_i3_mes_user@'%';
FLUSH PRIVILEGES;

mysqldump备份-docker版

docker exec -it 7116927f71f1_dbmaster mysqldump -uroot -pestsh123 impp_i3_mes_pcn > /root/impp_i3_mes_pcn.sql

#压缩sql文件
tar -zcvf mes-pcn.tar.gz impp_i3_mes_pcn.sql 
zip mes-pcn.zip impp_i3_mes_pcn.sql

#导出123服务器上所有数据库(导出目录要检查下空间是否充足)
docker exec -it 7116927f71f1_dbmaster mysqldump -uroot -pestsh123 -h172.16.0.123 -P33066 --all-databases > /home/impp_123_all.dump

mysql恢复-docker版

基于Mysqldump导出的sql文件业务需要重新导入另一台数据库,如果数据量比较少使用Navicat可直接导入,非常方便。如果数据量比较大,使用Navicat导入则会出现很多报错并且会很吃电脑内存,电脑会非常烫,这里记录下使用命令方式导入。

1、将sql文件解压出来拷贝到docker容器里(容器里没有unzip命令,需要安装)
unzip impp_i3_mes-2021-04-20_063001.zip

#docker cp 需要导入的文件 docker容器的名称:容器内存放的路径
docker cp impp_i3_mes.sql dbmaster:/root/

2、进入容器
docker exec -it dbmaster bash

3、在容器里执行导入命令
mysql -uroot -pestsh123 impp_i3_mes < /root/impp_i3_mes.sql

等待执行完毕就OK了!


第二种方式是进入到数据库后使用source执行(未测试,理论可行)
mysql -uroot -pestsh123
use impp_i3_mes;
source /root/impp_i3_mes.sql

查找重复值(HAVING)

select count(object_code) as oct, object_code 
from mes_pcn_sync_cfg 
where is_valid = 1 AND is_deleted = 2
group by object_code 
HAVING oct > 1
order by oct

去除重复值(DISTINCT)

select distinct * from mes_pcn_sync_cfg

清空表

TRUNCATE TABLE mes_time

区别:
delete删除表数据,相当于一条条删除。如果有字段是自增的(一般为id),这样删除后,id 值还是存在的。举例来说,就是加入你在删除之前最大的id为100,你用这种方式清空表后 ,新插入一条数据其id为101,而不是1。
truncate table 表名,直接清空表,相当于重建表,保持了原表的结构,id也会清空。相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。

SqlServer

查找重复值(HAVING)

select count(object_code) as oct, object_code 
from mes_pcn_sync_cfg 
where is_valid = 1 AND is_deleted = 2
group by object_code
HAVING COUNT(object_code) > 1
order by oct

与MySQL区别:SqlServer不能使用oct别名来判断,MySQL可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值