云顶娱乐手机版-云顶娱乐v1.8

云顶娱乐手机版拥有更好的使用效果,云顶娱乐v1.8每天有上万玩家一起在线游戏,赶快加入吧,云顶娱乐手机版已经成为国内的少数几家集大型网络游戏研发与运营和社区服务为一体的全新互联网娱乐平台,佳网络线上娱乐城。

MySQL常用命令,Server中的谓词和平运动算符

前言

  在近些日子的劳作中,由于投机粗(zuo)心(si)误update操作造成几百行的多少现身谬误,在焦心的同有的时候候(那时本人以致不精晓除了备份之后还应该有binlog日志复苏)立马查资料学习binlog的复苏,随后立即张开了还原。即便能够伪装本身没出错(emmmmm......最终照旧得承认的!),但下班之后心理不可能长时间平复,立马展开Computer举行叁回试验记录本领对得起本身犯的荒谬。

  注:此番实验是在Wnidows下展开的(网络Linux挺多,不过Windows的吗少,加上本身小编的微型计算机也是Win7就归纳做贰次尝试吧!

 


 

1、索引分类
   1、普通索引
   2、唯一索引
   3、主键索引
   4、外键索引
2、普通索引(index)
   1、使用规则
      1、一个表中可以有多个index字段
      2、字段的值可以有重复,也可以为NULL值
      3、经常把做查询条件的字段设置为index字段
      4、index字段的key标志为: MUL
   2、创建
      1、创建表时创建index
         create table t1(
         ... ...,
         ... ...,
         index(id),
         index(name));
      2、在已有表中添加索引字段
         1、语法格式
            create index 索引名 on 表名(字段名);
            # 索引名一般和字段名一样
   3、查看
      1、desc 表名;  ->查看KEY标志为 MUL
      2、show index from 表名G;
   4、删除
      drop index 索引名 on 表名;
      注意:
         删除普通索引只能一个一个删除
3、唯一索引(unique)
   1、使用规则
      1、一个表中可以有多个 unique 字段
      2、unique字段的值不允许重复,可以为空值NULL
      3、unique的KEY标志是 UNI
   2、创建(基本等同index创建)
      1、创建表时创建
         unique(字段名),
         unique(字段名)
      2、已有表中创建
         create unique index 索引名 on 表名(字段名);
      3、查看、删除唯一索引
         desc 表名;
         show index from 表名;
         drop index 索引名 on 表名;
4、主键索引(primary key) && 自增长属性(auto_increment)
   1、使用规则
      1、一个表中只能有一个主键字段
      2、对应字段的值不允许重复 且 不能为空值NULL
      3、主键字段的KEY标志为 PRI
      4、把表中能够唯一标识一条记录的字段设置为主键,通常把表中记录编号的字段设置为主键
   2、创建主键(PRI)
      1、创建表时创建
         1、字段名 数据类型 primary key auto_increment,
         2、
            id int auto_increment,
            ... ...,            # 设置自增长起始值
            primary key(id))auto_increment=10000;
      2、删除主键
         1、先删除自增长属性(modify)
            alter table 表名 modify id int;
         2、删除主键
            alter table 表名 drop primary key;
      3、在已有表中添加主键
         alter table 表名 add primary key(字段名);
5、外键
   1、定义 
      让当前表字段的值在另一个表的范围内选择
   2、语法格式
      foreign key(参考字段名)
      references 被参考表名(被参考字段名)
      on delete 级联动作
      on update 级联动作
   3、案例
      表1、缴费信息表(财务)
         学号  姓名    班级   缴费金额
            1   唐伯虎  AID01   28000
            2   点秋香  AID01   20000

      表2、学生信息表(班主任)
         学号  姓名   缴费金额
           1   唐伯虎  28000
            2   点秋香  20000

      1、创建缴费信息表
         create table jftab(
         id int primary key,
         name char(15),
         class char(5),
         money int
         )default charset=utf8;

         insert into jftab values
         (1,"唐伯虎","AID01",28000),
         (2,"点秋香","AID01",20000),
         (3,"祝枝山","AID01",22000);
      2、创建学生信息表(从表)
         create table bjtab(
         stu_id int,
         name char(15),
         money int,
         foreign key(stu_id) references jftab(id)
         on delete cascade
         on update cascade
         );
   4、级联动作
      1、cascade :数据级联更新
         当主表删除记录 或者 更新被参考字段的值时,从表会级联更新
      2、restrict 默认
         1、当删除主表记录时,如果从表中有相关联记录则不允许主表删除
         2、更新同理
      3、set null
         1、当主表删除记录时,从表中相关联记录的参考字段值自动设置为NULL
         2、更新同理
      4、no action
         on delete no action on update no action
         同 restrict,都是立即检查外键限制        
   5、删除外键
      alter table 表名 drop foreign key 外键名;
      1、外键名的查看方式
         show create table 表名;
   6、已有表中添加外键
      ## 会受到表中原有数据的限制
      alter table 表名 add foreign key(参考字段名)
      references 被参考表名(被参考字段名)
      on delete 级联动作
      on update 级联动作;
   7、外键使用规则
      1、两张表被参考字段和参考字段数据类型要一致
      2、被参考字段必须是 key 的一种,通常是 primary key
6、数据导入
   1、作用:把文件系统的内容导入到数据库中
   2、语法
      load data infile "文件名"
      into table 表名
      fields terminated by "分隔符"
      lines terminated by "n"
   3、示例
      把 /etc/passwd 文件中的内容导入到db2库下的userinfo表
      tarena :  x  :  1000 : 1000 :
      用户名  密码    UID号  GID号
      tarena,,, : /home/tarena : /bin/bash
      用户描述    用户主目录     登录权限
                                 /bin/false
                                              /usr/sbin/nologin
   4、操作步骤
      1、在数据库中创建对应的表
         create table userinfo(
         username char(20),
         password char(1),
         uid int,
         gid int,
         comment varchar(50),
         homedir varchar(50),
         shell varchar(50)
         );
      2、将要导入的文件拷贝到数据库的默认搜索路径中
         1、查看数据库的默认搜索路径
            show variables like "secure_file_priv";
            /var/lib/mysql-files
         2、Linux命令行输入:
            sudo cp /etc/passwd  /var/lib/mysql-files/
      3、执行数据导入语句
         load data infile "/var/lib/mysql-files/passwd"
         into table userinfo
         fields terminated by ":"
         lines terminated by "n";
   5、练习:将AID1709.csv文件导入到数据库中
      # csv文件单元格之间以 , 分隔

      /var/lib/mysql-files/AID1709.csv
      ls -l AID1709.csv
      rw-------
      chmod 666 AID1709.csv

      1、在数据库中创建对应的表
         id  姓名  成绩  手机号  班级
         create table scoretab(
         id int,
         name varchar(20),
         score float(5,2),
         phone char(11),
         class char(7)
         )default charset=utf8;
      2、把导入的文件复制到数据库的默认搜索路径中
         cp   源文件   目标路径
         cp  /home/tarena/AID1709.csv  /var/lib/mysql-flies/
         ######## 用 TAB 键 补齐路径 #######
      3、执行数据导入语句
         load data infile "/var/lib/mysql-files/AID1709.csv"
         into table scoretab
         fields terminated by ","
         lines terminated by "n";

         # 修改文件权限 chmod 666 AID1709.csv
7、数据导出
   1、作用
      将数据库表中的记录保存到系统文件里
   2、语法格式
      select ... from 表名
      into outfile "文件名"
      fields terminated by "分隔符"
      lines terminated by "n";
   3、把userinfo表中的username、password和uid导出到文件user.txt
      select username,password,uid from userinfo
      into outfile "/var/lib/mysql-files/user.txt"
      fields terminated by ","
      lines terminated by "n";

      1、sudo -i
      2、cd /var/lib/mysql-files/
      3、cat user.txt
   4、注意
      1、导出的内容由SQL查询语句决定
      2、执行导出命令时路径必须指定对应的数据库搜索路径
8、表的复制
   1、语法格式
      create table 表名 select 查询命令;
   2、示例
      1、复制userinfo表中的全部记录,userinfo2
         create table userinfo2 select * from userinfo;
      2、复制userinfo表中username,password,uid三个字段的第2-10条记录,userinfo3
         create table userinfo3 select username,password,uid from userinfo limit 1,9;
   3、复制表结构
      create table 表名 select 查询命令 where false;
   4、注意
      复制表的时候不会把原有表的 key 属性复制过来
9、嵌套查询(子查询)
   1、定义
      把内层的查询结果作为外层的查询条件
   2、示例
      1、把uid的值小于 uid 平均值的用户名和uid号显示出来
         select username,uid from userinfo
         where uid < (select avg(uid) from userinfo);
10、连接查询
   1、内连接
      1、定义
         从表中删除与其他被连接的表中没有匹配到的行
      2、语法格式
         select 字段名列表 from 表1 
         inner join 表2 on 条件 inner join 表3 on 条件;
      3、示例
         1、显示省市的详细信息
            select sheng.s_name,city.c_name from sheng
            inner join city on sheng.s_id=city.cfather_id;
         2、显示省市县详细信息
            select sheng.s_name,city.c_name,xian.x_name from sheng
            inner join city on sheng.s_id=city.cfather_id
            inner join xian on city.c_id=xian.xfather_id;     
   2、外连接
      1、左连接
         1、定义
            以左表为主显示查询结果
         2、语法格式
            select 字段名列表 from 表1
            left join 表2 on 条件;
         3、示例
            1、以省表为主显示省市详细信息
               select sheng.s_name,city.c_name from sheng
               left join city on sheng.s_id=city.cfather_id;
            2、显示省市区详细信息,要求县全部显示
               select sheng.s_name,city.c_name,xian.x_name from sheng left join city 
               on sheng.s_id=city.cfather_id
               right join xian on city.c_id=xian.xfather_id;
            3、显示省市区详细信息,要求 市 全部显示
               select sheng.s_name,city.c_name,xian.x_name from sheng
               right join city on sheng.s_id=city.cfather_id
               left join xian on city.c_id=xian.xfather_id;
            #### 结果集 ####
      2、右连接
         用法同左连接,以右表为主显示查询结果
11、多表查询
   1、select 字段名列表 from 表名列表;  # 笛卡尔积
   2、select 字段名列表 from 表名列表 where 条件;
      等同于 内连接 inner join

正文导读:删除表中的多寡的方法有delete,truncate, 当中TRUNCATE TABLE用于删除表中的富有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有WHERE 子句的 DELETE 语句看似;不过,TRUNCATE TABLE 速度更加快,使用的系统资源和业务日志财富越来越少。下边介绍SQL中Truncate的用法

MySQL常用命令,Server中的谓词和平运动算符。  

刚管理完“挖矿”事件,在做最终三个MySQL NBU备份的时候,开掘从库不寻常,好奇的是怎么主从状态特别未有报告警察方呢?先不管这么多了,管理了那一个难点再通盘告警内容。

1、初识binlog

(1)MySQL的binlog正是豪门平日所说的Binary Log,即bin-log,是MySQL存款和储蓄对数据库更动的二进制文件,也便是记录了具有DDL与DML(select除此之外)语句,利用它首要能够做两件事:

  • 数据恢复生机:通过mysqlbinog工具实行苏醒;
  • 数码复制:MySQL Replication在Master端开启binlog,Mster把它的二进制日志传递给slaves来达成master-slave数据一致的指标。

(2)怎样查看MySQL的日志景况(是不是开启等),当MySQL还没开启时候,通过命令:show variables like ‘log_bin%'查看

mysql> show variables like 'log_bin%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin                         | OFF   |
| log_bin_basename                |       |
| log_bin_index                   |       |
| log_bin_trust_function_creators | OFF   |
| log_bin_use_v1_row_events       | OFF   |
+---------------------------------+-------+
5 rows in set

(3)如何在Wnidows在修改log_bin状态为ON开启呢?

  • 找到C:ProgramDataMySQLMySQL Server 5.7my.ini文件(潜心:是C盘下遮掩文件夹ProgramData,并非Program Files下)  

  图片 1

  • 扩大/修改常用的布局属性

  图片 2

(4)常用简单属性表明:除了以上log_bin、binlog_format五个轻便的布局外,还足以有任何的性质配置

  • log-bin = /xxx/xxx/mysql_bin #binlog日志文件,以mysql_bin开头,六个数字结尾的文件:mysql_bin.000001,并且会将文件存储在相应的xxx/xxx路径下,如果只配置mysql_bin的话默认在C:ProgramDataMySQLMySQL Server 5.7Data下;``
  • binlog_format = ROW #binlog日志格式,默认为STATEMENT:每一条SQL语句都会被记录;ROW:仅记录哪条数据被修改并且修改成什么样子,是binlog开启并且能恢复数据的关键;
  • expire_logs_days= 7 #binlog过期清理时间;
  • ``max_binlog_size = 100m #binlog每个日志文件大小;
  • binlog_cache_size = 4m #binlog缓存大小;
  • max_binlog_cache_size = 512m #最大binlog缓存大小。

 

   谓词和平运动算符同盟使用是大家收获可观数据的一流路径。

一、错误消息

2、恢复数据测量试验

(1)准备表user

mysql> select * from user;
+----+----------+----------------------------------+
| id | name     | password                         |
+----+----------+----------------------------------+
|  1 | Zhangsan | 2d7284808e5111e8af74201a060059ce |
|  2 | Lisi     | 2d73641c8e5111e8af74201a060059ce |
|  3 | Wangwu   | 2d73670c8e5111e8af74201a060059ce |
+----+----------+----------------------------------+
3 rows in set

 (2)误update恢复生机,比方自个儿在update user set name = 'Lijian' where id = 1;的时候忘写where id = 1主要原则,结果产生整个数码被更新

mysql> update user set name ='Lijian';
Query OK, 3 rows affected
Rows matched: 3  Changed: 3  Warnings: 0
mysql> select*from user;
+----+--------+----------------------------------+
| id | name   | password                         |
+----+--------+----------------------------------+
|  1 | Lijian | 2d7284808e5111e8af74201a060059ce |
|  2 | Lijian | 2d73641c8e5111e8af74201a060059ce |
|  3 | Lijian | 2d73670c8e5111e8af74201a060059ce |
+----+--------+----------------------------------+
3 rows in set

  那年你势必很慌,可是先不要慌(实际上慌也没用),先看未有备份,若无再看是还是不是开启binlog(show variables like ‘log_bin%'),假如两岸都并未(小编深信大家都会定时备份+binlog)从数据库这几个范围是不能够复苏的了,如若binlog开启的话,一切都好说。就起来实行上边几步苏醒吧!

  率先步:找到当前mysql记录的binlog文件,试行show master status;

  第二步:查看binlog,定位误操作的pos或许时间段。试行show binlog events in 'mysql_bin.000001';

mysql> show binlog events in 'mysql_bin.000001';
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| Log_name         | Pos | Event_type     | Server_id | End_log_pos | Info                                  |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| mysql_bin.000001 |   4 | Format_desc    |         1 |         123 | Server ver: 5.7.12-log, Binlog ver: 4 |
| mysql_bin.000001 | 123 | Previous_gtids |         1 |         154 |                                       |
| mysql_bin.000001 | 154 | Anonymous_Gtid |         1 |         219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
| mysql_bin.000001 | 219 | Query          |         1 |         291 | BEGIN                                 |
| mysql_bin.000001 | 291 | Table_map      |         1 |         344 | table_id: 108 (test.user)             |
| mysql_bin.000001 | 344 | Update_rows    |         1 |         650 | table_id: 108 flags: STMT_END_F       |
| mysql_bin.000001 | 650 | Xid            |         1 |         681 | COMMIT /* xid=22 */                   |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
7 rows in set

  第三步:进入C:ProgramDataMySQLMySQL Server 5.7Data执行mysqlbinlog --start-position=219 --stop-position=681 mysql-bin.000001 > e:\update.sql将update部分单独备份出来到E盘下为update.sql  

 图片 3 

  第四步:登录mysql(mysql -uroot -p123)

  第五步:实行source e:update.sql复苏数据,部分截图如下:

  图片 4

  **第六步:查看结果**

mysql> select * from user;
+----+----------+----------------------------------+
| id | name     | password                         |
+----+----------+----------------------------------+
|  1 | Zhangsan | 2d7284808e5111e8af74201a060059ce |
|  2 | Lisi     | 2d73641c8e5111e8af74201a060059ce |
|  3 | Wangwu   | 2d73670c8e5111e8af74201a060059ce |
+----+----------+----------------------------------+
3 rows in set

当您不再需求该表时, 用 drop;当你仍要保留该表,但要删除全体记录时, 用 truncate;当您要去除部分记录时(always with a WHERE clause), 用 delete.

 

从库show slave status G见到的错误新闻如下:

3、总结

  (1)采纳binlog只可以针对针对数据量不是相当多的景观,真正的生产条件每种多少个G的日记文件,不仅是光靠binlog苏醒的,还应该有更加多的格局,在此只是做贰个简便的求学记录!

  (2)剖断时间binlog日志的光阴阶段与pos地点很注重,可是急需通晓有关binlog的不少参数!

  (3)之后天真的感觉开荒职员就没有要求太领会数据库相关的运转,不过今日经历过才晓得数据库的有关文化也是开辟人员必得询问的!

 

 

一、浅谈谓词

Slave_IO_Running: No
Slave_SQL_Running: Yes
Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin.000081' at 480141113, the last event read from './mysql-bin.000081' at 4, the last byte read from './mysql-bin.000081' at 4.'

Truncate是四个能力所能达到急速清空资料表内全部质感的SQL语法。並且能针对富有活动递增值的字段,做计数重新恢复设置归零再度总括的成效。

  谓词的定义:贰个运算结果为True、False或Unknown的逻辑表明式。它的运用范围有:where子句、Having子句、Check约束、联接查询的衔接条件等。

二、错误原因

 

亲自过问1,用于施行数据完整性为数据表增多约束:在职员和工人表中,仅允许工资大于0的职工存款和储蓄在表中。个中的谓词是“工资大于0”(SQL表明式:报酬>0)。

此处看见从库的io_thread已经告一段落,错误编号是1236,具体是由于读取主库的binlog日志地方(the first event 'mysql-bin.000081' at 480141113, the last event read from './mysql-bin.000081' at 4)不对导致基本失利创设失利。

一、Truncate语法

示例2,用于查询筛选数据的条件:查询职员和工人表供给只回去发卖部的职员和工人。在这之中谓词是“部门等于发售部”(SQL表明式:部门='出卖部')。

三、施工方案

[ { database_name.[ schema_name ]. | schema_name . } ]
    table_name
[ ; ]  

  

1.反省从库状态以及读取、施行的binlog音信

参数

  谓词和平运动算符的相互利用:

mysql> show slave status G
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: xx.xx.xx.xx
                  Master_User: username
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000081
          Read_Master_Log_Pos: 480141113
               Relay_Log_File: mysql9017-relay-bin.000163
                Relay_Log_Pos: 480141259
        Relay_Master_Log_File: mysql-bin.000081
             Slave_IO_Running: No
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 480141113
              Relay_Log_Space: 480141462
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 1236
                Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin.000081' at 480141113, the last event read from './mysql-bin.000081' at 4, the last byte read from './mysql-bin.000081' at 4.'
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 17
1 row in set (0.00 sec)

database_name
数据库的名号。

    1.透过逻辑运算符连接八个谓词(逻辑表明式),如使用AND和O普拉多。

2.查看主库的binlog内容

schema_name
表所属架构的称呼。

    2.谓词中选拔相比较运算符,如有些属性值大于或低于某钦赐个值。

[backup]# mysqlbinlog  mysql-bin.000081 >mysql-bin.log

table_name
要截断的表的称谓,或要去除其全体行的表的名称。

  

图片 5

 

  SQL Server中有部分主要字能够替代谓词语义的意思,也得以称为SQL Server中的谓词。

看样子主库binlog日志mysql-bin.000081最大的pos为480140557,但从库要读取的是'mysql-bin.000081' at 480141113,显著从库要读的pos值比主库自身存在的pos值大,导致读取不到,进而失败。

本文由云顶娱乐手机版发布于云顶娱乐,转载请注明出处:MySQL常用命令,Server中的谓词和平运动算符

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。