zoukankan      html  css  js  c++  java
  • 【MySQL】探究之常用SQL

    一些SQL命令(不断更新,我总记不住,哭)

    List

    建库建表
    GBK: CREATE DATABASE `test_db1` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
    UTF-8: CREATE DATABASE `test_db2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    
    CREATE TABLE `test_table` (
      `id` bigint(20) unsigned NOT NULL COMMENT '主键',
      `gmt_create` datetime NOT NULL COMMENT '创建时间',
      `content` varchar(20) DEFAULT NULL COMMENT '说明',
      PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='test create table'
    表的重命名(不区分大小写)
    rename table haha to contestInfo;  
    列的重命名
    mysql中:  
    alter table 数据表名 change 原列名 新列名 新列类型;   
    oracle中:  
    alter table 数据表名 rename 原列名 to 新列名; 
    编码
    修改数据库编码 ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 
    修改表编码 ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
    修改字段编码 ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
    修改结构
        mysql>  
        #表position增加列test  
        alter table position add(test char(10));  
        #表position修改列test  
        alter table position modify test char(20) not null;  
        #表position修改列test默认值  
        alter table position alter test set default 'system';  
        #表position去掉test默认值  
        alter table position alter test drop default;  
        #表position去掉列test  
        alter table position drop column test;  
        #表depart_pos删除主键  
        alter table depart_pos drop primary key;  
        #表depart_pos增加主键  
        alter table depart_pos add primary key PK_depart_pos (department_id,position_id);
    添加删除索引
    show index from tblname;
    
    ALTER TABLE table_name ADD INDEX index_name (column_list)
    ALTER TABLE table_name ADD UNIQUE (column_list)
    ALTER TABLE table_name ADD PRIMARY KEY (column_list)
    
    CREATE INDEX index_name ON table_name (column_list)
    CREATE UNIQUE INDEX index_name ON table_name (column_list)
    
    DROP INDEX index_name ON talbe_name
    ALTER TABLE table_name DROP INDEX index_name
    ALTER TABLE table_name DROP PRIMARY KEY
    大批量删除
    delete from contestinfo where `id`<3000;
    select sleep(3);
    delete from contestinfo where `id`<6000;
    select sleep(3);
    delete from contestinfo where `id`<9000;
    ...
    binlog相关
    备库上执行一定要考虑事务是否写binlog
    set session SQL_LOG_BIN = 0; //关闭,不写binlog
    set session SQL_LOG_BIN = 1; //开启,写binlog,default
    
    mysql>show master status; 查看当前正在使用的二进制日志
    mysql>show binlog events in'mysql-bin.000001'; 查看二进制日志记录的事件[from position]
    mysql>flush logs; 二进制日志滚动
    mysql>show binary logs; 查看所有二进制日志
    mysql>purge binary logs to 'mysql-bin.000003'; 删除二进制日志
    
    Master_Log_File & Read_Master_Log_Pos:下一个传输的主日志信息。
    Relay_Master_Log_File & Exec_Master_Log_Pos:下一个执行的主日志信息。
    Relay_Log_File & Relay_Log_Pos:下一个执行的中继日志信息。
    
    中继日志出错:
    mysql> CHANGE MASTER TO
           MASTER_LOG_FILE='<Relay_Master_Log_File>',
           MASTER_LOG_POS=<Exec_Master_Log_Pos>;
    mysql> START SLAVE;
    
    stop slave ;
    reset slave [ALL] relay logs,file and post,ALL will clear ip,port,user,pass;
    CHANGE MASTER TO
    MASTER_HOST='xxx.xxx.xxx.xxx',
    MASTER_PORT=xxxx, 切记int
    MASTER_USER='xxxxx',
    MASTER_PASSWORD='xxxxx',
    MASTER_LOG_FILE='mysql-bin.xxxxxx',
    MASTER_LOG_POS=xxxxx; 切记int
    start slave;
    select相关
    查询时强制区分大小写
    SELECT * FROM U WHERE binary name LIKE 'a%';  
    
    行号
    SELECT
        @row := @row + 1 as row,
        t.*
    FROM some_table t, (SELECT @row := 0) r
    
    截取
    SELECT 
        SUBSTRING_INDEX(phone,'-',2) AS PNumber,
        SUBSTRING_INDEX(phone,'-', -1) AS Ext,
        phone 
    FROM tb_user WHERE ucid=271338;  
    +--------------+------+-------------------+    
    | PNumber      |  Ext |       phone       |    
    +--------------+------+-------------------+    
    | 010-88888882 | 5612 | 010-88888882-5612 |    
    +--------------+------+-------------------+ 
    
    拼接
    UPDATE tb_user SET   
    phone=CONCAT( SUBSTRING_INDEX( phone,'-',2 ), '-', '1234' )    
    WHERE ucid = 271338;
    +--------------+------+-------------------+    
    | PNumber      |  Ext |       phone       |    
    +--------------+------+-------------------+    
    | 010-88888882 | 1234 | 010-88888882-1234 |    
    +--------------+------+-------------------+ 
    
    group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])
    select id,group_concat(name order by name desc Separator ';') from aa group by id;  
    +------+---------------------------------------+
    | id| group_concat(name order by name desc) |
    +------+---------------------------------------+
    |1 | 20;20;10 |
    |2 | 20|
    |3 | 500;200|
    +------+---------------------------------------+
    3 rows in set (0.00 sec)
    
    数据库备份和恢复
    mysqldump -h127.0.0.1 -uroot -P$MYSQL_PORT --default-character-set=utf8 -q -e --single-transaction --master-data=2 --result_file=/u01/bak/dump_${DB_NAME}.sql -B $candidates
    
    content:
    -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000050', MASTER_LOG_POS=349656998; 
    CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test_db_1` /*!40100 DEFAULT CHARACTER SET utf8 */;
    USE `test_db_1`;
    
    -n, --no-create-db
    -t, --no-create-info
    -d, --no-data
    -B, --databases
    -e, --extended-insert Use multiple-row INSERT syntax that include several VALUES lists.
    -q, --quick         Don't buffer query, dump directly to stdout.
    --add-drop-database                 FALSE
    --add-drop-table                    TRUE
    --add-drop-trigger                  FALSE
    --add-locks                         TRUE
    --default-character-set=name        utf8
    --tz-utc                            TRUE SET TIME_ZONE='+00:00' at top of dump
    --result_file                       输出结果到
    --single-transaction --master-data=2组合使用,保留位点
    
    mysql -h localhost -P 6688 -u root -ptest  database< test_db.sql
  • 相关阅读:
    Python 字典(Dictionary)操作详解
    MySQL root密码忘记后更优雅的解决方法
    linux下升级python
    mysql实现复杂groupby : GROUP_CONCAT
    Python常用time处理
    spark安装
    python2脚本批量转成python3
    linux zip压缩文件
    dataframe 差集
    012.mysql-mysql查询字段排序规则、数据库编码、表编码,修改排序规则
  • 原文地址:https://www.cnblogs.com/zhiqian-ali/p/MySQL.html
Copyright © 2011-2022 走看看