2019独角兽企业重金招聘Python工程师标准>>>
第一部分
1.查看文件的大小:ll -h
2.实时监控一条命令的执行结果:watch -n1 ls -lh
alt+f1---alt+f6:分别切换到linux的6个终端;
3.改变语句终结符:\d //
4.独占表才能做成数据表分区;
修改mysql配置文件,设置为innodb独占表空间:
innodb_file|_per_table=1;//默认是没有这一项的。
第二部分:mysql常用操作
1.复制表结构:create table t2 like t1;
2.复制表数据:insert into t2 select * from t1;
注:这样有可能会出错,最好表明字段;只有在两个表的结构完全一样的情况下,才会成功。
3.创建索引(mysql索引分为三种:普通索引、UNIQUE索引、PRIMARY KEY索引):
ALTER TABLE table_name ADD INDEX index_name(column_list);
ALTER TABLE table_name ADD UNIQUE(columu_list);
ALTER TABLE table_name ADD PRIMARY KEY(column_list);
注意:也可以使用create创建所用,但是create不能用于主键索引,通用性没有alter好;
4.查看索引:show index from t1;
5.删除索引:DROP INDEX index_name ON table_name
或者:ALTER TABLE table_name DROP INDEX index_name
或者:ALTER TABLE table_name DROP PRIMARY KEY
6.创建视图(视图:从原表中读取的数据形成的中间表):
create view v_t1 as select * from t1 where id>5 and id<10;
7.显示视图帮助:? view
8.查看视图:show tables;
9.删除视图:drop view v_t1;
10.重排auto_incremnet的值:truncate table tablename 或者 alter table tablename auto_increment=1;
第三部分:mysql内置函数
1.字符串函数:
CONCAT(string2 [,...]) //连接字符串
LCASE(string) //转换成小写
UCASE(string) //转换成大写
LENGTH(string) //string长度
LTRIM(string) //去掉前端空格
RTRIM(string) //去掉后端空格
REPEAT(string,count) //重复count次
REPLACE(str,search_str,replace_str) //在str中用replace_str替换search_str
SUBSTRING(str,position[,length]) //在str的position开始,取length个字符
SPACE(count) //生成count个空格
2.数学函数
BIN(decimal_numeber) //十进制转二进制
CEILING(number) //向上取整
FLOOR(number) //向下取整
MAX(col) //取最大值,聚合的时候使用
MIN(col) //取最小数,聚合的时候使用
SQRT(number) //开平方
RAND() //返回0-1内的随机数
3.日期时间函数
NOW() //当前日期和时间
CURDATE() //当前日期
CURTIME() //当前时间
UNIX _TIMESTAMP(date) //返回当前data的unix的时间戳
FROM_UNIXTIME() //返回UNIX时间戳的日期值
WEEK(date) //返回日期date为一年中的第几周
YEAR(date) //返回如期date中的年份
DATEDIFF(starttime,endtime) //返回开始时间金和结束时间间隔的天数
第四部分:mysql预处理(待补充)
第五部分:事务处理(MyISAM不支持事务,InnoDB才支持)(待补充)
第六部分:存储(待补充)
第七部分:触发器(当修改了一张表的数据的时候,同时也修改了另外一张的数据)(待补充)
第八部分:补充
1.外键:一张表中的外键是另一张表的主键;
注:Innodb类型的表支持外键,MyISAM类型的表不支持外键,虽然可以创建成功,但是不起作用。
2.运行状态查询
a.只针对mysql
show status; //全部状态
show status like "com_select%"; //查询次数
show status like "com_insert%"; //插入次数
b.只针对InnoDB引擎的
show status like "InnoDB_rows%" //查询所有的
show status like "InnoDB_rows_read"
show status like "InnoDB_rows_updated"
show status like "InnoDB_rows_inserted"
show status like "InnoDB_rows_deleted"
c.其它
show status like "conections";//链接mysql的数量
show status like "Uptime";//服务器已经工作的描述
show status like "Slow_queries";//慢查询的次数(需要在配置中先开启,
查看慢查询相关配置:show variables like "%long%"; )
通过慢查询日志来查看那些语句执行的比较慢!!!!
第九部分:索引优化
使用语句:explain、desc
注意点:影响的行数决定了查询的时间!
1.索引的使用:
a.对于创建了多个索引,只要查询条件用到了最左边的列(第一个索引字段),索引就会被用到;反之, 如果没有用到第一个列,索引就不会用到。
b.使用like查询,后面如果是常量并且只有%号不在第一个字符,索引才能被用到。
c.如果对于大的文本文件进行搜索,使用全文索引而不使用like"%...%";
d.如果列名是索引,使用column is null将使用到索引,使用column is not null则不会使用到索引;
e.使用or查询的时候,or前面和后面的两个字段必须都加上索引,否则索引用不上;
and查询则只需要一个字段添加索引就会用到索引;
f.where条件对应的字段类型不对,也会用不上索引(如:作为条件的字段是varchar类型,并添加了索 引,但查询的时候字段却使用的是int类型,此时查询的时候,mysql会放弃使用索引);
2.在某些情况下,mysql不使用索引会比使用索引搜索更快(很少,mysql自己会判断)
3.查看索引的使用情况
使用命令:show status like 'Handler_read%'
结果:
Handler_read_key:代表了一个行被索引读的次数;如果索引正常工作,它的值会很高;
Handler_read_rnd_next:如果他的值很高,则意味着查询运行低效,应该建立索引补救。
第十部分:表优化
1.检查表:check table tablename;
2.优化表:optimize table tablename;
第十一部分:数据的导入导出
1.数据导出:d:\soft\wamp\bin\mysql\mysql5.6.17\bin>mysqldump -uroot -p test > c:/test.sql
2.数据导入:d:\soft\wamp\bin\mysql\mysql5.6.17\bin>mysql -uroot -p test < c:/test.sql
第十二部分:MyISAM
读锁:某个人读锁了一张表,其它人可以读,但是所有人都不可写增删改;
写锁:某个人读锁了一张表,只有本人可以读增删改,其它人都不可以增删改,连 读 也不可以;
1.加读锁:lock table tablename read;
2.加写锁:lock table tablename write;
3.解锁: unlock tables;
第十三部分:服务器的优化
a.四种字符集的选择:服务器字符集、数据库字符集、客户端字符集、连接字符集。
设置方法:在mysql配置文件中【client】的属性:default-character-set=utf8
(控制户服端字符集和连接字符集)
在mysql配置文件中【mysqld】的属性: character-set-server=utf8
(控制服务器字符集和数据库字符集以及继承下来的表的字符集)
还有注意【mysqld】中的校验字符集: collation-server=utf8-general-ci;主要是作用于排序。
第十四部分:socket问题
mysql配置文件中:
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
有时候登录的时候由于socket问题登录的时候,可以使用新的命令,重新制定协议主机等:
命令:mysql -uroot -p密码 --protocol tcp --hlocalhost
如果socket文件丢失,重启mysql即可。
第十五部分:MySQL root密码破解
1.关闭进程或者服务:pkill mysqld
2.跳过用户授权表:D:\soft\wamp\bin\mysql\mysql5.6.17\bin mysqld_safe --skip-grant-tables --users=mysql&
所有用户的表都存在于mysql的user表中。
3.修改密码:update mysql.user set password=password('123') where user= "root" and host="localhost"
4.杀掉进程,重启mysql即可。