MySQL 常用命令

mysql 连接、数据库操作、数据库数据操作、数据库表字段操作

Posted by nolan on April 13, 2020

mysql 操作

  • mysql 服务启动

    mysql.server start
    
  • Mysql 连接

    • 本地数据库连接

      mysql -u root -p yourpassword
      
    • 远程数据库连接

      mysql -h 10.112.8.3 -u sjh -p yourpassword
      
  • 改密码

    set PASSWORD = PASSWORD("yourpassword123");    //mysql 语句必须以分号结束
    
    • 再将 yourpassoword123 改成别的
      mysqladmin -u root -p yourpassword123 password yourpassword456
      
  • 增加新用户

    • 需要先用 root 身份进入数据库,再输入 sql 语句进行操作;
    • 格式

          grant selsect,update on 数据库.* to 用户名@登录主机 identified by 密码
      
      
    • 示例
      • 增加一个用户 user1,具有增删改查权限,只可以在 localhost 上登录,
          grant select,delete,insert,update on '*.*' to  [email=user1@localhost]user1@localhost[/email] identified by  “”
        

数据库操作

  • 创建数据库

    create database database_name;
    
  • 修改指定数据库中所有 varchar 类型的表字段的字符集为 UTF8,并将排序规则修改为 utf8_general_ci
    SELECT CONCAT('ALTER TABLE `', table_name, '` MODIFY `', column_name, '` ', DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH, ') CHARACTER SET UTF8 COLLATE utf8_general_ci', (CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END), ';')
    FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA = 'databaseName'
    AND DATA_TYPE = 'varchar'
    AND
    (
        CHARACTER_SET_NAME != 'utf8'
        OR
        COLLATION_NAME != 'utf8_general_ci'
    );
    
  • 修改指定数据库中所有数据表的字符集为 UTF8,并将排序规则修改为 utf8_general_ci
    SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET  utf8 COLLATE utf8_unicode_ci;')
    FROM information_schema.TABLES
    WHERE TABLE_SCHEMA = 'databaseName'
    

数据操作

  • 显示所有数据库
    show databases;
    
  • 进入某特定数据库
    use database_name;
    
  • 显示某特定数据库中所有的表
    show tables;
    
  • 显示某个表的字段信息

    desc table_name;
    
  • 创建表

    create table  Table_Name (name char(100), path char(100), count int(10), firstName char(100), firstMD5 char(100), secondName char(100), secondMD5 char(100), thirdName char(100), thirdMD5 char(100));
    
  • 修改表名

    rename table Table_Name to Table_Name_New;
    
  • 删除表
    drop table Table_Name;
    
  • 插入数据

    insert into Table_Name(name,path,count,firstName,firstMD5,secondName,secondName, secondMD5, thirdName, thirdMD5) VALUES('test','test',1,'name1','md1','name2','md2','name3','md3')
    
  • 查询

    select * from Table_Name;
    
    select * from Table_Name where name = 'test';
    
    select * from Table_Name order by id limit 0,2;
    
    
    • 查询表中的重复数据
    select firstMD5, count(*) as count from Table_Name group by firstMD5 having count > 1;
    
    • 查询重复数据的其它字段的数据
    select folderName, path, firstMD5 from MIFit_Image where firstMD5 in (select firstMD5 from MIFit_Image group by firstMD5 having count(firstMD5) > 1);
    
  • 更改

    update Table_Name set folderName ='Mary' where id=1;
    
  • 删除

    delete from Table_Name where folderName = 'test';
    

数据表字段操作

  • 添加字段 (int 自增 不为 null 主键)

        alter table Table_Name add id int auto_increment not null primary key;
    
  • 修改字段的顺序 (id 放置最前)

    
    ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST | AFTER 字段名2;
    其中:
    
    字段名1:表示需要修改位置的字段的名称。
    数据类型:表示“字段名1”的数据类型。
    FIRST:指定位置为表的第一个位置。
    AFTER 字段名2:指定“字段名1”插入在“字段名2”之后。
    
    alter table MIFit_Image modify id int first;
    
    alter table MIFit_Image modify id int after name;
    
  • 移除 id 主键标志

    alter table Table_Name modify id int,drop primary key;
    
  • 修改字段名 name 为 folderName

    alter table Table_Name change name folderName char(100);
    
  • 删除字段

    alter table TableName drop folderName;
    
  • 加索引

    alter table TableName add index indexName(folderName);
    
  • 删除索引

    alter table TableName drop index indexName;