启动服务:
service mysql start
重启服务:
service mysql restart
关闭服务:
service mysql stop
SQL分类:
DDL(数据定义语言)>: create、drop、alter
DML(数据操纵语言)>: insert、delete、update
DCL(数据控制语言)>: grant、revoke
修改数据库密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
1.Mysql数据库安装说明文档 http://blog.csdn.net/mchdba/article/details/53618276
PS:若是docker,则先进入命令行
docker exec -it mysql /bin/bash
2.连接远程数据库
mysql -h ip -u root -p
3.连接本地数据库
mysql -u root -p
4.连接数据库指定某个库
mysql -D databaseName -u root -p
5.修改数据库密码
mysqladmin -u root -p oldpwd newpwd
DDL相关命令:
show databases;查看所有数据库
create database test;创建名为test的数据库
user test;进入并使用 test 数据库
show tables;查看当前库所有的表名列表
drop database test;删除数据库 test
desc tablename;查看表定义
drop tablename;删除表
alter table emp modify ename varchar(20);修改表字段信息
alter table emp drop column age;删除表emp中的age字段
alter table emp change age age1 int(4);修改字段名称并且修改字段类型
alter table emp add birth date after ename;在字段ename后添加类型为date的字段birth
alter table emp modify age int(3) first;将 age 字段挪到最前面
alter table emp rename emp1;修改表名
DML 相关语句:
select distinct ename from emp;查询结果去重
order by id asc(默认)正序,desc 倒序
select - from - where - group by - order by-with rollup-having
优化:
1、如果条件查询记录唯一,用=替代in
2、如果子查询可以改为表连接则使用表连接
union 去重、union all 不去重
DCL相关语句:
创建一个数据库用户 z1,具有对 sakila 数据库中所有表的 SELECT/INSERT 权限:
grant select,insert on sakila.* to 'z1'@'localhost' identified by '123';
由于权限变更,需要将 z1 的权限变更,收回 INSERT,只能对数据进行 SELECT 操作:
revoke insert on sakila.* from 'z1'@'localhost';
InnoDB引擎支持事务、行锁、支持集群、数据缓存、索引缓存
MyISAM 引擎不支持事务、表锁,不支持集群、不支持数据缓存、不支持索引缓存
InnoDB不区分固定长度和可变长度列,所以尽量使用自动varchar代替char
BLOB可以存储二进制,入图片视频等,TEXT 大文本
1、软优化:
1.1、查询语句优化
使用 DESC 命令分析一条查询语句的执行信息
DESC select * from users
1.2、优化子查询
在 MySQL 中尽量使用 JOIN 来代替子查询,因为子查询需要嵌套查询会建立临时表,临时表的创建和删除 都会消耗较大的系统开销,连接查询不会创建临时表,因此效率比嵌套查询高
1.3、使用索引
索引是提高数据库查询速度的重要方法之一,需要注意的是:
LIKE关键字匹配'%'开头的字符串,不会使用索引;
OR关键字的两个字段必须都是用了索引,该查询才会使用索引;
使用多列索引必须满足最左匹配。
1.4、分解表
对于字段较多的表,如果某些字段使用频率较低,应当将其分离出来形成新的表
1.5、中间表
对于大量连接查询的表可以创建中间表,从而减少在查询时造成的连接耗时
1.6、增加冗余字段
适当增加冗余字段可以减少连接查询的频率
2、硬优化
2.1、硬件优化
2.2、数据库参数优化
2.3、分库分表
2.4、使用缓存集群