MySQL & MariaDB
1 数据库的登录与退出
mysql -u root -p -- 使用root身份登陆当前的数据库 mysql -u root -p -h server0 -- 使用root身份登陆到server0的数据库 quit --退出数据库
2 数据库
2.1 创建
create databse db1; -- 创建一个数据库 create database db1 character set utf8; -- 创建并定义字符集 create database db1 character set utf8mb4; -- 创建并定义字符集
注:数据库名在linux下大小写敏感(跟系统有关系)
2.2 选中
use db1; -- 选中一张表
2.3 查看
show databases; -- 显示数据库 show create database db1 -- 显式数据库创建语句
2.4 删除
drop database db1; -- 删除数据库
2.5 数据权限设置
grant privileges on db1.tablename to user1@10.168.0.8 identified by "password"; -- 按数据库授所有权限 grant select,insert,update,delete,create temporary tables,execute,show view on `db1`.* to 'user1'@'10.168.0.8'; -- 按数据库授特定权限 revoke select,insert,update,delete,create temporary tables,execute,show view on `db1`.* from 'user1'@'10.168.0.8'; -- 按数据库取消特定权限 drop user 'user1'@'10.168.0.8'; -- 删除特定的用户 flush privileges; -- 刷新权限表
另外MySQL8授权方式有所不同,
create user 'user1'@'10.168.0.8' identified with mysql_native_password by 'password'; grant all privileges on db1.tablename.* to 'user1'@'10.168.0.8'; flush privileges;
2.6 数据库的备份与还原
2.6.1 备份数据库
mysqldump -uroot -p --socket=/var/lib/mysql/mysql.sock limesurvey > backup.sql
2.6.2 只备份表结构
mysqldump -uroot -p --socket=/var/lib/mysql/mysql.sock --opt -d limesurvey > backup_desc.sql
2.6.3 只备份数据
mysqldump -uroot -p --socket=/var/lib/mysql/mysql.sock -t limesurvey > backup_data.sql
2.6.4 唯一传输
mysqldump -uroot -p --socket=/var/lib/mysql/mysql.sock --single-transaction limesurvey > backup_data.sql
注:该选项适用于数据库引擎类型为InnoDB的表备份,该标记转存储时提供连贯的数据库快照备份
2.6.5 其他备份方法
mysqldump -u username -p database > /backup/file.dump -- 备份数据库 mysqldump -uroot -p --all-databases | gzip -9 > file.gz -- 备份并压缩数据库 mysqldump -u username -p <./file.dump -- 还原数据库
2.7 密码变更
方法一
mysql -uroot -p set password for root@localhost = password('123456');
方法二
mysqladmin -uroot -p password "123456"
方法三
use mysql; update user set password=password('123456') where user='root' and host='localhost'; flush privileges;
方法四
service mysqld stop mysqld_safe --skip-grant-tables & mysql -u root use mysql; update user set password=password('123456') where user='root' and host='localhost'; flush privileges; quit; service mysqld restart
3 表
3.1 创建
3.1.1 创建1
create tabale tb1 ( id int not null, name varchar(10) ); -- 创建一张表
3.1.2 创建2
create tabale tb1 ( id int not null, name varchar(10) )engine=MYISAM default charset=utf8; -- 创建一张表
注:表名在linux下大小写敏感(跟系统有关系)
3.2 查看
show tables; -- 显示当前库中的表 show create table tb1; --显式创建表的语句 describe tb1; -- 查看表结构 show create table tb1; -- 查看见表命令 show index from tb2; -- 查看表包含的索引 show table status like '%tb3%'; -- 查看当前表的状态
3.3 删除
drop table tb1 drop table if exists tab1
3.4 修改
alter table tb1 engine=myisam;
4 表的列操作
4.1 增加字段
alter table Persons add column `City` varchar(255) DEFAULT NULL;
4.2 修改字段
alter table Persons modify column `City` varchar(255) DEFAULT NULL comment '城市';
4.3 删除字段
alter table `Persons` drop column `City`;
5 表的行操作
5.1 查询
select email from user group by email having count(email) > 1; -- 查询重复的列 select * from user where email in ( select email from user group by email having count(u_email) > 1 ); -- 查询重复数据列的行
5.2 插入
5.2.1 单行插入
insert into tablename set column1 = value1 , coumn2 = values2...;
5.2.2 多行插入
insert into tablename (column1,column2...) values (value1,value2....); insert into tablename (column1,column2...) values (value1,value2....),(value1,value2....)...;
5.2.3 简写
insert into tablename values (value1,value2....);
注:当满足表中所有列都插入数据时才可简写
5.2.4 插入查询结果
insert into tablename (column1,column2...) select (column1,column2...) from tablename2 [where condition];
简写
insert into tablename select (column1,column2...) from tablename2 [where condition];
5.3 更新
update tablename set column1 = valuesl,column2 = values2... [where condition];
注:不写where会修改整张表数据(危险操作)
5.4 删除
delete from tablename [where condition];
注:不写where会清空整张表数据(危险操作)
6 事务
begin; -- 开启事务(必选) -- 这里做引起数据变更的操作(可选) rollback; -- 回滚事务(可选) commit; -- 提交事务(必选)
注:数据InnoDB引擎支持表事务性操作
show variables like '%commit'; -- 查询事务自动提交设置 set autocommit=0; -- 自动提交关闭(需要手动键入commit,执行前所有操作当一个事务处理) set autocommit=1; -- 自动提交打开(每个操作一个事务)
7 版本信息查看
7.1 登录信息查看
mysql -uroot -p
7.2 函数方式查看
mysql -uroot -p >select @@version;
7.3 状态信息查看
mysql -uroot -p >status
7.4 命令行方式查看
mysql -V
7.5 帮助方式查看
mysql --help | grep Distrib
7.6 环境变量方式查看
show variables like 'version';
8 其他查询或命令
show engines; -- 查看引擎 show variables like '%storage_engine%'; -- 数据库默认引擎 select table_name,table_schema,engine from information_schema.tables where engine!='innodb' and table_schema not in('performance_schema','mysql'); -- 筛选非innodb的引擎表 show create table tabName; -- 查询某表的引擎 show warnings; -- 查询警告信息 show variables; -- 查询变量环境 show variables like '%query_cache%'; -- 查询基于特定关键字环境变量 show variables like "max_connections"; -- 查询最大连接数 show processlist; -- 查询进程列表 kill processID -- 结束查询的进程
9 QEP
explan select user,host from user\G
10 MySQLAdmin
mysqladmin -u root -p -P 3306 --socket=/tmp/mysql.sock shutdown
不详尽请参阅:
http://www.w3school.com.cn/sql/index.asp
没有评论