mysql -操作命令-常用

//varchar

MySQL 5.0 版本以上,VARCHER(n)中的 n 指的是 n 个字符(英文字母、汉字、符号都是字符)。
无论存放的是数字、字母还是UTF8汉字,都可以存放50个。

//索引长度

utf-8 一个中文3个字节 key word(4)是4个中文 ,3*4=12 相当于建立12字节长度的索引
如果是varchar 会发生相应变化+1到2,所以keylen为14
key leng

   4倍关系
2进制-16进制-utf-8编码-汉字
128     32

//数据类型

decimal(20,6) 保留6位小数;算上小数共计20位

//select
#清除查询缓存
RESET QUERY CACHE;

//sql执行状态
#数据库执行sql的各种属性值的大小
show VARIABLES like '%size%';
#将此值设置为on  mysql会自动为每一条查询生成详细请求
show VARIABLES LIKE 'profiling';
set 'profiling' = on
#查看执行过的查询 其中有数字id
show PROFILES;
#查看2个查询的执行状态属性
SHOW PROFILE for QUERY 2;


//库
show databases;

//表
#查看所有表
show TABLES;
#查看建表语句
show create TABLE tab1;

#列出字段
desc table_name;
#更改字段
ALTER TABLE address MODIFY column `NAME` VARCHAR(1) NOT NULL DEFAULT '';

//注释
ALTER TABLE table_name COMMENT='这是表的注释';
ALTER table table_name MODIFY `column_name` datetime DEFAULT NULL COMMENT '这是字段的注释'

//索引操作
show index from product;
#指定索引名称添加索引,并设置索引长度
alter table product add index type_index (`type`(4)) ;
#添加复合索引
alter table product add index name_type_index (`NAME`,`type`) ;
#删除索引
alter table product DROP INDEX `type_index`;
#创建索引是可能用到 得到最长的数据 对于使用索引时是个重要参数
select * from product ORDER BY LENGTH(detail) LIMIT 1;
#去重查询第一个汉字个数  去重后的第一个数的数量  为a  ,查询总数为b  a/b得到占比,对于使用索引时是个重要参数
select COUNT(DISTINCT LEFT(detail,1))  from  product;
#添加列  建立伪hash字段
ALTER TABLE product ADD crcurl int UNSIGNED not null DEFAULT 0;
UPDATE product SET crcurl = CRC32(`detail`) WHERE detail is not null;
alter table product add index detail_index (`detail`(16)) ;
alter table product add index crcurl_index (crcurl) ;
#从新规整数据和索引文件
ALTER TABLE product ENGINE myisam;
OPTIMIZE TABLE product;

#列出字段


//调优
当 查询靠后的数据>10万  会导致特别慢
limit,offset是先从上到下全表扫描 ,扫描了之前所有没用的
//表的优化与列的类型选择
1.整型>datetime>varchar>blob #原因:整型和time运算快节省空间  varcahr需要考虑字符集转换与排序时的校对集(控制字符排序谁优先的) blob无法使用内存临时表
2.够用就行,不用慷慨 #原因;空间大浪费内存导致查询变慢
3.尽量避免用null #原因: null不利于索引,null实际占据空间更大 NULL 和其他 + - * / 都为null
//sql执行顺序,想要优化SQL,必须清楚知道SQL的执行顺序,这样再配合explain才能事半功倍!完整SQL语句
select distinct
        <select_list>
from
    <left_table><join_type>
join <right_table> on <join_condition>
where
    <where_condition>
group by    ## group by  会区分 null 和 空字符串
    <group_by_list>
having
    <having_condition>
order by
    <order_by_condition>
limit <limit number>

SQL执行顺序

1、from <left_table><join_type>
2、on <join_condition>
3、<join_type> join <right_table>
4、where <where_condition>
5、group by <group_by_list>
6、having <having_condition>
7、select
8、distinct <select_list>
9、order by <order_by_condition>
10、limit <limit_number>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值