美文网首页后端开发Linux@IT·互联网
基于Linux的MySQL操作实例(修改表结构,MySQL索引,

基于Linux的MySQL操作实例(修改表结构,MySQL索引,

作者: 海渊_haiyuan | 来源:发表于2017-01-17 23:09 被阅读152次

    基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎)

    前言

    本篇是基于Linux下针对MySQL表结构的修改,MySQL索引的操作以及MySQL数据引擎的配置和说明。
    本篇结合上一篇文档,基于Linux的MySQL操作实例(软件安装,mysql基本操作,mysql数据类型,建表、插入数据操作)
    若是有兴趣的朋友可以去看看。
    http://www.jianshu.com/p/444482ff5986
    根据本人的一贯风格,本篇依旧是前面就这几点做一些概述,并不会涉及太多的概念或理论,大篇幅的进行实际的命令实例操作。
    最后依旧欢迎各路大神批评指教,鄙人不胜感激。谢谢大家。

    修改数据库表结构

    alter table 表名 执行动作;

    执行动作:

    • 添加新字段(add)
    • 删除已有字段(drop)
    • 修改字段类型(modify)
    • 修改字段名(change)

    语法格式

    添加新字段

    add 添加新字段
    add 字段名 类型(宽度);
    add 字段名 类型(宽度) 约束条件 ;
    add 字段名 类型(宽度) 约束条件 first;
    add 字段名 类型(宽度) 约束条件 after 字段名;

    eg:

    alter  table  t1  add   class  char(7)  default "nsd1609" first,add  tel  char(11) ,add  sex  enum  ("boy","girl")  default  "boy" after  name;
    

    删除字段

    drop 删除字段
    drop 字段名

    eg:

    alter table   t1  drop  name,drop  sex;
    

    修改字段类型

    modify 修改字段类型
    不能与字段已经存储的数据冲突
    modify 字段名 类型(宽度) 约束条件;

    eg:

    mysql> alter table   t1
        -> modify  
        -> sex  enum("boy","girl","no") not null  default  "no";
    

    修改字段名

    change 修改字段名
    change 原字段名 新字段名 类型(宽度) 约束条件;

    eg:

    alter table  t1  change  tel  iphone char(11);
    

    修改表名

    alter table 原表名 rename [to] 新表名;

    eg:

    alter table  t1 rename t111;
    

    mysql索引

    概述

    索引:相当于 "书的目录"

    • 索引的优点
      • 加快查询记录的速度.
    • 索引的缺点
      • 会减慢写的速度( insert update delete ).
      • 占用物理存储空间.

    在表里建索引 设置在字段上

    索引类型

    • 普通索引 index
    • 唯一索引 unique
    • 主键 primary key
    • 外键 foreign key
    • 全文索引 fulltext

    使用索引

    • 查看
    • 创建
    • 使用规则
    • 删除

    查看索引

    • desc 表名; ---> 显示结果中的Key列即是索引值
    • show index from 表名\G;
      Table: user
      Column_name: Host
      Key_name: PRIMARY //即是索引值
      Index_type: BTREE //共有三种:BTREE(二叉树),B+tree,hash
    index普通索引的使用规则
    • 一个表中可以有多个INDEX字段
    • 字段的值允许有重复,且可以赋NULL值
    • 经常把做查询条件的字段设置为INDEX字段
    • INDEX字段的KEY标志是MUL
    创建普通索引

    1.在已有表里创建index字段
    create index 索引名 on 表名(字段名);
    create index sex on t111(sex);

    2.建表时创建index字段
    create table 表名 (
    字段名列表,
    index(字段名),index(字段名)
    );

    删除普通索引

    drop index 索引名 on 表名;
    drop index sex on t24;

    primary key主键的使用规则
    • 一个表中只能有一个primary key字段
    • 对应的字段值不允许有重复,且不允许赋NULL值
    • 如果有多个字段都作为PRIMARY KEY,称为复合主键,必须一起创建。
    • 主键字段的KEY标志是PRI
    • 通常与 AUTO_INCREMENT 连用
    • 经常把表中能够唯一标识记录的字段设置为主键字段[记录编号字段]

    建表时创建主键字段

    create  table  t25( name  char(10), age   int(2), primary key(name));
    create  table  t26( name  char(10) primary  key, age   int(2));
    

    删除主键

    alter table 表名 drop primary key;

    在已有表里创建主键

    alter table 表名 add primary key(字段名);

    复合主键的使用

    多个字段一起做主键是复合主键 必须一起创建。
    字段的值不允许同时相同。

    建表时创建:
    create table t29(host char(10),db char(10),user char(10),primary key(host,db,user));

    对已有的表进行添加:
    alter table t29 add primary key(host,user,db);

    通常和aUTO_INCREMENT 连用,实现字段值的字段增长
    经常把表中能够唯一标识记录的字段设置为主键字段[记录编号字段]

    唯一索引 unique
    • 字段的值可以为Null 但不可以重复
    • 一个表里可以有多个unique字段
    • 标志 UNI

    一般使用于:姓名,身份证,考试证,护照,驾驶证

    建表时创建:

    create  table  t29(
    name  char(10),
    stu_id  char(9),
    age int(2),
    unique(stu_id)
    );
    

    在已有表里创建unique字段
    create unique index 索引名 on 表名(字段名);
    create unique index stu_id on t29(stu_id);

    外键(foreign key)

    功能:
    让当前表某个字段的值,在另一个表某个字段值的范围内选择。

    使用规则:

    • 表的存储引擎必须是innodb
    • 字段的数据类型要匹配
    • 被参考的字段必须是key 中的一种 (primary key)
    create  table  jfb(
    jfb_id   int(2) primary key auto_increment,
    name  char(10),
    pay   float(7,2)
    )engine=innodb;
    
    create table  bjb(
    bjb_id  int(2),
    name  char(10),
    foreign  key(bjb_id)  references   jfb(jfb_id) on  update  cascade   on  delete cascade
    )engine=innodb;
    

    删除外键

    show create table 表名;
    alter table 表名 drop foreign key 外键名;
    alter table bjb drop foreign key bjb_ibfk_1;

    mysql存储引擎

    概述

    存储引擎:
    表的处理器,是mysql数据库服务软件自动程序,不同处理器有不同的功能和数据存储方式。

    基本操作

    • 查看数据库服务支持哪些存储引擎:
    show  engines;
    InnoDB DEFAULT
    
    • 修改mysql数据库服务默认使用的存储引擎:
    vim  /etc/my.cnf
    [mysqld]
    default-storage-engine=myisam
    service  mysql  restart
    
    • 建表时指定表使用的存储引擎

    create table t31(name char(10))engine=memory;

    • 修改表使用的存储引擎

    alter table 表名 engine=存储引擎名;
    eg:
    alter table t31 engine=innodb;

    • 查看表使用的存储引擎
      show create table 表名;

    • 工作中使用哪种存储引擎?

      • myisam
      • innodb
    • myisam的特点

      • 独享表空间
      • t1.frm 表结构
      • t1.MYD 表记录
      • t1.MYI 表索引
    • innodb的特点

      • 支持行级锁
      • 支持外键 、 事务 、事务回滚
      • 共享表空间
      • t3.frm 表结构
      • t3.ibd 表记录+表索引

    事务

    事务:一次sql操作从开始到结束的过程。

    事务回滚:执行一次事务,只要执行过程中,任何一步执行失败,就恢复之前所有的sql操作。

    事务日志文件记录对所有inondb存储引擎的表执行过的sql命令。

    ibdata1 记录sql命令产生的数据信息

    ib_logfile0----|
    |---> 记录SQL 命令
    ib_logfile1----|

    锁机制

    锁机制是为了解决客户端的并发访问冲突问题。

    锁粒度: 表级锁 行级锁 页级锁

    锁类型:

    • 读锁 (共享锁) select * from t1;
    • 写锁 (互斥锁 排它锁)

    建表时如何决定表使用的存储引擎:

    执行写操作多的表适合使用inondb存储引擎,这样并发访问大。

    执行读操作多的表适合使用myisam存储引擎.

    实例操作(前面基本描述的具体实现)

    //进入mysql数据库
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | game_db            |
    | mysql              |
    | performance_schema |
    | test               |
    | user_db            |
    +--------------------+
    6 rows in set (0.00 sec)
    
    mysql> use user_db;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> show tables;
    +-------------------+
    | Tables_in_user_db |
    +-------------------+
    | user_list         |
    +-------------------+
    1 row in set (0.00 sec)
    
    mysql> desc user_list;
    +-----------+-------------------------------------+------+-----+---------+----------------+
    | Field     | Type                                | Null | Key | Default | Extra          |
    +-----------+-------------------------------------+------+-----+---------+----------------+
    | id        | int(10)                             | NO   | PRI | NULL    | auto_increment |
    | u_name    | char(10)                            | NO   |     | NULL    |                |
    | u_sex     | enum('boy','girl')                  | NO   |     | NULL    |                |
    | u_subject | enum('computer','chinese','engish') | NO   |     | NULL    |                |
    | u_grade   | double(6,2)                         | NO   |     | NULL    |                |
    +-----------+-------------------------------------+------+-----+---------+----------------+
    5 rows in set (0.01 sec)
    //添加字段
    mysql> alter table user_list add 
        -> mail2 varchar(25) default "stuff@wolf.cn";
    Query OK, 0 rows affected (0.91 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> select * from user_list;
    Empty set (0.00 sec)
    
    mysql> desc user_list;
    +-----------+-------------------------------------+------+-----+---------------+----------------+
    | Field     | Type                                | Null | Key | Default       | Extra          |
    +-----------+-------------------------------------+------+-----+---------------+----------------+
    | id        | int(10)                             | NO   | PRI | NULL          | auto_increment |
    | u_name    | char(10)                            | NO   |     | NULL          |                |
    | u_sex     | enum('boy','girl')                  | NO   |     | NULL          |                |
    | u_subject | enum('computer','chinese','engish') | NO   |     | NULL          |                |
    | u_grade   | double(6,2)                         | NO   |     | NULL          |                |
    | mail1     | varchar(25)                         | YES  |     | NULL          |                |
    | mail2     | varchar(25)                         | YES  |     | stuff@wolf.cn |                |
    +-----------+-------------------------------------+------+-----+---------------+----------------+
    7 rows in set (0.00 sec)
    
    mysql> alter table user_list add 
        -> u_id char(11) not null first ;
    Query OK, 0 rows affected (0.80 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc user_list;
    +-----------+-------------------------------------+------+-----+---------------+----------------+
    | Field     | Type                                | Null | Key | Default       | Extra          |
    +-----------+-------------------------------------+------+-----+---------------+----------------+
    | u_id      | char(11)                            | NO   |     | NULL          |                |
    | id        | int(10)                             | NO   | PRI | NULL          | auto_increment |
    | u_name    | char(10)                            | NO   |     | NULL          |                |
    | u_sex     | enum('boy','girl')                  | NO   |     | NULL          |                |
    | u_subject | enum('computer','chinese','engish') | NO   |     | NULL          |                |
    | u_grade   | double(6,2)                         | NO   |     | NULL          |                |
    | mail1     | varchar(25)                         | YES  |     | NULL          |                |
    | mail2     | varchar(25)                         | YES  |     | stuff@wolf.cn |                |
    +-----------+-------------------------------------+------+-----+---------------+----------------+
    8 rows in set (0.00 sec)
    mysql> insert into user_list(u_id,u_name,u_sex,u_subject,u_grade,mail1) values( 1,"tom","boy","computer","200.00","123456@aliyun.com");
    Query OK, 1 row affected (0.07 sec)
    
    mysql> insert into user_list(u_id,u_name,u_sex,u_subject,u_grade,mail1) values( 2,"jerry","boy","chinese","300.00","654321@aliyun.com");
    Query OK, 1 row affected (0.03 sec)
    
    mysql> insert into user_list(u_id,u_name,u_sex,u_subject,u_grade,mail1) values( 3,"cool","boy","chinese","240.00","654321@aliyun.com");
    Query OK, 1 row affected (0.15 sec)
    
    mysql> select * from user_list;
    +------+----+--------+-------+-----------+---------+-------------------+---------------+
    | u_id | id | u_name | u_sex | u_subject | u_grade | mail1             | mail2         |
    +------+----+--------+-------+-----------+---------+-------------------+---------------+
    | 1    |  1 | tom    | boy   | computer  |  200.00 | 123456@aliyun.com | stuff@wolf.cn |
    | 2    |  2 | jerry  | boy   | chinese   |  300.00 | 654321@aliyun.com | stuff@wolf.cn |
    | 3    |  3 | cool   | boy   | chinese   |  240.00 | 654321@aliyun.com | stuff@wolf.cn |
    +------+----+--------+-------+-----------+---------+-------------------+---------------+
    3 rows in set (0.00 sec)
    //删除字段
    mysql> alter table user_list drop  mail1,drop  u_id;
    Query OK, 0 rows affected (0.78 sec)
    mysql> alter table user_list add homeaddr char(50);
    Query OK, 0 rows affected (0.66 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    //改变字段名
    mysql> alter table user_list  change mail2 mailaddr varchar(25) default "userinfo@aliyun.com"
        -> ;
    mysql> alter table user_list rename user_info;
    Query OK, 0 rows affected (0.20 sec)
    
    mysql> show tables;
    +-------------------+
    | Tables_in_user_db |
    +-------------------+
    | user_info         |
    +-------------------+
    1 row in set (0.00 sec)
    mysql> modify u_grade double(7,2) not null ;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'modify u_grade double(7,2) not null' at line 1
    mysql> alter table user_info  modify u_grade double(7,2) not null ;
    Query OK, 0 rows affected (0.09 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    //修改字段参数
    mysql> alter table user_info modify u_grade float(3,2) not null;
    ERROR 1264 (22003): Out of range value for column 'u_grade' at row 1
    mysql> select u_name,u_grade from user_info;
    +--------+---------+
    | u_name | u_grade |
    +--------+---------+
    | tom    |  200.00 |
    | jerry  |  300.00 |
    | cool   |  240.00 |
    +--------+---------+
    3 rows in set (0.00 sec)
    mysql> alter table user_info add tel char(15) not null,add phone char(11) ;
    Query OK, 0 rows affected (0.73 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    mysql> insert into user_info(u_name,u_sex,u_subject,u_grade,mailaddr,homeaddr,tel,phone) values( "uzi","boy","computer","3000.00",NULL,NULL,"123456789",NULL);
    mysql> select * from user_info;
    +----+--------+-------+-----------+---------+---------------+----------+-----------+-------+
    | id | u_name | u_sex | u_subject | u_grade | mailaddr      | homeaddr | tel       | phone |
    +----+--------+-------+-----------+---------+---------------+----------+-----------+-------+
    |  1 | tom    | boy   | computer  |  200.00 | stuff@wolf.cn | NULL     |           | NULL  |
    |  2 | jerry  | boy   | chinese   |  300.00 | stuff@wolf.cn | NULL     |           | NULL  |
    |  3 | cool   | boy   | chinese   |  240.00 | stuff@wolf.cn | NULL     |           | NULL  |
    |  4 | uzi    | boy   | computer  | 3000.00 | NULL          | NULL     | 123456789 | NULL  |
    +----+--------+-------+-----------+---------+---------------+----------+-----------+-------+
    4 rows in set (0.00 sec)
    
    mysql> desc user_info;
    +-----------+-------------------------------------+------+-----+---------------------+----------------+
    | Field     | Type                                | Null | Key | Default             | Extra          |
    +-----------+-------------------------------------+------+-----+---------------------+----------------+
    | id        | int(10)                             | NO   | PRI | NULL                | auto_increment |
    | u_name    | char(10)                            | NO   |     | NULL                |                |
    | u_sex     | enum('boy','girl')                  | NO   |     | NULL                |                |
    | u_subject | enum('computer','chinese','engish') | NO   |     | NULL                |                |
    | u_grade   | double(7,2)                         | NO   |     | NULL                |                |
    | mailaddr  | varchar(25)                         | YES  |     | userinfo@aliyun.com |                |
    | homeaddr  | char(50)                            | YES  |     | NULL                |                |
    | tel       | char(15)                            | NO   |     | NULL                |                |
    | phone     | char(11)                            | YES  |     | NULL                |                |
    +-----------+-------------------------------------+------+-----+---------------------+----------------+
    9 rows in set (0.00 sec)
    
    mysql> alter table user_info modify phone char(11) not null;
    ERROR 1138 (22004): Invalid use of NULL value
    mysql> alter table user_info modify mailaddr varchar(25)  not null;
    ERROR 1138 (22004): Invalid use of NULL value
    
    //index索引操作实例
    
    mysql> create index u_name on user_info(u_name);
    Query OK, 0 rows affected (0.61 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    mysql> create table tab1 (
        -> id char(10),
        -> name char(15),
        -> age int,
        -> index(name),
        -> index(age)
        -> );
    Query OK, 0 rows affected (0.86 sec)
    
    mysql> desc tab1;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | id    | char(10) | YES  |     | NULL    |       |
    | name  | char(15) | YES  | MUL | NULL    |       |
    | age   | int(11)  | YES  | MUL | NULL    |       |
    +-------+----------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    mysql> show index from tab1;
    +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
    | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
    +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
    | tab1  |          1 | name     |            1 | name        | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |
    | tab1  |          1 | age      |            1 | age         | A         |           0 |     NULL | NULL   | YES  | BTREE      |         |               |
    +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
    2 rows in set (0.00 sec)
    
    mysql> show index from tab1 \G;
    *************************** 1. row ***************************
            Table: tab1
       Non_unique: 1
         Key_name: name
     Seq_in_index: 1
      Column_name: name
        Collation: A
      Cardinality: 0
         Sub_part: NULL
           Packed: NULL
             Null: YES
       Index_type: BTREE
          Comment: 
    Index_comment: 
    *************************** 2. row ***************************
            Table: tab1
       Non_unique: 1
         Key_name: age
     Seq_in_index: 1
      Column_name: age
        Collation: A
      Cardinality: 0
         Sub_part: NULL
           Packed: NULL
             Null: YES
       Index_type: BTREE
          Comment: 
    Index_comment: 
    2 rows in set (0.00 sec)
    
    ERROR: 
    No query specified
    
    mysql> drop index age on tab1;
    Query OK, 0 rows affected (0.19 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc tab1;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | id    | char(10) | YES  |     | NULL    |       |
    | name  | char(15) | YES  | MUL | NULL    |       |
    | age   | int(11)  | YES  |     | NULL    |       |
    +-------+----------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    //主键 primary key操作实例
    
    mysql> create table tab2 (id int primary key ,name char(10));
    Query OK, 0 rows affected (0.67 sec)
    mysql> desc tab2;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | id    | int(11)  | NO   | PRI | NULL    |       |
    | name  | char(10) | YES  |     | NULL    |       |
    +-------+----------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    mysql> create table tab3 (id int(2), name char(10), primary key(id));
    Query OK, 0 rows affected (0.79 sec)
    mysql> desc tab3;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | id    | int(2)   | NO   | PRI | 0       |       |
    | name  | char(10) | YES  |     | NULL    |       |
    +-------+----------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    
    mysql> alter table tab3 drop primary key;
    Query OK, 0 rows affected (1.10 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc tab3;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | id    | int(2)   | NO   |     | 0       |       |
    | name  | char(10) | YES  |     | NULL    |       |
    +-------+----------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    mysql> create table tab4 (
        -> cip char(16),
        -> port int(2),
        -> status enum("deny","allow") default "deny"
        -> );
    Query OK, 0 rows affected (0.65 sec)
    
    mysql> desc tab4
        -> ;
    +--------+----------------------+------+-----+---------+-------+
    | Field  | Type                 | Null | Key | Default | Extra |
    +--------+----------------------+------+-----+---------+-------+
    | cip    | char(16)             | YES  |     | NULL    |       |
    | port   | int(2)               | YES  |     | NULL    |       |
    | status | enum('deny','allow') | YES  |     | deny    |       |
    +--------+----------------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql> alter table tab4 add primary key(cip,port);
    Query OK, 0 rows affected (1.05 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc tab4;
    +--------+----------------------+------+-----+---------+-------+
    | Field  | Type                 | Null | Key | Default | Extra |
    +--------+----------------------+------+-----+---------+-------+
    | cip    | char(16)             | NO   | PRI |         |       |
    | port   | int(2)               | NO   | PRI | 0       |       |
    | status | enum('deny','allow') | YES  |     | deny    |       |
    +--------+----------------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql> insert into tab4 values("1.1.1.1",22,"deny");
    Query OK, 1 row affected (0.05 sec)
    
    mysql> insert into tab4 values("1.1.1.1",25,"allow");
    Query OK, 1 row affected (0.07 sec)
    
    mysql> insert into tab4 values("1.1.1.1",22,"allow");
    ERROR 1062 (23000): Duplicate entry '1.1.1.1-22' for key 'PRIMARY'
    mysql> insert into tab4 values("2.1.1.1",22,"deny");
    Query OK, 1 row affected (0.04 sec)
    
    mysql> select * from tab4;
    +---------+------+--------+
    | cip     | port | status |
    +---------+------+--------+
    | 1.1.1.1 |   22 | deny   |
    | 1.1.1.1 |   25 | allow  |
    | 2.1.1.1 |   22 | deny   |
    +---------+------+--------+
    3 rows in set (0.00 sec)
    //删除tab4表的主键
    mysql> alter table tab4 drop primary key;
    Query OK, 3 rows affected (1.16 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    //当没有主键约束后,相同数据可以添加成功
    mysql> insert into tab4 values("1.1.1.1",22,"allow");
    Query OK, 1 row affected (0.07 sec)
    mysql> insert into tab4 values("1.1.1.1",25,"allow");
    Query OK, 1 row affected (0.04 sec)
    //重新添加主键,由于表中已经存在不符合约束条件的数据,所以无法添加主键成功
    mysql> alter table tab4 add primary key(cip,port);
    ERROR 1062 (23000): Duplicate entry '1.1.1.1-22' for key 'PRIMARY'
    //删除不符合数据
    mysql> delete from tab4 where port=22;
    Query OK, 3 rows affected (0.04 sec)
    
    mysql> alter table tab4 add primary key(cip,port);
    ERROR 1062 (23000): Duplicate entry '1.1.1.1-25' for key 'PRIMARY'
    mysql> delete from tab4 where port=25;
    Query OK, 2 rows affected (0.08 sec)
    //主键添加成功
    mysql> alter table tab4 add primary key(cip,port);
    Query OK, 0 rows affected (0.80 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    //可以直接在创建表时就指定复合主键,主键个数可以多个,语法格式不变
    mysql> create table tab5 (u_id int ,name char(10),other char(40),primary key(u_id,name));
    Query OK, 0 rows affected (0.63 sec)
    
    mysql> desc tab5;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | u_id  | int(11)  | NO   | PRI | 0       |       |
    | name  | char(10) | NO   | PRI |         |       |
    | other | char(40) | YES  |     | NULL    |       |
    +-------+----------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    //自增 auto_increment 只能修饰主键,必须是数值类型,最好是整形
    mysql> create table tab6 (id int(2) zerofill primary key auto_increment,
        -> name char(10) not null,
        -> age tinyint(2) not null default 18
        -> , sex  enum("boy","girl") default "boy",
        -> other char(50));
    Query OK, 0 rows affected (0.65 sec)
    
    mysql> desc tab6;
    +-------+--------------------------+------+-----+---------+----------------+
    | Field | Type                     | Null | Key | Default | Extra          |
    +-------+--------------------------+------+-----+---------+----------------+
    | id    | int(2) unsigned zerofill | NO   | PRI | NULL    | auto_increment |
    | name  | char(10)                 | NO   |     | NULL    |                |
    | age   | tinyint(2)               | NO   |     | 18      |                |
    | sex   | enum('boy','girl')       | YES  |     | boy     |                |
    | other | char(50)                 | YES  |     | NULL    |                |
    +-------+--------------------------+------+-----+---------+----------------+
    5 rows in set (0.00 sec)
    //插入数据
    mysql> insert into tab6(name,age,sex,other) values("tom",12,"boy","This is Tom");
    Query OK, 1 row affected (0.02 sec)
    
    mysql> insert into tab6(name,age,sex,other) values("jerry",14,"boy","This is Jerry");
    Query OK, 1 row affected (0.05 sec)
    
    mysql> insert into tab6(name,age,sex,other) values("natasha",17,"girl","This is natasha.");
    Query OK, 1 row affected (0.10 sec)
    
    mysql> select * from tab6;
    +----+---------+-----+------+------------------+
    | id | name    | age | sex  | other            |
    +----+---------+-----+------+------------------+
    | 01 | tom     |  12 | boy  | This is Tom      |
    | 02 | jerry   |  14 | boy  | This is Jerry    |
    | 03 | natasha |  17 | girl | This is natasha. |
    +----+---------+-----+------+------------------+
    3 rows in set (0.00 sec)
    
    mysql> insert into tab6 values (7,"cool",22,"boy","This is cool");
    Query OK, 1 row affected (0.05 sec)
    //会根据表中最大的数字进行自增计算
    mysql> insert into tab6(name,age,sex,other) values("uzi",19,"boy","This is uzi.");
    Query OK, 1 row affected (0.05 sec)
    
    mysql> select * from tab6;
    +----+---------+-----+------+------------------+
    | id | name    | age | sex  | other            |
    +----+---------+-----+------+------------------+
    | 01 | tom     |  12 | boy  | This is Tom      |
    | 02 | jerry   |  14 | boy  | This is Jerry    |
    | 03 | natasha |  17 | girl | This is natasha. |
    | 07 | cool    |  22 | boy  | This is cool     |
    | 08 | uzi     |  19 | boy  | This is uzi.     |
    +----+---------+-----+------+------------------+
    5 rows in set (0.00 sec)
    //删除所有数据后,再次添加新值
    mysql> delete  from tab6;
    Query OK, 5 rows affected (0.07 sec)
    
    mysql> select * from tab6;
    Empty set (0.00 sec)
    
    mysql> insert into tab6(name,age,sex,other) values("uzi",19,"boy","This is uzi.");
    Query OK, 1 row affected (0.06 sec)
    
    mysql> insert into tab6(name,age,sex,other) values("uzi",19,"boy","This is uzi.");
    Query OK, 1 row affected (0.03 sec)
    //内部有计数器,会按照上次结果继续增加,这样可以保证数据不会出现重复
    mysql> select * from tab6;
    +----+------+-----+------+--------------+
    | id | name | age | sex  | other        |
    +----+------+-----+------+--------------+
    | 09 | uzi  |  19 | boy  | This is uzi. |
    | 10 | uzi  |  19 | boy  | This is uzi. |
    +----+------+-----+------+--------------+
    2 rows in set (0.00 sec)
    
    //unique约束实例
    
    //创建表时,unique参数需要分开创建
    mysql> create table tab7 (id int(2) zerofill primary key auto_increment,
        -> per_id char(9),
        -> car_id char(7),
        -> unique(per_id,car_id)
        -> );
    Query OK, 0 rows affected (0.85 sec)
    
    mysql> desc tab7;
    +--------+--------------------------+------+-----+---------+----------------+
    | Field  | Type                     | Null | Key | Default | Extra          |
    +--------+--------------------------+------+-----+---------+----------------+
    | id     | int(2) unsigned zerofill | NO   | PRI | NULL    | auto_increment |
    | per_id | char(9)                  | YES  | MUL | NULL    |                |
    | car_id | char(7)                  | YES  |     | NULL    |                |
    +--------+--------------------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)
    //删除表,重新创建表
    mysql> drop table tab7;
    Query OK, 0 rows affected (0.23 sec)
    
    mysql> create table tab7 (id int(2) zerofill primary key auto_increment, per_id char(9), car_id char(7), unique(per_id),unique(car_id) );
    Query OK, 0 rows affected (0.88 sec)
    
    mysql> desc tab7;
    +--------+--------------------------+------+-----+---------+----------------+
    | Field  | Type                     | Null | Key | Default | Extra          |
    +--------+--------------------------+------+-----+---------+----------------+
    | id     | int(2) unsigned zerofill | NO   | PRI | NULL    | auto_increment |
    | per_id | char(9)                  | YES  | UNI | NULL    |                |
    | car_id | char(7)                  | YES  | UNI | NULL    |                |
    +--------+--------------------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)
    
    mysql> insert into tab7(per_id,car_id) values("123456789","1234567");
    Query OK, 1 row affected (0.05 sec)
    
    mysql> insert into tab7(per_id,car_id) values(NULL,"1234567");
    ERROR 1062 (23000): Duplicate entry '1234567' for key 'car_id'
    mysql> insert into tab7(per_id,car_id) values(NULL,"7654321");
    Query OK, 1 row affected (0.05 sec)
    
    mysql> insert into tab7(per_id,car_id) values(NULL,NULL);
    Query OK, 1 row affected (0.04 sec)
    
    mysql> select * from tab7;
    +----+-----------+---------+
    | id | per_id    | car_id  |
    +----+-----------+---------+
    | 01 | 123456789 | 1234567 |
    | 03 | NULL      | 7654321 |
    | 04 | NULL      | NULL    |
    +----+-----------+---------+
    3 rows in set (0.00 sec)
    
    mysql> insert into tab7(per_id,car_id) values("123456789","1234567");
    Query OK, 1 row affected (0.05 sec)
    
    mysql> insert into tab7(per_id,car_id) values(NULL,"1234567");
    ERROR 1062 (23000): Duplicate entry '1234567' for key 'car_id'
    mysql> insert into tab7(per_id,car_id) values(NULL,"7654321");
    Query OK, 1 row affected (0.05 sec)
    
    mysql> insert into tab7(per_id,car_id) values(NULL,NULL);
    Query OK, 1 row affected (0.04 sec)
    
    mysql> select * from tab7;
    +----+-----------+---------+
    | id | per_id    | car_id  |
    +----+-----------+---------+
    | 01 | 123456789 | 1234567 |
    | 03 | NULL      | 7654321 |
    | 04 | NULL      | NULL    |
    +----+-----------+---------+
    3 rows in set (0.00 sec)
    
    mysql> insert into tab7(per_id,car_id) values(NULL,NULL);
    Query OK, 1 row affected (0.04 sec)
    
    mysql> insert into tab7(per_id,car_id) values("012345678","1234567");
    ERROR 1062 (23000): Duplicate entry '1234567' for key 'car_id'
    mysql> alter table tab7 drop index car_id;
    Query OK, 0 rows affected (0.21 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> insert into tab7(per_id,car_id) values("012345678","1234567");
    Query OK, 1 row affected (0.05 sec)
    
    mysql> insert into tab7(per_id,car_id) values("012345678","1234567");
    
    mysql> create unique index car_id  on tab7(car_id);
    ERROR 1062 (23000): Duplicate entry '1234567' for key 'car_id'
    mysql> desc tab7;
    +--------+--------------------------+------+-----+---------+----------------+
    | Field  | Type                     | Null | Key | Default | Extra          |
    +--------+--------------------------+------+-----+---------+----------------+
    | id     | int(2) unsigned zerofill | NO   | PRI | NULL    | auto_increment |
    | per_id | char(9)                  | YES  | UNI | NULL    |                |
    | car_id | char(7)                  | YES  |     | NULL    |                |
    +--------+--------------------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)
    
    mysql> select * from tab7;
    +----+-----------+---------+
    | id | per_id    | car_id  |
    +----+-----------+---------+
    | 01 | 123456789 | 1234567 |
    | 03 | NULL      | 7654321 |
    | 04 | NULL      | NULL    |
    | 05 | NULL      | NULL    |
    | 07 | 012345678 | 1234567 |
    +----+-----------+---------+
    5 rows in set (0.00 sec)
    
    mysql> delete from tab7 where per_id=012345678;
    Query OK, 1 row affected (0.05 sec)
    
    mysql> create unique index car_id  on tab7(car_id);
    Query OK, 0 rows affected (0.73 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc tab7;
    +--------+--------------------------+------+-----+---------+----------------+
    | Field  | Type                     | Null | Key | Default | Extra          |
    +--------+--------------------------+------+-----+---------+----------------+
    | id     | int(2) unsigned zerofill | NO   | PRI | NULL    | auto_increment |
    | per_id | char(9)                  | YES  | UNI | NULL    |                |
    | car_id | char(7)                  | YES  | UNI | NULL    |                |
    +--------+--------------------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)
    
    //外键操作实例
    
    //由于使用的是MySQL5.6版本,默认的存储引擎即是:innodb
    //该默认的存储引擎根据数据库的版本有所不同。
    //创建员工表
    mysql> create table work_tab (w_id int(4) zerofill primary key auto_increment,
        -> name char(10) not null,
        -> sex enum("man","woman") default "man",
        -> detials char(40) default ""
        -> );
    Query OK, 0 rows affected (0.06 sec)
    
    mysql> desc work_tab;
    +---------+--------------------------+------+-----+---------+----------------+
    | Field   | Type                     | Null | Key | Default | Extra          |
    +---------+--------------------------+------+-----+---------+----------------+
    | w_id    | int(4) unsigned zerofill | NO   | PRI | NULL    | auto_increment |
    | name    | char(10)                 | NO   |     | NULL    |                |
    | sex     | enum('man','woman')      | YES  |     | man     |                |
    | detials | char(40)                 | YES  |     |         |                |
    +---------+--------------------------+------+-----+---------+----------------+
    4 rows in set (0.00 sec)
    //插入测试数据
    mysql> insert into work_tab(name,sex,detials) values("tom","man","This is tom.");
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into work_tab(name,sex,detials) values("jack","man","This is jack.");
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into work_tab(name,sex,detials) values("natasha","woman","This is natasha.");
    Query OK, 1 row affected (0.00 sec)
    
    /*
    创建工资表,将该表的p_id与员工表的w_id进行外键绑定,即用来标识唯一用户(员工)
    mysql>  
    */
    mysql> create table pay_tab (p_id int(4) zerofill , name char(10) not null ,
        -> pays double(8,2) not null, others char(30) default "" ,
        -> foreign key(p_id) references work_tab(w_id) on update cascade on delete cascade)
        -> engine=innodb;
    
    mysql> desc pay_tab;
    +--------+--------------------------+------+-----+---------+-------+
    | Field  | Type                     | Null | Key | Default | Extra |
    +--------+--------------------------+------+-----+---------+-------+
    | p_id   | int(4) unsigned zerofill | YES  | MUL | NULL    |       |
    | name   | char(10)                 | NO   |     | NULL    |       |
    | pays   | double(8,2)              | NO   |     | NULL    |       |
    | others | char(30)                 | YES  |     |         |       |
    +--------+--------------------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)
    //查看建表过程,验证创建表的结果是否正确
    mysql> show create table pay_tab\G;
    *************************** 1. row ***************************
           Table: pay_tab
    Create Table: CREATE TABLE `pay_tab` (
      `p_id` int(4) unsigned zerofill DEFAULT NULL,
      `name` char(10) NOT NULL,
      `pays` double(8,2) NOT NULL,
      `others` char(30) DEFAULT '',
      KEY `p_id` (`p_id`),
      CONSTRAINT `pay_tab_ibfk_1` FOREIGN KEY (`p_id`) REFERENCES `work_tab` (`w_id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
    1 row in set (0.00 sec)
    
    ERROR: 
    No query specified
    
    mysql> select * from work_tab;
    +------+---------+-------+------------------+
    | w_id | name    | sex   | detials          |
    +------+---------+-------+------------------+
    | 0001 | tom     | man   | This is tom.     |
    | 0002 | jack    | man   | This is jack.    |
    | 0003 | natasha | woman | This is natasha. |
    +------+---------+-------+------------------+
    3 rows in set (0.00 sec)
    
    //向工资表插入在员工表存在的数据,可以插入
    mysql> insert into pay_tab values(2,"jack",9000.00,"jack pays");
    Query OK, 1 row affected (0.06 sec)
    
    //向工资表插入在员工表不存在的数据,受外键约束无法插入
    mysql> insert into pay_tab values(4,"bob",8000.00,"jack pays");
    ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`user_db`.`pay_tab`, CONSTRAINT `pay_tab_ibfk_1` FOREIGN KEY (`p_id`) REFERENCES `work_tab` (`w_id`) ON DELETE CASCADE ON UPDATE CASCADE)
    
    //由于目前进行的约束仅仅是id,所以当向工资表插入数据时,name不一致的情况下,依旧可以插入
    //一般我们在这里编写的SQL指令,一般都是由开发进行操作的,在开发操作时,一般都是去员工表查询对应的用户,然后将查询的结果和新值进行添加操作,这样一般是不会出现该错误
    mysql> insert into pay_tab values(3,"wolf",10000.00,"wolf or natasha??");
    Query OK, 1 row affected (0.08 sec)
    
    //删除受约束表的记录时,可以正常操作,并且不会对员工表产生影响
    mysql> delete from pay_tab where name="jack";
    Query OK, 1 row affected (0.05 sec)
    
    mysql> select * from  pay_tab;
    +------+------+----------+-------------------+
    | p_id | name | pays     | others            |
    +------+------+----------+-------------------+
    | 0003 | wolf | 10000.00 | wolf or natasha?? |
    +------+------+----------+-------------------+
    1 row in set (0.00 sec)
    
    mysql> insert into pay_tab values("tom",6000.00,"tom pays");
    ERROR 1136 (21S01): Column count doesn't match value count at row 1
    mysql> insert into pay_tab values(1,"tom",6000.00,"tom pays");
    Query OK, 1 row affected (0.06 sec)
    mysql> select * from work_tab;
    +------+---------+-------+------------------+
    | w_id | name    | sex   | detials          |
    +------+---------+-------+------------------+
    | 0001 | tom     | man   | This is tom.     |
    | 0002 | jack    | man   | This is jack.    |
    | 0003 | natasha | woman | This is natasha. |
    +------+---------+-------+------------------+
    3 rows in set (0.00 sec)
    
    mysql> select * from pay_tab;
    +------+------+----------+-------------------+
    | p_id | name | pays     | others            |
    +------+------+----------+-------------------+
    | 0003 | wolf | 10000.00 | wolf or natasha?? |
    | 0001 | tom  |  6000.00 | tom pays          |
    +------+------+----------+-------------------+
    2 rows in set (0.00 sec)
    
    //在定义外键取值范围的表(work_tab员工表)删除数据时,对应的受外键约束的表(工资表)的对应记录也会被删除
    mysql> delete from work_tab where name="tom";
    Query OK, 1 row affected (0.04 sec)
    
    mysql> select * from pay_tab;
    +------+------+----------+-------------------+
    | p_id | name | pays     | others            |
    +------+------+----------+-------------------+
    | 0003 | wolf | 10000.00 | wolf or natasha?? |
    +------+------+----------+-------------------+
    1 row in set (0.00 sec)
    
    mysql> select * from work_tab;
    +------+---------+-------+------------------+
    | w_id | name    | sex   | detials          |
    +------+---------+-------+------------------+
    | 0002 | jack    | man   | This is jack.    |
    | 0003 | natasha | woman | This is natasha. |
    +------+---------+-------+------------------+
    2 rows in set (0.00 sec)
    
    //在受外键约束的表中(pay_tab工资表),删除不受外键约束的字段时,可以正常删除
    mysql> alter table pay_tab drop name;
    Query OK, 0 rows affected (1.06 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    //删除受约束的字段,无法成功,会被告知外键约束
    mysql> alter table pay_tab drop p_id;
    ERROR 1553 (HY000): Cannot drop index 'p_id': needed in a foreign key constraint
    
    //当删除外键约束的定义或直接删除外键字段,即可删除员工表或员工表内对应的记录
    mysql> alter table pay_tab drop foreign key pay_tab_ibfk_1;
    Query OK, 0 rows affected (0.16 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    //mysql> drop table pay_tab;
    
    mysql> drop table work_tab;
    Query OK, 0 rows affected (0.28 sec)
    
    //存储引擎操作实例
    
    //default所在的行即是当前默认的存储引擎,Support表示当前可以使用,为NO即表示不可使用,
    //Transactions 表示存储引擎不支持事务,Comment表示描述信息
    //查看当前MySQL支持的数据引擎
    mysql> show engines;
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
    | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
    | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
    | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
    | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
    | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
    | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
    | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
    | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    9 rows in set (0.00 sec)
    
    //不同的存储引擎生成的表文件也不同
    .frm ---> 存放表结构
    
    //指定不同的数据引擎创建数据表
    mysql> create table tab8(id int)engine=MyISAM;
    Query OK, 0 rows affected (0.11 sec)
    
    mysql> create table tab9(id int)engine=MEMORY;
    Query OK, 0 rows affected (0.11 sec)
    
    mysql> create table tab9(id int)engine=InnoDB;
    ERROR 1050 (42S01): Table 'tab9' already exists
    mysql> create table tab10(id int)engine=InnoDB;
    Query OK, 0 rows affected (0.56 sec)
    
    //退出mysql,进入文件目录,查看对应文件
    [root@mysql user_db]# pwd
    /var/lib/mysql/user_db
    [root@mysql user_db]# ls tab8*
    tab8.frm  tab8.MYD  tab8.MYI
    [root@mysql user_db]# ls tab9*
    tab9.frm            //临时表,存放到内存中,当系统将内存收回,即停止mysql服务时,该表数据丢失。
    [root@mysql user_db]# ls tab10*
    tab10.frm  tab10.ibd        //共享表空间
    
    //查看建表过程
    mysql> show create tab9;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tab9' at line 1
    mysql> show create table tab9;
    +-------+------------------------------------------------------------------------------------------+
    | Table | Create Table                                                                             |
    +-------+------------------------------------------------------------------------------------------+
    | tab9  | CREATE TABLE `tab9` (
      `id` int(11) DEFAULT NULL
    ) ENGINE=MEMORY DEFAULT CHARSET=latin1 |
    +-------+------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    mysql> alter table tab9 engine=innodb;
    Query OK, 0 rows affected (0.64 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> show create table tab9;
    +-------+------------------------------------------------------------------------------------------+
    | Table | Create Table                                                                             |
    +-------+------------------------------------------------------------------------------------------+
    | tab9  | CREATE TABLE `tab9` (
      `id` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
    +-------+------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    //修改mysql默认的数据引擎
    [root@mysql user_db]# vim /etc/my.cnf
    [mysqld]
    default-storage-engine=myisam
    [root@mysql user_db]# service mysql restart
    Shutting down MySQL.. SUCCESS! 
    Starting MySQL.. SUCCESS! 
    [root@mysql user_db]# mysql -uroot -p123456 user_db
    ……
    //DEFAULT所在的位置已经发生改变  
    mysql> show engines;
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
    | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
    | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
    | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
    | MyISAM             | DEFAULT | MyISAM storage engine                                          | NO           | NO   | NO         |
    | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
    | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
    | InnoDB             | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
    | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
    +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    9 rows in set (0.00 sec)
    
    
    //数据库的锁,是为了进行并发操作时,操作冲突的情况。
    //锁有读锁和写锁。
    
    

    相关文章

      网友评论

        本文标题:基于Linux的MySQL操作实例(修改表结构,MySQL索引,

        本文链接:https://www.haomeiwen.com/subject/cadvbttx.html