mysql常用知识点

忘记MYSQL密码怎么?

1 . 修改my.ini 文件,在文件中添加 skip-grand-tables 。 登录时无需密码

2 update mysql.user set password = password(“1234”);

flush privileges;  // 或 重启服务器

3. 修改my.ini去掉 skip-grand-tables

 

 

如何让MYSQL被所有的访问?

修改mysql.user host字段,可以设置为

%: 所有人都能访问

192.168.1

192.168.1.2

 

mysql支持常用的引擎?

MyISAM : 

1. 速度快

2. 表级锁定

3. 支持全文索引(fulltext),只支持英文

4. 外键:没有具体的作用只是声明一下。

5.  xxx.frm  : 表结构

xxx.MYD 数据

xxx.MYI  : 索引

InnoDB  (默认引擎):

1. 配置好了一样快

2. 行级锁定

3. 支持事务

4. 外键,级联完整性

5. 一张一个文件:比较大

heap/memory : 内存表

优点:速度快

缺点:重启表及数据就没有了。

 

 

 

 

 

如何分析一条SQL语句的性能?

使用 explain/desc 命令

 

如何判断两段php代码的性能?

function get_time()

{

$time = microtime();

$time = explode(' ', $time);

return (float)($time[1] + $time[0]);

}

 

什么情况下不使用索引?

有一张表user,有a,b,c,d字段,然后 a,b上有两个索引

SELECT * FROM user WHERE a =1 AND c=2     à   会

SELECT * FROM user WHERE a =1 OR c=2      à    不会

SELECT * FROM user WHERE a LIKE ‘%abc%’    à    不会

SELECT * FROM user WHERE a LIKE ‘abc%’      à   会

联合索引的使用情况:   index a_b(a,b,c)

SELECT * FROM user WHERE a = 1               à 会

SELECT * FROM user WHERE a = 1 AND b=1    à 会

SELECT * FROM user WHERE b = 1               à  不会

SELECT * FROM user WHERE b = 1 AND c=1       à 不会

 

建索引时要考虑:

select 为主还是以insert为主。

 

 

 

 

MYSQL中的日志?

普通日志:

错误日志:

bin(二进制)日志 记录下:insert,update,grant,delete等会修改数据库的SQL语句

慢日志 可以设置一个时间,然后MYSQL服务器会记录下慢于这外时间的SQL语句 

 

 

 

 

signedunsigned?以及int 系列类型的大小。

tinyint      :   signed  -128 ~ 127    unsigned 0 ~ 255

smallint     :   singed   ~ 32678 – 32767    unsged 0 ~ 65535

mediumint   :   千万

int         :    十亿

 

age tinyint unsigned  à  -99 ~ 99  

gender tinyint(1) unsigned,

varchar 和 char 有什么区别?

char     :   0~255

varchar  :    0~65535 

char(10)        如果我存  abc  实际占用硬盘10个字符  ,    更快一些

使用情况:如果字符比较短,而且字符的长度时char如,

ip char(15)

password char(32)

 varchar(10)      如果我存 abc  实际战胜硬盘 4 个字符,    慢一点

 

一个字符“汉”,对应字节: gbk/gb2312: 2字节   utf8:字节

 

 

 

设计数据表时,有哪些表间关系?如何判断?

1:1

1:N

N:N

原文地址:https://www.cnblogs.com/suihui/p/3238127.html