mysql-基本命令与索引

基本SQL命令

库管理

创建库(指定字符集):create database 库名 default charset = utf-8;
查看创建库的语句:show create database 库名;
切换库:use 库名;
查看当前所在库:select database();
查看库中已有表:show tables;
删除库:drop database 库名;

表管理

创建表(指定字符集):CREATE TABLES 表名(字段名,数据类型,...)DEFAULT CHARSET = UTF-8;
查看创建表的语句(字符集和存储引擎):show create table 表名;
查看表结构:desc 表名;
删除表:drop table 表名;
表记录管理:
    插入:insert into 表名 values(),(),...; 
          insert into 表名(字段名列表) values(),(),...;
    查询:select * from 表名;
          select 字段名1,字段名2,...from 表名;
    删除:delete from 表名 where 条件;
    更新:update 表名 set 字段名=值1,...where 条件;
表字段管理:
    添加:alter table 表名 add 字段名 数据类型 first ;
          alter table 表名 add 字段名 数据类型 after 字段名;
    修改:alter table 表名 drop 字段名;
    字段重命名: alter table 表名 change 旧字段名 新字段名 数据类型;
    表的重命名: alter table 表名 rename 新表名;

修改默认字符集

cd /etc/mysql/mysql.conf.d/
cp -p mysqld.cnf mysqld.cnf.bak
vi mysqld.cnf
     [mysqld]
     character_set_server = utf-8
/etc/init.d/mysql restart

SQL查询

排序:order by 字段名 ASC/DESC 升序/降序
范围:limit m,n  #放在最后
聚合函数:avg(),sum(),max(),min(),count(字段名)##Null不会被统计
分组:group by 
过滤:having  #having与group by联合使用,用来过滤由group by语句返回的记录集
              #where只能操作表中实际存在的列,having则可以操作聚合函数生成的显示列
去重:distinct

索引
mysql索引的数据结构为B Tree
优点:可以加快数据的检索速度
缺点:需要动态维护,降低了数据的维护速度,索引占用物理空间
索引性能分析:

  • 开启性能分析:set profiling = 1
  • 创建索引字段: create index 索引名 on 表名(字段名)
  • 执行sql命令
  • 查看性能分析结果:show profiling

索引分类

普通索引:index
    创建:create index 索引名  on 表名(字段名)
唯一索引:UNI,字段值可以为空,但不允许重复
    创建:create unique index 索引名  on 表名(字段名)
    删除:只能一个一个删
        show index from 表名;
        drop index 索引名 on 表名;
主键索引:PRI,字段值不能为空且不允许重复
    一个表中只能有一个字段为主键字段
    创建:alter table 表名 add primary key(字段名)  
    删除:先删除自增长属性 alter table 表名 modify 字段名 数据类型;
          删除主键 alter table 表名 drop primary key;
    已有表添加主键索引:alter table 表名 motify 字段名 数据类型 auto_increment;
外键索引:让当前表字段值在另外一个表字段范围内去选择
    创建:foreigin key(参考字段名)
          reference 被参考表名(被参考字段名)
          on delete 级联动作
          on update 级联动作
          alter table 表名 add foregin key(...)...
    级联动作:cascade 同步更新
              restrict 默认
              set null 
              no action
    删除:alter table 表名 drop foreign key 外键名;
          
    
原文地址:https://www.cnblogs.com/miloli/p/12447436.html