查看数据库编码格式
查看数据库编码格式: show variables like 'character_set_database';
查看数据表的编码格式:show create table <表名>;
查看 MySQL 数据列(column)的字符集:show full columns from <表名>;
创建数据库时指定数据库的字符集:create database <数据库名> character set utf8;
alter database mydb DEFAULT CHARACTER SET utf8;
修改数据库的编码格式:alter database <数据库名> character set utf8;
修改数据表格编码格式:alter table <表名> character set utf8;
修改表的默认字符集和所有列的字符集: ALTER TABLE table_name CONVERT TO CHARACTER SET character_name
修改字段编码格式:alter table <表名> change <字段名> <字段名> <类型> character set utf8;
查看当前安装的 MySQL 所支持的字符集:show charset;
在 my.cnf 修改默认的服务器字符集:character-set-server=utf8
改表结构
1)添加字段:alter table table_name add column column_name varchar(64) AFTER `uid` ; (在哪个字段后面添加)
2)删除字段:alter table table_name drop column column_name;
3)修改字段类型:
alter table 表名 modify column 字段名 类型; 【修改列类型】
alter table 表名 change 旧字段名 新字段名 类型; 【修改列名和列类型】
4)添加外键:
alter table users add constraint users_ibfk_1 FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`);
5)修改表的默认字符集和所有列的字符集:
ALTER TABLE table_name CONVERT TO CHARACTER SET character_name
1、查询单条数据使用 limit 1,当查询到有一条数据的时候会停止继续扫描,某些情况下可以有效提高查询效率
2、避免使用select *,应该需要什么拿什么(题外话:曾经遇到过表只有几十条数据,其中一个text类型的字段内容超长,导致sql极慢)
3、表字段不要默认null值,应该设置not null,int可以设置默认为0。sql语句中 is null 到导致扫描全表,包含null值的列不能建立索引
3、!= 和<>操作符对索引无效,会导致全表扫描
4、in 和 not in对索引无效,导致全表扫描,应该使用exists代替
5、有 or的时候,or的两边只要有一个字段没有索引也会导致全表扫描
6、like '%abc%' 会导致全表扫描,like 'abc%' 对索引有效
7、尽量不要对字段进行表达式或函数操作,num/2 = 100 和 LEFT(str, 1) = 'abc' 对索引无效,会导致扫描全表
8、为abc建立复合索引,那个 where条件是 a=1 and b=3 and c=3, 效率会很高并且比单索引要快,但是如果c=1 and b=2 and a=3, 将导致索引无效扫描全表
9、索引可以提高select的效率,但是会降低insert和update的效率,因为每次更新插入数据都会
10、数字类型比字符串效率更高,数字类型只对比一次,字符串会逐个对比
11、varchar/nvarchar 比 char/nchar 消耗的内存更小,查询速度会更快
在使用mysql的过程中,有几点需要注意:
编码格式,mysql默认编码格式不是utf-8,需要在配置文件中修改mysql的字符编码格式;
sqlmode,有时候使用中文或出现插入错误,可能是sqlmode不正确,需要修改配置文件中的sqlmode值;
数据库备份,在正式环境下一定不能忘记备份数据库,可通过系统的定时任务备份数据库,或者备份Data文件夹;
binlog,binlog记录了数据库所有的操作,可通过binlog恢复数据库,且比定时任务更精确。
在linux中安装mysql-5.7时,默认不是utf8字符格式,设置方式:
mysql命令行运行sql文件:
授予用户远程访问权限:
db_name :指定数据库名,所有则为 *
table_name:指定表名,所有则为 *
指定可访问的ip,或所有ip:%
UserName :用户名
password :密码