忘记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语句
signed与unsigned?以及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