数据库小技巧
持续更新........
mysql linux常见操作语句
./mysql -u root -p 进入MySQL bin 文件夹登录
select * from mysql.user 查看MySQL数据库用户信息,主要是账户信息和host 权限信息
update mysql.user set host='%' where user = 'root' 修改 已经创建好的账户host信息
flush privileges 修改之后刷新
CREATE USER 'qhjj'@'%' IDENTIFIED BY 'Qdwie87@ue68'; 创建用户
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'qhbmSf@2023'; 修改账户密码
grant select,insert,update,delete on smartcity_rsdir.* to 'qhxk'@'%'; 赋予指定账户 指定数据库 、指定数据表 、指定权限
grant all privileges on *.* to 'qhjj'@'%';赋予指定账户 所有的数据库、数据表所有的权限
通过Xshell连接Linux并跳转访问另一台Linux
ssh root@IP
数据库迁移
数据库迁移,MySQL数据库迁移,可以在服务器中导入SQL文件迁移
//数据库导出
./mysqldump -u 数据库账户-p数据库密码 数据库名>/usr/导出地址/XXXXX.sql //导出指定数据库
./mysqldump -u 数据库账户-p数据库密码 --all-databases >/tmp/all.sql //导出所有的数据库
./mysqldump -u 数据库账户-p数据库密码 数据库名A.数据表名 >/tmp/all.sql //导出数据库A的某张表
//数据库导入 导入的前提是 必须先创建数据库才可以导入,且先进入服务器数据库
source /path/to/file.sql;
SQL语句特殊字符查询
如果在数据库中的字段含有 ‘’ 、% 、@ 等特殊字符时,可以使用 转义字符 \ 加 like 查询进行匹配,假设字段中含有 ‘’ 类型的数据
select * from tableA where name like '%\''
in语法排序
在where in 条件中,查询出来的结果根据 in 中的顺序排序
select * from tableA where id in ('1111','333','222') order by field (id,'111','222','333')
一张数据表查询出两个字段相同的数据
select * from table_name where file1 = file2
mysql 拼接语句
CONCAT拼接是没有空格的拼接
select CONCAT('AAAA','BBBB') from table_name
MySQL数据拆分
将一个字段的数据拆分成多个列,比如 :
拆分成:
select SUBSTRING_INDEX(字段,',',1) as value1, SUBSTRING_INDEX(SUBSTRING_INDEX(字段, ',', 2), ',', -1) AS value2, SUBSTRING_INDEX(SUBSTRING_INDEX(字段, ',', 3), ',', -1) AS value3, SUBSTRING_INDEX(字段,',',-1) AS value4 from table_name
update数据更新
根据一张表的数据更新另一张表
update tableA t1 set XX= (select t2.XX from tableB t2 where t1.id = t2.id)